1 |
- {"version":3,"sources":["webpack://ivprogCore/webpack/universalModuleDefinition","webpack://ivprogCore/webpack/bootstrap","webpack://ivprogCore/./grammar/en/ivprog.g4","webpack://ivprogCore/./grammar/en/langFunctions.js","webpack://ivprogCore/./grammar/en/langLibs.js","webpack://ivprogCore/./grammar/es/ivprog.g4","webpack://ivprogCore/./grammar/es/langFunctions.js","webpack://ivprogCore/./grammar/es/langLibs.js","webpack://ivprogCore/./grammar/index.js","webpack://ivprogCore/./grammar/pt/ivprog.g4","webpack://ivprogCore/./grammar/pt/langFunctions.js","webpack://ivprogCore/./grammar/pt/langLibs.js","webpack://ivprogCore/./i18n/en/index.js","webpack://ivprogCore/./i18n/es/index.js","webpack://ivprogCore/./i18n/index.js","webpack://ivprogCore/./i18n/pt/index.js","webpack://ivprogCore/./js/Sortable.js","webpack://ivprogCore/./js/assessment/ivprogAssessment.js","webpack://ivprogCore/./js/ast/commands/arrayAssign.js","webpack://ivprogCore/./js/ast/commands/arrayDeclaration.js","webpack://ivprogCore/./js/ast/commands/assign.js","webpack://ivprogCore/./js/ast/commands/break.js","webpack://ivprogCore/./js/ast/commands/case.js","webpack://ivprogCore/./js/ast/commands/command.js","webpack://ivprogCore/./js/ast/commands/commandBlock.js","webpack://ivprogCore/./js/ast/commands/declaration.js","webpack://ivprogCore/./js/ast/commands/doWhile.js","webpack://ivprogCore/./js/ast/commands/for.js","webpack://ivprogCore/./js/ast/commands/formalParameter.js","webpack://ivprogCore/./js/ast/commands/function.js","webpack://ivprogCore/./js/ast/commands/ifThenElse.js","webpack://ivprogCore/./js/ast/commands/index.js","webpack://ivprogCore/./js/ast/commands/return.js","webpack://ivprogCore/./js/ast/commands/switch.js","webpack://ivprogCore/./js/ast/commands/sysCall.js","webpack://ivprogCore/./js/ast/commands/while.js","webpack://ivprogCore/./js/ast/error/syntaxError.js","webpack://ivprogCore/./js/ast/error/syntaxErrorFactory.js","webpack://ivprogCore/./js/ast/expressions/arrayAccess.js","webpack://ivprogCore/./js/ast/expressions/arrayLiteral.js","webpack://ivprogCore/./js/ast/expressions/boolLiteral.js","webpack://ivprogCore/./js/ast/expressions/expression.js","webpack://ivprogCore/./js/ast/expressions/functionCall.js","webpack://ivprogCore/./js/ast/expressions/index.js","webpack://ivprogCore/./js/ast/expressions/infixApp.js","webpack://ivprogCore/./js/ast/expressions/intLiteral.js","webpack://ivprogCore/./js/ast/expressions/literal.js","webpack://ivprogCore/./js/ast/expressions/realLiteral.js","webpack://ivprogCore/./js/ast/expressions/stringLiteral.js","webpack://ivprogCore/./js/ast/expressions/unaryApp.js","webpack://ivprogCore/./js/ast/expressions/variableLiteral.js","webpack://ivprogCore/./js/ast/ivprogParser.js","webpack://ivprogCore/./js/ast/operators.js","webpack://ivprogCore/./js/ast/sourceInfo.js","webpack://ivprogCore/./js/io/domConsole.js","webpack://ivprogCore/./js/io/input.js","webpack://ivprogCore/./js/io/output.js","webpack://ivprogCore/./js/main.js","webpack://ivprogCore/./js/processor/compatibilityTable.js","webpack://ivprogCore/./js/processor/context.js","webpack://ivprogCore/./js/processor/definedFunctions.js","webpack://ivprogCore/./js/processor/error/processorErrorFactory.js","webpack://ivprogCore/./js/processor/error/runtimeError.js","webpack://ivprogCore/./js/processor/error/semanticError.js","webpack://ivprogCore/./js/processor/ivprogProcessor.js","webpack://ivprogCore/./js/processor/lib/arrays.js","webpack://ivprogCore/./js/processor/lib/io.js","webpack://ivprogCore/./js/processor/lib/lang.js","webpack://ivprogCore/./js/processor/lib/math.js","webpack://ivprogCore/./js/processor/lib/strings.js","webpack://ivprogCore/./js/processor/modes.js","webpack://ivprogCore/./js/processor/semantic/semanticAnalyser.js","webpack://ivprogCore/./js/processor/store/store.js","webpack://ivprogCore/./js/processor/store/storeObject.js","webpack://ivprogCore/./js/processor/store/storeObjectArray.js","webpack://ivprogCore/./js/processor/store/storeObjectArrayAddress.js","webpack://ivprogCore/./js/processor/store/storeObjectArrayAddressRef.js","webpack://ivprogCore/./js/processor/store/storeObjectRef.js","webpack://ivprogCore/./js/runner.js","webpack://ivprogCore/./js/semantic/semantic.min.js","webpack://ivprogCore/./js/services/i18nHelper.js","webpack://ivprogCore/./js/services/languageService.js","webpack://ivprogCore/./js/services/localizedStringsService.js","webpack://ivprogCore/./js/typeSystem/baseTypes.js","webpack://ivprogCore/./js/typeSystem/compoundType.js","webpack://ivprogCore/./js/typeSystem/multiType.js","webpack://ivprogCore/./js/typeSystem/parsers.js","webpack://ivprogCore/./js/typeSystem/type.js","webpack://ivprogCore/./js/typeSystem/types.js","webpack://ivprogCore/./js/util/config.js","webpack://ivprogCore/./js/util/inputTest.js","webpack://ivprogCore/./js/util/outputTest.js","webpack://ivprogCore/./js/visualUI/algorithm.js","webpack://ivprogCore/./js/visualUI/code_generator.js","webpack://ivprogCore/./js/visualUI/commands.js","webpack://ivprogCore/./js/visualUI/commands/attribution.js","webpack://ivprogCore/./js/visualUI/commands/break.js","webpack://ivprogCore/./js/visualUI/commands/comment.js","webpack://ivprogCore/./js/visualUI/commands/conditional_expression.js","webpack://ivprogCore/./js/visualUI/commands/contextualized_menu.js","webpack://ivprogCore/./js/visualUI/commands/dowhiletrue.js","webpack://ivprogCore/./js/visualUI/commands/functioncall.js","webpack://ivprogCore/./js/visualUI/commands/iftrue.js","webpack://ivprogCore/./js/visualUI/commands/reader.js","webpack://ivprogCore/./js/visualUI/commands/repeatNtimes.js","webpack://ivprogCore/./js/visualUI/commands/return.js","webpack://ivprogCore/./js/visualUI/commands/switch.js","webpack://ivprogCore/./js/visualUI/commands/variable_value_menu.js","webpack://ivprogCore/./js/visualUI/commands/whiletrue.js","webpack://ivprogCore/./js/visualUI/commands/writer.js","webpack://ivprogCore/./js/visualUI/functions.js","webpack://ivprogCore/./js/visualUI/globals.js","webpack://ivprogCore/./js/visualUI/ivprog_elements.js","webpack://ivprogCore/./js/visualUI/types.js","webpack://ivprogCore/./js/visualUI/utils.js","webpack://ivprogCore/./js/visualUI/variables.js","webpack://ivprogCore/./node_modules/antlr4/BufferedTokenStream.js","webpack://ivprogCore/./node_modules/antlr4/CharStreams.js","webpack://ivprogCore/./node_modules/antlr4/CommonTokenFactory.js","webpack://ivprogCore/./node_modules/antlr4/CommonTokenStream.js","webpack://ivprogCore/./node_modules/antlr4/FileStream.js","webpack://ivprogCore/./node_modules/antlr4/InputStream.js","webpack://ivprogCore/./node_modules/antlr4/IntervalSet.js","webpack://ivprogCore/./node_modules/antlr4/LL1Analyzer.js","webpack://ivprogCore/./node_modules/antlr4/Lexer.js","webpack://ivprogCore/./node_modules/antlr4/Parser.js","webpack://ivprogCore/./node_modules/antlr4/ParserRuleContext.js","webpack://ivprogCore/./node_modules/antlr4/PredictionContext.js","webpack://ivprogCore/./node_modules/antlr4/Recognizer.js","webpack://ivprogCore/./node_modules/antlr4/RuleContext.js","webpack://ivprogCore/./node_modules/antlr4/Token.js","webpack://ivprogCore/./node_modules/antlr4/Utils.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATN.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNConfig.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNConfigSet.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNDeserializationOptions.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNDeserializer.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNSimulator.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNState.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNType.js","webpack://ivprogCore/./node_modules/antlr4/atn/LexerATNSimulator.js","webpack://ivprogCore/./node_modules/antlr4/atn/LexerAction.js","webpack://ivprogCore/./node_modules/antlr4/atn/LexerActionExecutor.js","webpack://ivprogCore/./node_modules/antlr4/atn/ParserATNSimulator.js","webpack://ivprogCore/./node_modules/antlr4/atn/PredictionMode.js","webpack://ivprogCore/./node_modules/antlr4/atn/SemanticContext.js","webpack://ivprogCore/./node_modules/antlr4/atn/Transition.js","webpack://ivprogCore/./node_modules/antlr4/atn/index.js","webpack://ivprogCore/./node_modules/antlr4/dfa/DFA.js","webpack://ivprogCore/./node_modules/antlr4/dfa/DFASerializer.js","webpack://ivprogCore/./node_modules/antlr4/dfa/DFAState.js","webpack://ivprogCore/./node_modules/antlr4/dfa/index.js","webpack://ivprogCore/./node_modules/antlr4/error/DiagnosticErrorListener.js","webpack://ivprogCore/./node_modules/antlr4/error/ErrorListener.js","webpack://ivprogCore/./node_modules/antlr4/error/ErrorStrategy.js","webpack://ivprogCore/./node_modules/antlr4/error/Errors.js","webpack://ivprogCore/./node_modules/antlr4/error/index.js","webpack://ivprogCore/./node_modules/antlr4/index.js","webpack://ivprogCore/./node_modules/antlr4/polyfills/codepointat.js","webpack://ivprogCore/./node_modules/antlr4/polyfills/fromcodepoint.js","webpack://ivprogCore/./node_modules/antlr4/tree/Tree.js","webpack://ivprogCore/./node_modules/antlr4/tree/Trees.js","webpack://ivprogCore/./node_modules/antlr4/tree/index.js","webpack://ivprogCore/./node_modules/decimal.js/decimal.js","webpack://ivprogCore/./node_modules/jquery-nearest/src/jquery.nearest.js","webpack://ivprogCore/./node_modules/jquery/dist/jquery.js","webpack://ivprogCore/./node_modules/line-i18n/dist/LanguageService.js","webpack://ivprogCore/./node_modules/line-i18n/dist/LanguageServiceNoLS.js","webpack://ivprogCore/./node_modules/line-i18n/dist/LocalizedStrings.js","webpack://ivprogCore/./node_modules/line-i18n/dist/StringTypes.js","webpack://ivprogCore/./node_modules/line-i18n/dist/index.js","webpack://ivprogCore/./node_modules/melanke-watchjs/src/watch.js","webpack://ivprogCore/(webpack)/buildin/module.js"],"names":["main_function","$read","$write","$numElements","$matrixLines","$matrixColumns","$substring","$length","$uppercase","$lowercase","$charAt","$isReal","$isInt","$isBool","$castReal","$castInt","$castBool","$castString","$sin","$cos","$tan","$sqrt","$pow","$log","$abs","$negate","$invert","$max","$min","$mathLib","$ioLib","$strLib","$arrayLib","$langLib","PT","EN","ES","exports","pt","lexer","ivprog","langFuncs","PTFuncs","langLibs","PTLibs","en","ENFuncs","ENLibs","es","ESFuncs","ESLibs","messages","errors","ui","sortableModule","factory","define","sortableFactory","window","document","sortableError","Error","dragEl","parentEl","ghostEl","cloneEl","rootEl","nextEl","lastDownEl","scrollEl","scrollParentEl","scrollCustomFn","lastEl","lastCSS","lastParentCSS","oldIndex","newIndex","activeGroup","putSortable","autoScroll","tapEvt","touchEvt","moved","R_SPACE","R_FLOAT","expando","Date","getTime","win","parseInt","$","jQuery","Zepto","Polymer","captureMode","supportDraggable","createElement","supportCssPointerEvents","el","navigator","userAgent","match","style","cssText","pointerEvents","_silent","abs","Math","min","savedInputChecked","touchDragOverListeners","_autoScroll","_throttle","evt","options","scroll","_this","rect","sens","scrollSensitivity","speed","scrollSpeed","x","clientX","y","clientY","winWidth","innerWidth","winHeight","innerHeight","vx","vy","scrollOffsetX","scrollOffsetY","scrollFn","offsetWidth","scrollWidth","offsetHeight","scrollHeight","parentNode","getBoundingClientRect","right","left","bottom","top","clearInterval","pid","setInterval","call","scrollTo","pageXOffset","pageYOffset","scrollTop","scrollLeft","_prepareGroup","toFn","value","pull","group","name","to","from","fromGroup","join","indexOf","originalGroup","checkPull","checkPut","put","revertClone","Sortable","nodeType","toString","_extend","defaults","random","sort","disabled","store","handle","draggable","test","nodeName","ghostClass","chosenClass","dragClass","ignore","filter","preventOnFilter","animation","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","fn","charAt","bind","nativeDraggable","_on","_onTapStart","push","_onDragOver","get","prototype","constructor","type","touch","touches","target","originalTarget","shadowRoot","path","startIndex","_saveInputCheckedState","button","_closest","_index","_dispatchEvent","preventDefault","split","some","criteria","trim","_prepareDragStart","ownerDocument","dragStartFn","nextSibling","_lastX","_lastY","_disableDelayedDrag","_toggleClass","_triggerDragStart","forEach","_find","_disableDraggable","_onDrop","_dragStartTimer","setTimeout","clearTimeout","_off","pointerType","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","active","_nulling","_emulateDragOver","_css","elementFromPoint","parent","i","length","_onTouchMove","dx","dy","translate3d","_appendGhost","css","ghostRect","cloneNode","marginTop","marginLeft","width","height","body","appendChild","useFallback","_offUpEvents","_clone","insertBefore","_loopId","effectAllowed","dragRect","targetRect","revert","activeSortable","isOwner","isMovingBetweenSortable","canSort","stopPropagation","animated","contains","lastPullMode","_cloneHide","children","_ghostIsLast","lastElementChild","_onMove","_animate","floating","cssFloat","display","isWide","isLong","halfway","nextElementSibling","after","elTop","offsetTop","tgTop","previousElementSibling","moveVector","_unsilent","prevRect","ms","currentRect","removeChild","save","checked","handleEvent","_globalDragOver","toArray","order","n","getAttribute","_generateId","items","id","set","closest","selector","option","destroy","Array","querySelectorAll","removeAttribute","splice","sortable","state","ctx","_matches","_getParentOrHost","host","dropEffect","event","addEventListener","removeEventListener","classList","className","replace","prop","val","defaultView","getComputedStyle","currentStyle","tagName","iterator","list","getElementsByTagName","targetEl","fromEl","createEvent","onName","toUpperCase","substr","initEvent","item","clone","dispatchEvent","toEl","originalEvt","willInsertAfter","onMoveFn","onMove","retVal","dragged","draggedRect","related","relatedRect","str","src","href","sum","charCodeAt","index","tag","shift","re","RegExp","callback","args","arguments","apply","dst","key","hasOwnProperty","dom","root","inputs","idx","Object","defineProperty","capture","passive","utils","on","off","find","is","extend","throttle","toggleClass","create","version","LocalizedStringsService","LocalizedStrings","getInstance","IVProgAssessment","textCode","testCases","domConsole","parser","IVProgParser","createParser","semantic","SemanticAnalyser","parseTree","validTree","analyseTree","partialTests","map","t","partialEvaluateTestCase","IVProgProcessor","input","output","testResult","reduce","acc","curr","then","Promise","resolve","total","catch","message","error","prog","inputList","outputList","accumulator","outerThis","InputTest","OutputTest","registerInput","registerOutput","startTime","now","interpretAST","millis","showErrorMessage","showMessage","isOk","checkOutput","evaluateTestCase","aList","bList","outValue","castNumberA","parseFloat","Number","isNaN","castNumberB","Decimal","decimalPlaces","dp","Config","rounding","ROUND_FLOOR","toFixed","aEqualsB","eq","ROUND_HALF_UP","errorID","getError","msgID","info","getMessage","ArrayIndexAssign","lineExpression","columnExpression","expression","line","column","Assign","ArrayDeclaration","lines","columns","initial","isConst","Declaration","Command","Break","Case","commands","_sourceInfo","sourceInfo","CommandBlock","variables","DoWhile","condition","commandBlock","While","For","assignment","increment","FormalParameter","byRef","Function","returnType","formalParameters","isCompatible","Types","VOID","IfThenElse","ifTrue","ifFalse","Return","Switch","SysCall","FunctionCall","cases","langFunc","SyntaxError","msg","captureStackTrace","SyntaxErrorFactory","freeze","extra_lines","token_missing_one","expected","token","context","text","token_missing_list","expectedList","getOR","id_missing","eos_missing","invalid_array_dimension","typeName","invalid_array_size","invalid_main_return","invalid_var_declaration","invalid_break_command","cmdName","invalid_terminal","invalid_type","const_not_init","invalid_id_format","duplicate_function","main_parameters","duplicate_variable","ArrayAccess","strLine","strColumn","Expression","ArrayLiteral","valid","equalityTest","data","v","old","next","strList","arrayLiteral","element","Literal","BoolLiteral","BOOLEAN","actualParameters","isMainCall","LanguageDefinedFunction","getMainFunctionName","getLocalName","params","strParams","IntLiteral","RealLiteral","StringLiteral","VariableLiteral","InfixApp","UnaryApp","op","l","r","INTEGER","REAL","STRING","UNDEFINED","Expressions","Commands","lexerClass","LanguageService","getCurrentLexer","InputStream","tokenStream","CommonTokenStream","fill","pos","variableTypes","RK_INTEGER","RK_REAL","RK_BOOLEAN","RK_STRING","functionTypes","concat","RK_VOID","parsingArrayDimension","scope","getCurrentLangFuncs","definedFuncsNameList","definedVariablesStack","parseProgram","LT","BASE","pop","getToken","fetchedEOF","globalVars","functions","RK_PROGRAM","consumeNewLines","checkOpenCurly","pushVariableStack","RK_CONST","isVariableType","parseGlobalVariables","RK_FUNCTION","parseFunction","popVariableStack","checkCloseCurly","isEOF","global","literalNames","attempt","OPEN_CURLY","CLOSE_CURLY","OPEN_BRACE","CLOSE_BRACE","OPEN_PARENTHESIS","CLOSE_PARENTHESIS","eosToken","EOS","functionID","funcIDToken","variableID","variableIDToken","getCurrentVariableStack","decl","parseMaybeConst","checkEOS","constToken","typeString","parseType","parseDeclaration","getTypeArray","dim1","dim2","idToken","idString","parseID","checkVariableDuplicate","checkOpenBrace","parseArrayDimension","checkCloseBrace","equalsToken","EQUAL","parseExpressionOR","declaration","dimensions","CompoundType","SourceInfo","createSourceInfo","commaToken","COMMA","dimToken","getIntLiteral","ID","parseVariable","exp","beginArray","parseExpressionList","endArray","createSourceInfoFromList","dataDim","pushScope","FUNCTION","formalParams","funType","checkFunctionDuplicate","checkOpenParenthesis","checkCloseParenthesis","parseFormalParameters","commandsBlock","parseCommandBlock","func","isMain","popScope","insideScope","LIB_ID","optionalCurly","variablesDecl","hasOpen","cmd","parseCommand","varType","parseIDCommand","RK_RETURN","parseReturn","RK_WHILE","parseWhile","RK_FOR","parseFor","RK_BREAK","BREAKABLE","parseBreak","RK_SWITCH","parseSwitchCase","RK_DO","parseDoWhile","RK_IF","parseIfThenElse","casesList","parseCases","whileToken","COMMAND","logicalExpression","cmdBlocks","maybeElse","RK_ELSE","maybeIf","elseBlock","attribution","parseForAssign","consumeForSemiColon","refToken","isID","parseMaybeLibID","parseExpression","equalToken","equalOrParenthesis","funcCall","parseFunctionCallCommand","isLast","equal","RK_CASE","nextToken","RK_DEFAULT","colonToken","COLON","block","defaultCase","setCommands","aCase","caseToken","exp1","parseExpressionAND","OR_OPERATOR","opToken","or","exp2","finalExp","parseExpressionNot","AND_OPERATOR","and","maybeNotToken","NOT_OPERATOR","not","parseExpressionRel","RELATIONAL_OPERATOR","relToken","rel","factor","parseFactor","SUM_OP","sumOpToken","factor2","term","parseTerm","MULTI_OP","multOpToken","term2","getRealLiteral","getStringLiteral","RK_TRUE","RK_FALSE","getBoolLiteral","parseArrayLiteral","parseIDTerm","parseParenthesisExp","tokenA","tokenB","firstIndex","secondIndex","parseFunctionCallExpression","getInternalName","parseActualParameters","funcName","getFunctionName","maybeToken","types","convertFromString","Operators","ADD","ord","SUB","MULT","DIV","MOD","GT","GE","LE","EQ","NEQ","AND","OR","NOT","size","tokenIndex","DOMConsole","elementID","needInput","termDiv","anyKey","setup","inputListeners","_setupDom","_setupEvents","keyCode","which","notifyListeners","write","addClass","append","hideInput","_appendText","USER","INFO","ERR","divClass","getClassForType","textDiv","scrollTerm","animate","show","focus","hide","showInput","remove","Input","Output","i18n","i18nHelper","runner","initVisualUI","resultTypeAfterInfixOp","resultTypeAfterUnaryOp","buildInfixAddTable","table","buildInfixMultiDivSubTable","buildInfixEqualityInequalityTable","buildInfixRelationalTable","buildInfixAndOrTable","buildInfixModTable","buildUnarySumSubList","buildUnaryNegList","buildInfixCompatibilityTable","compatibilityMap","WeakMap","buildUnaryCompatibilityTable","infixMap","unaryMap","operator","leftExpressionType","rightExpressionType","MultiType","newMulti","enable_type_casting","resultType","undefined","e","TypeError","Context","Symbol","valueToKey","object","concatObjects","result","objs","obj","libsObject","funcsObject","localName","names","lib","getCurrentLangLibs","internalName","getFunction","libName","funName","ProcessorErrorFactory","symbol_not_found_full","SemanticError","symbol_not_found","function_missing_full","function_missing","main_missing","array_dimension_not_int_full","array_dimension_not_int","unknown_command_full","RuntimeError","unknown_command","incompatible_types_full","dim","translateType","incompatible_types","incompatible_types_array_full","incompatible_types_array","loop_condition_type_full","loop_condition_type","endless_loop_full","endless_loop","for_condition_type_full","for_condition_type","if_condition_type_full","if_condition_type","invalid_global_var","not_implemented","invalid_case_type_full","invalid_case_type","void_in_expression_full","void_in_expression","invalid_array_access_full","invalid_array_access","invalid_matrix_access_full","invalid_matrix_access","matrix_column_outbounds_full","matrix_column_outbounds","matrix_line_outbounds_full","matrix_line_outbounds","vector_line_outbounds_full","vector_line_outbounds","vector_not_matrix_full","vector_not_matrix","function_no_return","invalid_void_return_full","invalid_void_return","invalid_return_type_full","invalid_return_type","invalid_parameters_size_full","actual","invalid_parameters_size","invalid_parameter_type_full","invalid_parameter_type","invalid_ref_full","invalid_ref","unexpected_break_command_full","unexpected_break_command","invalid_array_literal_type_full","invalid_array_literal_type","invalid_array_literal_line_full","invalid_array_literal_line","invalid_array_literal_column_full","invalid_array_literal_column","invalid_unary_op_full","opName","translateOp","invalid_unary_op","invalid_infix_op_full","typeLeft","dimLeft","typeRight","dimRight","invalid_infix_op","array_dimension_not_positive_full","array_dimension_not_positive","loopTimeout","setConfig","ast","globalStore","Store","stores","forceKill","loopTimers","mode","Modes","RETURN","BREAK","prepareState","initGlobal","mainFunc","findMainFunction","runFunction","checkContext","executeCommands","fun","MAIN_INTERNAL_ID","funcStore","extendStore","returnStoreObject","StoreObjectArray","StoreObject","insertStore","newFuncStore$","associateParameters","sto","variablesDeclarations","stoWithVars","finalSto","formalList","actualList","callerStore","calleeStore","promises$","evaluateExpression","actualParameter","all","values","stoObj","shouldTypeCast","formalParameter","canImplicitTypeCast","inStore","ref","StoreObjectArrayAddress","StoreObjectArrayAddressRef","StoreObjectRef","realValue","parseStoreObjectValue","doImplicitCasting","cmds","outerRef","partial","lastCommand","nextCommand","executeCommand","reject","PAUSE","executeDeclaration","executeArrayIndexAssign","executeAssign","executeBreak","executeReturn","executeIfThenElse","executeDoWhile","executeWhile","executeFor","executeSwitch","executeFunctionCall","executeSysCall","findFunction","auxCaseFun","promise","switchExp","ignoreSwitchCases","wasTrue","isDefault","$newSto","nSto","$value","vl","breakLoop","$result","RUN","initCmd","whileBlock","forAsWhile","newCmdList","$newStore","time","LOOP_TIMEOUT","funcType","applyStore","stringInfo","updateStore","mustBeArray","line$","column$","value$","lineSO","results","number","columnSO","isVector","newArray","assign","canAccept","innerType","$lines","$columns","temp","refValue","readOnly","typeInfo","evaluateUnaryApp","evaluateInfixApp","evaluateArrayAccess","evaluateVariableLiteral","evaluateLiteral","evaluateArrayLiteral","evaluateFunctionCall","errorHelperFunction","validationResult","errorCode","WRONG_COLUMN_NUMBER","columnValue","arr","WRONG_LINE_NUMBER","lineValue","WRONG_TYPE","strExp","$matrix","evaluateMatrix","checkResult","isValid","evaluateVector","stoArray","exps","$vector","vector","_","$line","$column","unaryApp","$left","negated","infixApp","$right","shouldImplicitCast","stringInfoLeft","infoLeft","stringInfoRight","infoRight","rightStr","leftStr","plus","minus","times","divToInt","div","leftValue","rightValue","trunc","modulo","gt","gte","lt","lte","createNumElementsFun","createMatrixLinesFun","createMatrixColumnsFun","numElementsFun","ALL","matrixLinesFun","matrix","matrixColumnsFun","createOutputFun","createInputFun","writeFunction","sendOutput","readFunction","request","requestInput","typeToConvert","createIsRealFun","createIsIntFun","createIsBoolFun","createCastRealFun","createCastIntFun","createCastBoolFun","createCastStringFun","isRealFun","isIntFun","isBoolFun","castRealFun","castIntFun","floor","castBoolFun","castStringFun","createSinFun","createCosFun","createTanFun","createSqrtFun","createPowFun","createLogFun","createAbsFun","createNegateFun","createInvertFun","createMaxFun","createMinFun","convertToRadians","degrees","acos","sinFun","angle","mod","sin","cosFun","cos","tanFun","toNumber","tan","sqrtFun","sqrt","powFun","pow","logFun","isNegative","log10","absFun","negateFun","invertFun","dividedBy","maxFun","numbers","max","paramType","minFun","createSubstringFun","createLengthFun","createUppercaseFun","createLowercaseFun","createrCharAtFun","substringFun","start","end","substring","lengthFun","uppercaseFun","lowercaseFun","toLowerCase","charAtFun","symbolMap","currentFunction","symMap","findSymbol","console","log","pushMap","assertDeclarations","f","assertFunction","assertDeclaration","lineType","evaluateExpressionType","columnType","insertSymbol","resultTypeLeft","resultTypeRight","evaluateLiteralType","assertParameters","arrayTypeInfo","arrType","literal","warn","last","strInfo","formalParam","optional","assertReturn","popMap","checkCommand","checkCommands","sType","hasDefault","caseType","lineExp","columnExp","getMainFunction","actualParametersList","param","shared","j","castType","sourceType","nextStore","isRef","getRefObj","oldObj","updateRef","setID","oldType","stoType","_type","_value","_readOnly","_id","another","_lines","_columns","mustBeNull","refID","anArray","getArrayObject","refLine","refColumn","address","updateArrayObject","ivprogLexer","editor","JsonEditor","click","analiser","semAna","proc","clear","load","alert","a","site","o","s","c","u","d","slice","isPlainObject","settings","m","namespace","g","p","h","b","initialize","instantiate","verbose","normalize","fix","requestAnimationFrame","debug","disable","groupEnd","groupCollapsed","markTimeline","consoleClear","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","moduleExists","enabled","modules","each","change","setting","enable","cache","removeData","internal","performance","Element","Name","Arguments","timer","invoke","method","isFunction","isArray","siteNamespace","namespaceStub","config","sections","section","utilities","expr","createPseudo","self","form","C","w","S","k","T","A","R","P","E","F","O","D","bindEvents","removeEvents","refresh","field","prompt","submit","reset","attachEvents","validate","blur","keyboardShortcuts","keydown","changeEvent","defaultValue","uiCheckbox","uiDropdown","hasClass","removeClass","dropdown","determine","bracketedRule","regExp","bracket","shorthandFields","keys","shorthandRules","blank","checkbox","ctrlKey","one","keyup","validation","revalidate","ancillaryValue","ruleName","inputEvent","oninput","onpropertychange","fieldsFromShorthand","rules","identifier","unspecifiedRule","search","unspecifiedField","oldSyntax","fields","metadata","escape","string","add","radio","has","String","rule","inline","templates","appendTo","html","transition","duration","fadeIn","fadeOut","success","isEmptyObject","onSuccess","stopImmediatePropagation","onFailure","depends","onValid","onInvalid","noRule","silent","htmlID","decimal","email","flags","integer","url","isExactly","notExactly","contain","containExactly","doesntContain","doesntContainExactly","minLength","exactLength","maxLength","different","creditCard","minCount","exactCount","maxCount","label","pressed","containsExactly","visa","pattern","amex","mastercard","discover","unionPay","jcb","maestro","dinersClub","laser","visaElectron","inArray","accordion","title","content","events","observeChanges","MutationObserver","observe","childList","subtree","trigger","toggle","animating","collapsible","close","open","onOpening","onChanging","exclusive","closeOthers","stop","animateChildren","queue","useFailSafe","opacity","resetOpacity","slideDown","easing","onOpen","onChange","onClosing","slideUp","onClose","parents","prev","closeNested","attr","removeAttr","easeOutQuad","tabbable","unbind","reference","initialLoad","indeterminate","check","uncheck","hidden","notFound","link","should","allowCheck","ignoreCallbacks","onChecked","allowUncheck","unchecked","onUnchecked","allowIndeterminate","onIndeterminate","determinate","allowDeterminate","onDeterminate","onEnable","onEnabled","onDisable","onDisabled","radios","otherRadios","forceCallbacks","beforeChecked","beforeUnchecked","beforeIndeterminate","beforeDeterminate","fireOnInit","can","uncheckable","uncheckOthers","prevAll","detach","insertAfter","dimmer","documentElement","preinitialize","dimmerName","variation","dimmable","page","preventScroll","pageDimmer","closable","addContent","template","dimmed","onShow","onHide","useCSS","displayType","onStart","onComplete","fadeTo","q","z","I","M","L","V","N","H","sizer","U","W","icon","B","Q","menu","X","Y","Z","K","J","alreadySetup","layout","refreshData","restore","selected","disconnect","menuObserver","selectObserver","select","mutation","userChoice","userValues","addition","addResult","hideAdditions","userLabels","query","minCharacters","firstUnfiltered","selectedItem","unselectable","nextAvailable","nextAll","api","urlData","returnedObject","multiple","searchSelection","allowTab","selectValues","missingMultiple","prependTo","refreshSelectors","refreshItems","clearData","defaultText","placeholderText","remote","queryRemote","maxSelections","allResultsFiltered","allFiltered","intent","menuSearch","focusSearch","visible","animatingOutward","hideOthers","hideMenu","hideSubMenus","touchEvents","keyboardEvents","inputEvents","mouseEvents","single","mouseenter","mousedown","mouseup","mouseleave","filterActive","activeItem","onNoResults","allowAdditions","noResults","userSuggestion","focusedOnSearch","useLabels","apiSettings","useAPI","filterRemoteData","filterItems","noAPI","errorDuration","onError","serverError","remoteValues","choiceText","fullTextSearch","exactSearch","fuzzySearch","choiceValue","filteredItem","filtered","forceSelection","searchTerm","showOnFocus","activeElement","activeLabel","nextUntil","prevUntil","shiftKey","onLabelSelect","activeLabels","bubbledLabelClick","bubbledIconClick","eventOnElement","eventInModule","addedNodes","removedNodes","siblings","itemTimer","allowCategorySelection","userAddition","scrollPosition","selectAction","inObject","focused","caretPosition","leftArrow","siblingLabel","rightArrow","first","deleteKey","backspace","addBack","delimiter","enter","upArrow","selectOnKeydown","downArrow","pageUp","scrollPage","pageDown","selectedLetter","fromCharCode","action","nothing","activate","hideAndClear","combo","placeholder","searchWidth","ceil","selectionCount","upward","grep","uniqueArray","selectionStart","createRange","moveStart","selectInput","read","remoteData","preserveHTML","menuIcon","sortSelect","itemWithAdditions","labels","saveRemoteData","Storage","sessionStorage","getItem","noStorage","setItem","clearValue","outerHeight","glyphWidth","loading","partialSearch","position","offset","firstLetter","direction","openDownward","leftward","openRightward","allowReselection","extendSelect","optionValue","exactly","count","ignoreCase","onLabelCreate","onAdd","arrayValue","onRemove","userValue","onLabelRemove","valueIgnoringCase","valueMatchingCase","animatingInward","selectMutation","verticallyScrollableContext","horizontallyScrollableContext","above","below","outerWidth","noTransition","quote","keepOnScreen","embed","sources","autoplay","createAndShow","createPlaceholder","generate","createEmbed","onCreate","changeEmbed","source","showPlaceholder","onReset","onDisplay","onPlaceholderDisplay","domain","encode","parameters","encodeURIComponent","iframe","noURL","onEmbed","video","color","hd","brandedUI","youtube","autohide","hq","jsapi","modestbranding","vimeo","byline","portrait","onPause","onPlay","onStop","modal","refreshModals","centered","dimmerSettings","detachable","undetached","scrolling","cacheSizes","screenHeight","approve","deny","resize","onApprove","onDeny","clickaway","allowMultiple","hideAll","debounce","keyboard","showModal","hideModal","showDimmer","others","onVisible","autofocus","hideDimmer","onHidden","bodyStyle","pageHeight","contextHeight","topOffset","fit","padding","modernBrowser","ActiveXObject","inverted","blurring","nag","dismiss","displayTime","storageMethod","storage","persist","storageOptions","expires","localStorage","cookie","noCookieStorage","removeItem","removeCookie","fixed","popup","scrollContext","boundary","createID","exists","preserve","documentChanged","offsetParent","movePopup","reposition","removePopup","hideTimer","showTimer","touchstart","hideGracefully","activator","hoverable","conditions","popupVisible","supports","svg","SVGGraphicsElement","popupOffset","calculations","margin","screen","setFluidWidth","fluid","container","getPropertyValue","rtl","startEvent","scrollEvent","endEvent","distanceFromBoundary","positions","nextPosition","prefer","center","distanceAway","centerArrow","arrowPixelsFromEdge","maxSearchDepth","lastResort","invalidPosition","offstage","cannotPlace","attempts","onUnplaceable","fluidWidth","hideOnScroll","closeOnScroll","touchClose","basic","jitter","addTouchEvents","progress","bar","transitionEvent","interval","nextValue","update","complete","percent","progressPoll","transitionEnd","failSafeTimer","triggerHandler","failSafeDelay","randomValue","normalizedValue","decrement","displayPercent","updateInterval","numericValue","OTransition","MozTransition","WebkitTransition","precision","round","toNextValue","warning","barWidth","tooHigh","tooLow","limitValues","labelInterval","framerate","barLabel","autoSuccess","ratio","showActivity","onLabelUpdate","onActive","onWarning","nonNumeric","variable","rating","interactive","initialRating","maxRating","clearable","clearRating","onRate","slent","noMaximum","searchButton","category","searchFields","refreshResults","automatic","handleKeyboard","searchDelay","searchOnFocus","minimumCharacters","showResults","cancel","hideResults","hideDelay","resultsClicked","inMessage","onSelect","location","buttonPressed","buttonFocus","parse","response","displayMessage","onAbort","searchFullText","oldSearchSyntax","firstResult","addResults","inject","local","onSearchQuery","maxResults","categoryResults","generateResults","beginsWith","merge","onResultsAdd","selectFirstResult","onResultsOpen","onResultsClose","noTemplate","showNoResults","onResults","displayField","logging","noEndpoint","categories","categoryName","description","image","price","actionText","actionURL","standard","shape","sides","side","defaultSide","repaint","beforeChange","currentStageSize","stageSize","nextSide","flip","up","allowRepeats","transform","stage","down","over","behind","back","origin","depth","sidebar","pusher","delaySetup","ios","containScroll","scrollLock","inlineCSS","ie","refreshSidebars","omitted","wrapAll","movedSidebar","pushable","overlay","othersActive","pushPage","pullPage","othersAnimating","othersVisible","scrollToTop","dimPage","returnScroll","mobile","scrollBack","pushed","mobileTransition","defaultTransition","computer","mobileChrome","closed","vertical","sticky","determineContainer","determineContext","checkErrors","scrollchange","changed","invalidContext","elementSize","stick","onScroll","onReposition","supported","lastScroll","elementScroll","standardScroll","fits","sameHeight","containerSize","scrollChange","currentElementScroll","minimumSize","setProperty","initialPosition","bound","pushing","bottomOffset","bindBottom","fixTop","setInitialPosition","fixBottom","bindTop","marginBottom","onTop","onUnstick","onBottom","unfix","setSize","onStick","resetCSS","tab","callbacks","determineTabs","auto","history","initializeHistory","isWindow","childrenOnly","tabs","onTabLoad","onTabInit","onLoad","legacyLoad","onFirstLoad","legacyInit","historyType","changeTab","pathNames","initialPath","determineTitle","tabElement","onRequest","pushState","ignoreFirstLoad","pathToArray","defaultPathArray","arrayToPath","filterArray","navigation","fetch","missingTab","evaluateScripts","cacheType","innerHTML","dataType","encodeParameters","alwaysRefresh","headers","loadOnce","deactivate","navElement","defaultPath","maxDepth","recursion","noContent","loaded","animationEndEvent","forceRepaint","animationDirection","reverse","outward","support","occurring","queuing","noAnimation","animationCallbacks","completeCallback","failSafe","looping","inward","force","userStyle","inlineDisplay","animationClass","transitionExists","currentAnimation","queueCallback","currentDirection","animationStartEvent","OAnimation","MozAnimation","WebkitAnimation","stopAll","repeated","stateContext","decode","json","JSON","cachedResponse","stringify","interruptRequests","abort","defaultData","serializeForm","formData","cancelled","beforeSend","templatedURL","mocked","base","beforeXHR","failure","resolveWith","throttleFirstRequest","send","missingURL","removeError","hideError","expectingJSON","mockResponse","mockResponseAsync","responseAsync","abortedRequest","readyState","validResponse","successTest","was","succesful","required","requiredParameter","urlEncodedValue","serializeObject","serialize","missingSerialize","mockedXHR","xhr","always","done","loadingDuration","onResponse","rejectWith","fail","responseFromXHR","errorFromRequest","status","statusMessage","Deferred","responseText","ajax","legacyParameters","noReturnedValue","decodeURIComponent","missingAction","exitConditions","JSONParse","parseError","timeout","visibility","trackChanges","initialCheck","checkVisibility","resetFixed","contextChanged","refreshOnLoad","refreshOnResize","precache","onload","onerror","enableCallbacks","disableCallbacks","occurred","once","onOnScreen","onAllLoaded","onTopPassed","onTopPassedReverse","zIndex","onFixed","onScreen","elementCalculations","offScreen","checkOnRefresh","onRefresh","passed","passingReverse","topVisibleReverse","bottomVisibleReverse","topPassedReverse","bottomPassedReverse","passing","topVisible","bottomVisible","topPassed","bottomPassed","onUpdate","onPassed","pixelsPassed","execute","onOffScreen","onPassing","onTopVisible","onBottomVisible","onBottomPassed","onPassingReverse","onTopVisibleReverse","onBottomVisibleReverse","onBottomPassedReverse","screenCalculations","continuous","onUnfixed","elementPosition","screenSize","includeMargin","percentagePassed","StringTypes","line_i18n","opts","ERROR","MESSAGE","UI","getUI","getString","LanguageServiceExtended","iLMparameters","default_lang","lang","langInfo","Lexers","getLang","getDefaultLang","LanguageServiceNoLS","IVProgLocalizedStrings","langService","langsJsons","shouldListenToChange","transType","Langs","_instance","BaseType","BaseTypes","Type","toInt","toReal","toBool","convertToString","instance","convertBoolToString","bool","baseType","ConfigObject","intConvertRoundMode","renderAlgorithm","Models","GlobalsManagement","VariablesManagement","CommandsManagement","CodeManagement","VariableValueMenu","FunctionsManagement","block_render","draging","program_obj","renderFunction","globals","renderGlobal","Utils","code","globalsCode","has_error","n_code","functionsCode","function_obj","ret","return_type","TEXT","return_dimensions","parameters_list","parametersCode","variables_list","variablesCode","commandsCode","todos","prepend","command_obj","indentation","COMMAND_TYPES","break","breaksCode","comment","commentsCode","reader","readersCode","writer","writersCode","functioncall","functioncallsCode","attributionsCode","whiletrue","whiletruesCode","dowhiletrue","doWhilesCode","iftrue","iftruesCode","repeatNtimes","repeatNtimesCode","switch","switchsCode","return","returnsCode","variable_value_menu","variableValueMenuCode","switchcasesCode","switchcase","commands_block","var_attribution","expression1","expression2","EXPRESSION_TYPES","exp_logic","logicExpressionCode","exp_arithmetic","arithmeticExpressionCode","var_incrementation","expression3","itens","ARITHMETIC_TYPES","multiplication","division","module","renderErrorMessage","dom_object","commands_else","first_operand","LOGIC_COMPARISON","equals_to","not_equals_to","second_operand","ARITHMETIC_COMPARISON","greater_than","less_than","greater_than_or_equals_to","less_than_or_equals_to","elementExpressionCode","expression_obj","type_exp","EXPRESSION_ELEMENTS","par_exp_par","function_called","variable_obj","is_return","row","comment_text","parameter_obj","is_constant","rows","removeCommand","createFloatingCommand","renderCommand","genericCreateCommand","CommentsManagement","ReadersManagement","WritersManagement","AttributionsManagement","IftruesManagement","RepeatNtimesManagement","WhiletruesManagement","DowhiletruesManagement","SwitchesManagement","FunctioncallsManagement","VariableValueMenuManagement","BreaksManagement","ReturnsManagement","nearest","has_element_created_draged","which_element_is_draged","command","dom_obj","function_container_active","function_container","command_type","mouse_event","floatingObject","manageCommand","addGhostDiv","pageX","divx","pageY","ghostDiv","active_container","addGhostToEmptyBlock","addGhostToNotEmptyBlock","containerIf","containerElse","topIfDistance","bottomIfDistance","topElseDistance","bottomElseDistance","addGhostToFunctionArea","allfilhos","topDistances","bottomDistances","topD","botD","menorTop","indiceTop","menorBot","indiceBot","undermouse","borderMouseDragCommand","objLeft","objTop","objRight","objBottom","element_reference","before_after_inside","createdElement","Comment","VAR_OR_VALUE_TYPES","only_value","Reader","only_variable","Writer","Attribution","only_function","IfTrue","ConditionalExpression","RepeatNTimes","WhileTrue","DoWhileTrue","sc","SwitchCase","variable_and_function","dragTrash","trash","hier","parentsUntil","esta_correto","esta_na_div_correta","new_cmd","findNearbyCommandToAddInFunctionScope","hier_find","hierarquia_bottom_up","is_correct_context","sub_elemento","findBeforeOrAfterCommandToAdd","insertCommandInBlockHierar","hier_dom","hier_obj","el_jq","command_parent","recentComand","findNearbyCommandToAddInBlockScope","addCommandToSwitchCase","findBeforeOrAfterCommandToAddInsertBlock","node_list_commands","all_sub","menor_distancia","elemento_menor_distancia","antes","t_bot","t_top","borda_inferior","command_target","temp_parent","is_in_else","d_top","d_bot","findInBlockCorrectPlace","insertCommandInBlock","correct_div","is_in_if","which_case","case_div","findInBlockCorrectPlaceInSwitchCase","manageExpressionElements","renderMenuOperations","renderMenu","ExpressionElement","op_exp","none","addHandlers","renderExpressionElements","ref_object","menu_var_or_value","expression_element","index_to_move","exp_op_exp","expression_div","command_container","renderElement","renderOperator","temp_op","index_op","context_menu","$selectedItem","renderMenuAddExpression","dom_append_menu","expression_append_new_expression","temp_exp_1","temp_exp_2","temp_exp","temp_par_1","temp_par_2","renderExpression","menu_add_item","menu_add_item_seq","index_temp","addMenuItens","divs_expression","attribution_dom","variable_selected","createExpressionAround","break_dom","renderTextComment","comment_dom","initial_el_to_render","renderStartMenu","main_div","renderLogicExpression","renderArithmeticExpression","restartMenu","renderArithmeticOperator","all_expression","expression_arithmetic","arithmetic_operator","element_to_append","menu_operator","renderLogicOperator","expression_logic","logic_operator","exp_el_par_1","exp_el_expr_el_1","exp_el_expr_operand","exp_el_expr_el_2","exp_el_par_2","start_menu","LogicExpression","ArithmeticExpression","SwitchManagement","RepeatNTimesManagement","dom_where_render","dom_command","menu_div","addCaseToSwitch","renderCase","ConditionalExpressionManagement","ContextualizedMenu","dowhiletrue_dom","functioncall_dom","iftrue_dom","reader_dom","manageClearExpressionElements","cond_exp","repeatNtimes_dom","return_dom","casediv","switch_dom","AttribuitionsManagement","variable_and_value_opt","value_and_function","size_field","variable_and_value","addVariablesToMenu","addFunctionsToMenu","addIVProgFunctionsToMenu","variable_fun","isVarInProgram","renderPreviousContent","appendSelectText","ret_function","isFunctionInProgram","function_called_obj","system_functions","var_obj","var_fun","parameters_menu","variable_render","openInputToValue","sub_menu","SYSTEM_FUNCTIONS_CATEGORIES","math","arrangement","conversion","is_there","include_constant","openInputToFunction","openInputToVariable","inputWidth","textWidth","tmpStr","function_selected","rendered","focusout","font","fakeEl","whiletrue_dom","new_div_item","div_parent_with_handler","addHandlerIconAdd","addHandlersManager","writer_dom","item_div","content_element","onEnd","replaceWith","insert_after","after_which","icon_add_item","new_related_menu","ref_object_content","AlgorithmManagement","counter_new_functions","counter_new_parameters","ivprog_version","VersionInfo","studentTemp","studentGrade","program","Program","SystemFunction","mainFunction","function_comment","addFunction","generator","runCodeAssessment","insertContext","watchW","WatchJS","watch","addFunctionHandler","new_function","newe","addParameter","is_from_click","new_parameter","Variable","renderParameter","updateReturnType","new_type","new_dimensions","removeFunction","minimizeFunction","is_hidden","enableNameFunctionUpdate","addVariable","slideToggle","renderFunctionReturn","function_element","tm","cont","appender","is_main","renderVariable","function_index","updateSequenceLocals","addSortableHandler","updateSequenceParameters","teste","isVisible","elementTop","elementHeight","containerTop","containerHeight","evento_drag","updateProgramObjDrag","nodes","start_index","path_target","index_each","path_relative","indice_na_raiz","index_in_block","is_in_case_switch","index_case_of_switch","command_start_point","block_to_insert","command_in_drag","prepareDragHandler","id_function","n_group","itemEl","mainDiv","addGlobal","runCode","toggleVisualCoding","toggleTextualCoding","is_iassign","toggleConsole","full_screen","ready","time_show","listWithHandle","updateSequenceFunction","listGlobalsHandle","getElementById","updateSequenceGlobals","strCode","runTest","getEvaluationCallback","grade","analyser","is_running","waitToCloseConsole","dispose","removeParameter","parameter_container","updateParameterType","enableNameParameterUpdate","updateParameterName","parameter_var","new_name","parameter_obj_dom","isValidIdentifier","variableNameAlreadyExists","name_var","updateFunctionName","function_var","function_obj_dom","functionNameAlreadyExists","function_name","identifier_str","opened_name_parameter","opened_input_parameter","parent_node","input_field","opened_name_function","opened_input","previousPadding","counter_new_globals","new_global","toggleConstant","global_var","updateName","global_obj_dom","globalNameAlreadyExists","global_name","updateType","updateInitialValues","removeGlobal","global_container","alternateBooleanGlobalValue","value_container","alternateBooleanGlobalVectorValue","removeGlobalColumnVector","addGlobalColumnVector","removeColumnGlobalMatrix","addColumnGlobalMatrix","removeLineGlobalMatrix","addLineGlobalMatrix","n_l","alternateBooleanGlobalMatrixValue","renderValues","enableGlobalValueUpdate","enableGlobalVectorValueUpdate","enableGlobalMatrixValueUpdate","updateColumnsAndRowsText","enableNameUpdate","ff","complete_element","opened_name_value_matrix_global_v","opened_input_value_matrix_global_v","opened_name_value_global_var","opened_input_value_global_ar","opened_name_global","opened_input_global","input_name","opened_name_value_vector_global_","opened_input_value_vector_global_","function","start_point","exp_conditional","has_neg","FunctionCallMenu","function_to_add","function_to_receive","dom_obj_target","message_text","$module","counter_new_variables","is_in_click","new_var","variable_obj_dom","removeVariable","variable_container","function_associated","variable_var","alternateBooleanValue","enableValueUpdate","alternateBooleanVectorValue","enableVectorValueUpdate","removeColumnVector","addColumnVector","removeColumnMatrix","addColumnMatrix","removeLineMatrix","addLineMatrix","alternateBooleanMatrixValue","enableMatrixValueUpdate","Token","require","Lexer","Interval","TokenStream","BufferedTokenStream","tokenSource","tokens","mark","release","marker","seek","lazyInit","adjustSeekIndex","consume","skipEofCheck","LA","EOF","sync","fetched","getTokens","subset","LB","setTokenSource","nextTokenOnChannel","channel","previousTokenOnChannel","getHiddenTokensToRight","nextOnChannel","DEFAULT_TOKEN_CHANNEL","from_","filterForChannel","getHiddenTokensToLeft","prevOnChannel","getSourceName","getText","isNodeJs","importScripts","fs","CharStreams","fromString","fromBlob","blob","encoding","FileReader","readAsText","fromBuffer","buffer","fromPath","readFile","fromPathSync","readFileSync","CommonToken","TokenFactory","CommonTokenFactory","copyText","DEFAULT","createThin","DEFAULT_CHANNEL","getNumberOfOnChannelTokens","FileStream","fileName","decodeToUnicodeCodePoints","_loadString","stream","strdata","codePoint","codePointAt","codeUnit","_size","fromCodePoint","IntervalSet","intervals","INVALID_TYPE","addOne","addInterval","addRange","addSet","other","intervalslength","complement","removeRange","len","removeOne","symbolicNames","elemsAreChar","toTokenString","toCharString","toIndexString","elementName","EPSILON","Set","BitSet","ATNConfig","RuleStopState","RuleTransition","NotSetTransition","WildcardTransition","AbstractPredicateTransition","pc","predictionContextFromRuleContext","PredictionContext","SingletonPredictionContext","LL1Analyzer","atn","HIT_PRED","getDecisionLookahead","transitions","look","alt","lookBusy","seeThruPreds","_LOOK","EMPTY","LOOK","stopState","lookContext","calledRuleStack","addEOF","isEmpty","returnState","states","getReturnState","removed","ruleIndex","getParent","newContext","followState","stateNumber","isEpsilon","MIN_USER_TOKEN_TYPE","maxTokenType","Recognizer","RecognitionException","LexerNoViableAltException","TokenSource","_input","_factory","_tokenFactorySourcePair","_interp","_token","_tokenStartCharIndex","_tokenStartLine","_tokenStartColumn","_hitEOF","_channel","_modeStack","_mode","DEFAULT_MODE","_text","MORE","SKIP","HIDDEN","HIDDEN_CHANNEL","MIN_CHAR_VALUE","MAX_CHAR_VALUE","tokenStartMarker","emitEOF","continueOuter","ttype","recover","stack","emit","skip","more","pushMode","popMode","sourceName","emitToken","getCharIndex","cpos","lpos","eof","getAllTokens","getErrorDisplay","listener","getErrorListenerDispatch","syntaxError","getErrorDisplayForChar","getCharErrorDisplay","ParseTreeListener","DefaultErrorStrategy","ATNDeserializer","ATNDeserializationOptions","TerminalNode","ErrorNode","TraceListener","enterEveryRule","ruleNames","visitTerminal","node","symbol","_ctx","exitEveryRule","Parser","_errHandler","_precedenceStack","buildParseTrees","_tracer","_parseListeners","_syntaxErrors","setInputStream","contructor","bypassAltsAtnCache","setTrace","getCurrentToken","reportMatch","recoverInline","addErrorNode","matchWildcard","_buildParseTrees","getParseListeners","addParseListener","removeParseListener","removeParseListeners","triggerEnterRuleEvent","enterRule","triggerExitRuleEvent","exitRule","getTokenFactory","setTokenFactory","getATNWithBypassAlts","serializedAtn","getSerializedATN","deserializationOptions","generateRuleBypassTransitions","deserialize","compileParseTreePattern","patternRuleIndex","getTokenStream","ParseTreePatternMatcher","compile","getInputStream","setTokenStream","notifyErrorListeners","offendingToken","hasListener","inErrorRecoveryMode","addTokenNode","invokingState","isErrorNode","visitErrorNode","addContextToParseTree","parentCtx","addChild","localctx","enterOuterAlt","altNum","setAltNumber","removeLastChild","getPrecedence","enterRecursionRule","precedence","pushNewRecursionContext","previous","unrollRecursionContexts","retCtx","getInvokingContext","precpred","inContext","isExpectedToken","following","nextTokens","rt","getExpectedTokens","getExpectedTokensWithinCurrentRule","getRuleIndex","getRuleIndexMap","getRuleInvocationStack","getDFAStrings","decisionToDFA","dumpDFA","seenOne","dfa","printer","println","decision","print","trace","RuleContext","Tree","INVALID_INTERVAL","TerminalNodeImpl","ErrorNodeImpl","ParserRuleContext","invokingStateNumber","exception","copyFrom","child","badToken","getChild","getTypedRuleContext","ctxType","getTypedRuleContexts","contexts","getChildCount","getSourceInterval","InterpreterRuleContext","Hash","cachedHashCode","EMPTY_RETURN_STATE","globalNodeCount","hasEmptyPath","hashCode","updateHashCode","hash","PredictionContextCache","existing","finish","equals","EmptyPredictionContext","ArrayPredictionContext","returnStates","outerContext","rootIsWildcard","mergeCache","mergeSingletons","mergeArrays","rootMerge","mergeRoot","spc","singleParent","payloads","apc","a_","mergedReturnStates","mergedParents","a_parent","b_parent","payload","bothDollars","ax_ax","mergedParent","combineCommonParents","uniqueParents","getCachedPredictionContext","contextCache","visited","updated","getAllContextNodes","ConsoleErrorListener","ProxyErrorListener","_listeners","INSTANCE","_stateNumber","tokenTypeMapCache","ruleIndexMapCache","checkVersion","toolVersion","runtimeVersion","addErrorListener","removeErrorListeners","getTokenTypeMap","tokenNames","getTokenNames","getTokenType","tokenName","getErrorHeader","getOffendingToken","getTokenErrorDisplay","sempred","actionIndex","RuleNode","INVALID_ALT_NUMBER","getRuleContext","getPayload","getAltNumber","altNumber","accept","visitor","visitChildren","Trees","toStringTree","recog","ri","getTokenSource","EMPTY_SOURCE","txt","arrayToString","seed","remainder","bytes","h1","h1b","c1","c1b","c2","c2b","k1","standardEqualsFunction","standardHashCodeFunction","hashFunction","equalsFunction","bits","minValue","Map","hashKey","entries","entry","oldValue","containsKey","getKeys","getValues","ss","AltDict","DoubleDict","hashStuff","escapeWhitespace","escapeSpaces","titleCase","equalArrays","ATN","grammarType","decisionToState","ruleToStartState","ruleToStopState","modeNameToStartState","ruleToTokenType","lexerActions","modeToStartState","nextTokensInContext","anal","nextTokensNoContext","nextTokenWithinRule","addState","removeState","defineDecisionState","getDecisionState","DecisionState","SemanticContext","checkParams","isCfg","semanticContext","reachesIntoOuterContext","props","precedenceFilterSuppressed","NONE","hashCodeForConfigSet","equalsForConfigSet","LexerATNConfig","lexerActionExecutor","passedThroughNonGreedyDecision","checkNonGreedyDecision","nonGreedy","hashATNConfig","equalATNConfigs","ATNConfigSet","fullCtx","configLookup","configs","uniqueAlt","conflictingAlts","hasSemanticContext","dipsIntoOuterContext","merged","getStates","getPredicates","preds","optimizeConfigs","interpreter","getCachedContext","addAll","coll","containsFast","setReadonly","OrderedATNConfigSet","verifyATN","defaultOptions","ATNType","ATNStates","ATNState","BasicState","BlockStartState","BlockEndState","LoopEndState","RuleStartState","TokensStartState","PlusLoopbackState","StarLoopbackState","StarLoopEntryState","PlusBlockStartState","StarBlockStartState","BasicBlockStartState","Transitions","Transition","AtomTransition","SetTransition","RangeTransition","ActionTransition","EpsilonTransition","PredicateTransition","PrecedencePredicateTransition","LexerActions","LexerActionType","LexerSkipAction","LexerChannelAction","LexerCustomAction","LexerMoreAction","LexerTypeAction","LexerPushModeAction","LexerPopModeAction","LexerModeAction","BASE_SERIALIZED_UUID","ADDED_UNICODE_SMP","SUPPORTED_UUIDS","SERIALIZED_VERSION","SERIALIZED_UUID","initArray","tmp","stateFactories","actionFactories","isFeatureSupported","feature","actualUuid","idx1","idx2","checkUUID","readATN","readStates","readRules","readModes","sets","readSets","readInt","uuid","readInt32","readEdges","readDecisions","readLexerActions","markPrecedenceDecisions","PARSER","adjust","readUUID","pair","loopBackStateNumbers","endStateNumbers","nstates","stype","stateFactory","LOOP_END","loopBackStateNumber","endStateNumber","loopBackState","endState","numNonGreedyStates","numPrecedenceStates","isPrecedenceRule","nrules","LEXER","startState","tokenType","nmodes","readUnicode","iset","containsEof","i1","i2","trans","nedges","trg","arg1","arg2","arg3","edgeFactory","srcState","addTransition","outermostPrecedenceReturn","ndecisions","decState","actionType","data1","data2","lexerAction","lexerActionFactory","generateRuleBypassTransition","bypassStart","bypassStop","excludeTransition","stateIsEndStateFor","matchState","maybeLoopEndState","epsilonOnlyTransitions","isPrecedenceDecision","checkCondition","low","high","readLong","createByteToHex","bth","byteToHex","bb","int","RANGE","RULE","PREDICATE","PRECEDENCE","ATOM","ACTION","SET","NOT_SET","WILDCARD","sf","BASIC","RULE_START","BLOCK_START","PLUS_BLOCK_START","STAR_BLOCK_START","TOKEN_START","RULE_STOP","BLOCK_END","STAR_LOOP_BACK","STAR_LOOP_ENTRY","PLUS_LOOP_BACK","af","CHANNEL","CUSTOM","MODE","POP_MODE","PUSH_MODE","TYPE","DFAState","ATNSimulator","sharedContextCache","INITIAL_NUM_TRANSITIONS","INVALID_STATE_NUMBER","stateType","serializationNames","isNonGreedyExitState","LexerActionExecutor","resetSimState","sim","dfaState","SimState","LexerATNSimulator","prevAccept","dfa_debug","MIN_DFA_EDGE","MAX_DFA_EDGE","match_calls","copyState","simulator","s0","matchATN","execATN","old_mode","s0_closure","computeStartState","suppressEdge","addDFAState","predict","toLexerString","ds0","isAcceptState","captureSimState","getExistingTargetState","computeTargetState","failOrAccept","edges","reach","getReachableConfigSet","addDFAEdge","prediction","closure","skipAlt","cfg","currentAltReachedAcceptState","getTokenName","getReachableTarget","fixOffsetBeforeMatch","treatEofAsEpsilon","charPos","matches","initialContext","speculative","getEpsilonTarget","serializationType","predIndex","evaluatePredicate","savedcolumn","savedLine","tk","cfgs","proposed","firstConfigWithRuleStopState","newState","getDFA","curChar","tt","LexerAction","isPositionDependent","LexerIndexedCustomAction","updatedLexerActions","requiresSeek","stopIndex","numActions","PredPrediction","PredictionMode","NoViableAltException","ParserATNSimulator","predictionMode","LL","_startIndex","_outerContext","_dfa","debug_closure","debug_add","debug_list_atn_decisions","retry_debug","adaptivePredict","getLookaheadName","precedenceDfa","getPrecedenceStartState","atnStartState","applyPrecedenceFilter","setPrecedenceStartState","previousD","noViableAlt","getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule","requiresFullContext","SLL","predicates","conflictIndex","evalSemanticContext","reportAttemptingFullContext","execATNWithFullContext","alts","reportAmbiguity","computeReachSet","predictedAlt","getUniqueAlt","altSubSets","getConflictingAltSubsets","allSubsetsConflict","getConflictingAlts","hasSLLConflictTerminatingPrediction","predicateDFAState","decisionState","nalts","altsToCollectPredsFrom","getConflictingAltsOrUniqueAlt","altToPred","getPredsForAmbigAlts","getPredicatePredictions","foundExactAmbig","resolvesToJustOneViableAlt","LL_EXACT_AMBIG_DETECTION","allSubsetsEqual","getSingleViableAlt","reportContextSensitivity","intermediate","skippedStopStates","closureBusy","removeAllConfigsNotInRuleStopState","hasConfigInRuleStopState","lookToEndOfRule","allConfigsInRuleStopStates","endOfRuleState","statesFromAlt1","configSet","updatedContext","evalPrecedence","ambigAlts","orContext","nPredAlts","pred","pairs","containsPredicate","splitAccordingToSemanticValidity","semValidConfigs","semInvalidConfigs","getAltThatFinishedDecisionEntryRule","succeeded","failed","predicateEvaluationResult","evaluate","predPredictions","predictions","collectPredicates","initialDepth","closureCheckingStopState","getRuleName","closure_","parms","canDropLoopEntryEdgeInLeftRecursiveRule","continueCollecting","newDepth","numCtxs","decisionStartState","blockEndStateNum","blockEndState","returnStateNumber","returnStateTarget","ruleTransition","precedenceTransition","predTransition","actionTransition","currentPosition","predSucceeds","getPredicate","newSemCtx","andContext","isCtxDependent","altsets","getAlts","dumpDeadEndConfigs","nvae","decs","getDeadEndConfigs","neg","exact","dup","hasConflictingAltSet","hasStateAssociatedWithOneAlt","hasNonConflictingAltSet","configToAlts","getStateToAltMap","minAlt","opnds","Predicate","PrecedencePredicate","compareTo","filterPrecedencePredicates","operands","precedencePredicates","reduced","differs","evaluated","serializationTypes","label_","makeLabel","minVocabSymbol","maxVocabSymbol","ruleStart","DFASerializer","LexerDFASerializer","DFA","_states","precedenceState","setPrecedenceDfa","DFAStatesSet","sortedStates","serializer","buf","getStateString","getEdgeLabel","baseStateStr","getAltSet","ErrorListener","DiagnosticErrorListener","exactOnly","recognizer","getDecisionDescription","reportedAlts","offendingSymbol","delegates","Errors","InputMismatchException","FailedPredicateException","ParseCancellationException","ErrorStrategy","reportError","errorRecoveryMode","lastErrorIndex","lastErrorStates","endErrorCondition","beginErrorCondition","reportNoViableAlternative","reportInputMismatch","reportFailedPredicate","followSet","getErrorRecoverySet","consumeUntil","la","singleTokenDeletion","reportUnwantedToken","expecting","whatFollowsLoopIterationOrRule","startToken","escapeWSAndQuote","reportMissingToken","matchedSymbol","singleTokenInsertion","getMissingSymbol","currentSymbolType","currentState","expectingAtLL2","nextTokenType","currentSymbol","expectedTokenType","tokenText","current","lookback","recoverSet","follow","BailErrorStrategy","offendingState","deadEndConfigs","predicate","formatMessage","predicateIndex","codepointat","fromcodepoint","tree","$defineProperty","second","stringFromCharCode","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","isFinite","RangeError","SyntaxTree","ParseTree","ParseTreeVisitor","visit","getSymbol","ParseTreeWalker","walk","errorNode","getNodeText","res","getChildren","getAncestors","ancestors","findAllTokenNodes","findAllNodes","findAllRuleNodes","findTokens","_findAllNodes","descendants","globalScope","EXP_LIMIT","MAX_DIGITS","NUMERALS","LN10","PI","DEFAULTS","toExpNeg","toExpPos","minE","maxE","crypto","inexact","noConflict","quadrant","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","mathfloor","mathpow","isBinary","isHex","isOctal","isDecimal","LOG_BASE","MAX_SAFE_INTEGER","LN10_PRECISION","PI_PRECISION","absoluteValue","finalise","comparedTo","cmp","xdL","ydL","xd","yd","xs","ys","NaN","cosine","pr","rm","Ctor","sd","toLessThanHalfPi","cubeRoot","cbrt","rep","t3","t3plusx","isZero","digitsToString","toExponential","divide","dividedToIntegerBy","greaterThan","greaterThanOrEqualTo","hyperbolicCosine","cosh","taylorSeries","cosh2_x","d8","hyperbolicSine","sinh","sinh2_x","d5","d16","d20","hyperbolicTangent","tanh","inverseCosine","halfPi","isNeg","getPi","asin","inverseHyperbolicCosine","acosh","ln","inverseHyperbolicSine","asinh","inverseHyperbolicTangent","atanh","wpr","xsd","inverseSine","atan","inverseTangent","px","x2","isInteger","isInt","isPositive","isPos","lessThan","lessThanOrEqualTo","logarithm","isBase10","denominator","inf","num","arg","guard","naturalLogarithm","getLn10","checkRoundingDigits","sub","xe","xLTy","getBase10Exponent","naturalExponential","carry","unshift","getPrecision","sine","squareRoot","tangent","mul","rL","toBinary","toStringBinary","toDecimalPlaces","toDP","checkInt32","finiteToString","toFraction","maxD","d0","d1","d2","n0","n1","toHexadecimal","toHex","toNearest","toOctal","toPower","yn","intPow","toPrecision","toSignificantDigits","toSD","truncated","valueOf","toJSON","ws","indexOfLastWord","getZeroString","repeating","di","rd","convertBase","baseIn","baseOut","arrL","strL","cos2x","multiplyInteger","compare","aL","bL","subtract","logBase","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","sign","isTruncated","digits","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","ltgt","c0","numerator","x1","parseDecimal","parseOther","divisor","isFloat","sin2_x","isHyperbolic","pi","atan2","useDefaults","ps","getRandomValues","randomBytes","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","isDecimalInstance","hypot","log2","Uint32Array","copy","rPerc","thisObj","$container","containerOffset","containerWH","containerProps","directionConstraints","dims","exec","sameX","checkHoriz","sameY","checkVert","$all","furthest","checkX","checkY","onlyX","onlyY","compDist","Infinity","point1x","point1y","point2x","point2y","box","y1","y2","tolerance","hasEach2","each2","includeSelf","elem","$this","maxX1","minX2","maxY1","minY2","thisBox","intersectX","intersectY","distX","distY","distT","checkDirectionConstraints","dist","compMin","compMax","refBox","itemBox","constraints","point","pushStack","noGlobal","getProto","getPrototypeOf","class2type","hasOwn","fnToString","ObjectFunctionString","preservedScriptAttributes","noModule","DOMEval","doc","script","head","toType","init","rtrim","jquery","elems","prevObject","copyIsArray","deep","isReady","noop","proto","globalEval","isArrayLike","makeArray","invert","callbackInverse","callbackExpect","guid","Sizzle","Expr","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","attributes","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escaped","escapedWhitespace","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","disabledAncestor","addCombinator","dir","childNodes","els","nid","groups","newSelector","getElementsByClassName","qsa","setAttribute","toSelector","testContext","qsaError","cacheLength","markFunction","assert","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","hasCompare","subWindow","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","sortDetached","aup","ap","bp","elements","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","firstChild","nodeValue","selectors","relative","preFilter","excess","unquoted","nodeNameSelector","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","matched","matcher","unmatched","innerText","elemLang","hasFocus","tabIndex","selectedIndex","file","password","filters","parseOnly","soFar","preFilters","cached","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","compiled","unique","isXMLDoc","escapeSelector","until","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","contents","targets","sibling","contentDocument","rnothtmlwhite","createOptions","flag","Callbacks","firing","memory","fired","locked","firingIndex","fire","stopOnFalse","lock","fireWith","Identity","Thrower","ex","adoptValue","noValue","tuples","deferred","pipe","fns","newDefer","tuple","returned","notify","onFulfilled","onRejected","onProgress","special","that","mightThrow","notifyWith","process","exceptionHook","stackTrace","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","readyException","readyList","readyWait","wait","completed","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","letter","camelCase","acceptData","owner","Data","uid","configurable","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","dataAttr","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","defer","pnum","rcssNum","cssExpand","isHiddenWithinTree","swap","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","wrapMap","thead","col","tr","td","_default","optgroup","tbody","tfoot","colgroup","caption","th","getAll","setGlobalEval","refElements","rhtml","buildFragment","scripts","ignored","wrap","fragment","createDocumentFragment","createTextNode","htmlPrefilter","checkClone","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","origFn","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","delegateCount","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","noBubble","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","bubbles","cancelable","changedTouches","detail","eventPhase","metaKey","view","charCode","buttons","offsetX","offsetY","pointerId","screenX","screenY","targetTouches","toElement","pointerenter","pointerleave","orig","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","before","replaceChild","replaceAll","original","insert","rnumnonpx","getStyles","opener","rboxStyle","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","backgroundClip","clearCloneStyle","boxSizingReliable","pixelBoxStyles","pixelPosition","reliableMarginLeft","scrollboxSize","curCSS","computed","minWidth","maxWidth","addGetHookIf","conditionFn","hookFn","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","finalPropName","cssProps","setPositiveNumber","boxModelAdjustment","dimension","isBorderBox","styles","computedVal","extra","delta","getWidthOrHeight","valueIsBorderBox","cssHooks","origName","isCustomProp","getClientRects","border","prefix","suffix","expand","expanded","parts","Tween","propHooks","run","eased","step","fx","linear","swing","fxNow","inProgress","rfxtypes","rrun","schedule","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","properties","stopped","prefilters","currentTime","tweens","originalProperties","originalOptions","gotoEnd","tweener","prefilter","opt","speeds","optall","doAnimation","stopQueue","timers","cssFn","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","stripAndCollapse","getClass","classesToArray","classes","curValue","clazz","finalValue","stateVal","isValidValue","classNames","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","isTrigger","parentWindow","simulate","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","isSuccess","conv2","conv","responseFields","dataFilter","throws","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","statusText","finalText","crossDomain","hasContent","ifModified","nativeStatusText","modified","getJSON","getScript","firstElementChild","wrapInner","htmlIsFunction","unwrap","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","xhrFields","onabort","ontimeout","onreadystatechange","responseType","binary","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","parentOffset","Height","Width","defaultExtra","hover","fnOver","fnOut","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","lsKey","defaultLang","listeners","setupListener","registerLanguageChangeListener","notifyChange","setLang","service","i18nData","listenToChange","updateTagText","i18nObj","processString","processTagTex","noMore","useDirtyCheck","preserveExistingSetters","lengthsubjects","dirtyChecklist","pendingChanges","supportDefineProperty","functionToCheck","getType","isObject","getObjDiff","aplus","bplus","added","getExistingSetter","propName","getOwnPropertyDescriptor","defineGetAndSet","existingSetter","e1","__defineGetter__","__defineSetter__","e2","observeDirtyChanges","defineProp","watchAll","watchMany","watchOne","watcher","level","addNRemove","defineWatcher","pushToLengthSubjects","unwatch","unwatchAll","unwatchMany","unwatchOne","unwatchPropsInObject","obj2","prop2","timeouts","timerID","clearTimerID","getTimerID","registerTimeout","trackChange","trackProperty","trackObject","recursive","lastTimerID","isArr","newValue","splices","deleteCount","addedCount","deleted","newvalue","oldvalue","newWatcher","watchers","watchFunctions","addPendingChange","wAll","watchList","newval","delayWatcher","oldval","isSuspended","resume","callWatchers","wl","wr","methodNames","defineArrayMethodWatcher","methodName","removeFromLengthSubjects","removeFromDirtyChecklist","suspend","pendingTimerID","applyPendingChanges","loop","subj","difference","compareValues","notInUse","webpackPolyfill","deprecate","paths"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,OAAO,qBAAqB;AAC5B;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAsB;AACjE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,OAAO;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAc;;AAEvC,OAAO;AACP,Y;;;;;;;;;;;;;;;;;ACxfA;;kBAEe;AACbA,iBAAe,OADF;AAEbC,SAAO,MAFM;AAGbC,UAAQ,OAHK;AAIbC,gBAAc,mBAJD;AAKbC,gBAAc,gBALD;AAMbC,kBAAgB,kBANH;AAObC,cAAY,WAPC;AAQbC,WAAS,aARI;AASbC,cAAY,YATC;AAUbC,cAAY,aAVC;AAWbC,WAAS,SAXI;AAYbC,WAAS,SAZI;AAabC,UAAQ,YAbK;AAcbC,WAAS,UAdI;AAebC,aAAW,SAfE;AAgBbC,YAAU,YAhBG;AAiBbC,aAAW,UAjBE;AAkBbC,eAAa,WAlBA;AAmBbC,QAAM,KAnBO;AAoBbC,QAAM,KApBO;AAqBbC,QAAM,KArBO;AAsBbC,SAAO,MAtBM;AAuBbC,QAAM,KAvBO;AAwBbC,QAAM,KAxBO;AAyBbC,QAAM,KAzBO;AA0BbC,WAAS,QA1BI;AA2BbC,WAAS,QA3BI;AA4BbC,QAAM,SA5BO;AA6BbC,QAAM;;AA7BO,C;;;;;;;;;;;;;;;;;ACFf;;;kBAGe;AACbC,YAAU,YADG;AAEbC,UAAQ,IAFK;AAGbC,WAAS,OAHI;AAIbC,aAAW,SAJE;AAKbC,YAAU;AALG,C;;;;;;;;;;;ACHf;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,OAAO,qBAAqB;AAC5B;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB,gCAAgC;AACjE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,OAAO;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAc;;AAEvC,OAAO;AACP,Y;;;;;;;;;;;;;;;;;AChgBA;;kBAEe;AACbjC,iBAAe,QADF;AAEbC,SAAO,MAFM;AAGbC,UAAQ,SAHK;AAIbC,gBAAc,mBAJD;AAKbC,gBAAc,gBALD;AAMbC,kBAAgB,kBANH;AAObC,cAAY,WAPC;AAQbC,WAAS,aARI;AASbC,cAAY,YATC;AAUbC,cAAY,aAVC;AAWbC,WAAS,SAXI;AAYbC,WAAS,SAZI;AAabC,UAAQ,YAbK;AAcbC,WAAS,UAdI;AAebC,aAAW,SAfE;AAgBbC,YAAU,YAhBG;AAiBbC,aAAW,UAjBE;AAkBbC,eAAa,WAlBA;AAmBbC,QAAM,KAnBO;AAoBbC,QAAM,KApBO;AAqBbC,QAAM,KArBO;AAsBbC,SAAO,MAtBM;AAuBbC,QAAM,KAvBO;AAwBbC,QAAM,KAxBO;AAyBbC,QAAM,KAzBO;AA0BbC,WAAS,QA1BI;AA2BbC,WAAS,QA3BI;AA4BbC,QAAM,SA5BO;AA6BbC,QAAM;AA7BO,C;;;;;;;;;;;;;;;;;ACFf;;;kBAGe;AACbC,YAAU,YADG;AAEbC,UAAQ,IAFK;AAGbC,WAAS,OAHI;AAIbC,aAAW,SAJE;AAKbC,YAAU;AALG,C;;;;;;;;;;;;;;ACHf;;IAAYC,E;;AACZ;;;;AACA;;;;AACA;;IAAYC,E;;AACZ;;;;AACA;;;;AACA;;IAAYC,E;;AACZ;;;;AACA;;;;;;;;AAEAC,QAAQC,EAAR,GAAa,EAACC,OAAOL,GAAGM,MAAX,EAAmBC,WAAWC,uBAA9B,EAAuCC,UAAUC,kBAAjD,EAAb;AACAP,QAAQQ,EAAR,GAAa,EAACN,OAAOJ,GAAGK,MAAX,EAAmBC,WAAWK,uBAA9B,EAAuCH,UAAUI,kBAAjD,EAAb;AACAV,QAAQW,EAAR,GAAa,EAACT,OAAOH,GAAGI,MAAX,EAAmBC,WAAWQ,uBAA9B,EAAuCN,UAAUO,kBAAjD,EAAb,C;;;;;;;;;;;ACZA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,OAAO,qBAAqB;AAC5B;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB,gCAAgC;AACjE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,OAAO;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAc;;AAEvC,OAAO;AACP,Y;;;;;;;;;;;;;;;;;AChgBA;;kBAEe;AACblD,iBAAe,QADF;AAEbC,SAAO,MAFM;AAGbC,UAAQ,SAHK;AAIbC,gBAAc,oBAJD;AAKbC,gBAAc,iBALD;AAMbC,kBAAgB,kBANH;AAObC,cAAY,WAPC;AAQbC,WAAS,aARI;AASbC,cAAY,YATC;AAUbC,cAAY,aAVC;AAWbC,WAAS,SAXI;AAYbC,WAAS,QAZI;AAabC,UAAQ,WAbK;AAcbC,WAAS,UAdI;AAebC,aAAW,WAfE;AAgBbC,YAAU,cAhBG;AAiBbC,aAAW,aAjBE;AAkBbC,eAAa,aAlBA;AAmBbC,QAAM,MAnBO;AAoBbC,QAAM,SApBO;AAqBbC,QAAM,UArBO;AAsBbC,SAAO,eAtBM;AAuBbC,QAAM,UAvBO;AAwBbC,QAAM,WAxBO;AAyBbC,QAAM,QAzBO;AA0BbC,WAAS,cA1BI;AA2BbC,WAAS,gBA3BI;AA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;AACD,CAlBD;;AAoBA5W,QAAQy7G,mBAAR,GAA8BA,mBAA9B,C;;;;;;;;;;;;;;ACrKA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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AR,EAAsBqZ,SAAtC;AACA,IAAII,cAAczZ,mBAAOA,CAAC,kDAAR,EAAsByZ,WAAxC;;AAEA,SAAS8R,cAAT,GAA0B;AACzB,WAAO,IAAP;AACA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAA,eAAeuB,GAAf,GAAqB,CAArB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAvB,eAAeI,EAAf,GAAoB,CAApB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAJ,eAAeiD,wBAAf,GAA0C,CAA1C;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAjD,eAAesC,mCAAf,GAAqD,UAAUnmF,IAAV,EAAgBs0E,OAAhB,EAAyB;AAC1E;AACA;AACA;AACA;AACA;AACA,QAAIuP,eAAe2D,0BAAf,CAA0ClT,OAA1C,CAAJ,EAAwD;AACpD,eAAO,IAAP;AACH;AACD;AACA,QAAIt0E,SAAS6jF,eAAeuB,GAA5B,EAAiC;AAC7B;AACA;AACA;AACA,YAAI9Q,QAAQG,kBAAZ,EAAgC;AAC5B;AACA,gBAAIsW,MAAM,IAAI5W,YAAJ,EAAV;AACA,iBAAI,IAAIliG,IAAE,CAAV,EAAYA,IAAEqiG,QAAQn+F,KAAR,CAAcjE,MAA5B,EAAmCD,GAAnC,EAAwC;AACvC,oBAAIuiC,IAAI8/D,QAAQn+F,KAAR,CAAclE,CAAd,CAAR;AACGuiC,oBAAI,IAAI0pD,SAAJ,CAAc,EAACmV,iBAAgBH,gBAAgBO,IAAjC,EAAd,EAAsDj/D,CAAtD,CAAJ;AACAu2E,oBAAIlvE,GAAJ,CAAQrH,CAAR;AACH;AACD8/D,sBAAUyW,GAAV;AACH;AACD;AACH;AACD;AACA,QAAIR,UAAU1G,eAAemC,wBAAf,CAAwC1R,OAAxC,CAAd;AACA,WAAOuP,eAAemH,oBAAf,CAAoCT,OAApC,KAAgD,CAAC1G,eAAeoH,4BAAf,CAA4C3W,OAA5C,CAAxD;AACH,CA7BD;;AA+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAuP,eAAeyD,wBAAf,GAA0C,UAAShT,OAAT,EAAkB;AAC3D,SAAI,IAAIriG,IAAE,CAAV,EAAYA,IAAEqiG,QAAQn+F,KAAR,CAAcjE,MAA5B,EAAmCD,GAAnC,EAAwC;AACvC,YAAIuiC,IAAI8/D,QAAQn+F,KAAR,CAAclE,CAAd,CAAR;AACM,YAAIuiC,EAAEz9B,KAAF,YAAmBonF,aAAvB,EAAsC;AAClC,mBAAO,IAAP;AACH;AACP;AACE,WAAO,KAAP;AACH,CARD;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA0lB,eAAe2D,0BAAf,GAA4C,UAASlT,OAAT,EAAkB;AAC7D,SAAI,IAAIriG,IAAE,CAAV,EAAYA,IAAEqiG,QAAQn+F,KAAR,CAAcjE,MAA5B,EAAmCD,GAAnC,EAAwC;AACvC,YAAIuiC,IAAI8/D,QAAQn+F,KAAR,CAAclE,CAAd,CAAR;AACM,YAAI,EAAEuiC,EAAEz9B,KAAF,YAAmBonF,aAArB,CAAJ,EAAyC;AACrC,mBAAO,KAAP;AACH;AACP;AACE,WAAO,IAAP;AACH,CARD;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA0lB,eAAegD,0BAAf,GAA4C,UAAS0D,OAAT,EAAkB;AAC1D,WAAO1G,eAAemD,kBAAf,CAAkCuD,OAAlC,CAAP;AACH,CAFD;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA1G,eAAeoC,kBAAf,GAAoC,UAASsE,OAAT,EAAkB;AAClD,WAAO,CAAE1G,eAAeqH,uBAAf,CAAuCX,OAAvC,CAAT;AACH,CAFD;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA1G,eAAeqH,uBAAf,GAAyC,UAASX,OAAT,EAAkB;AAC1D,SAAI,IAAIt4G,IAAE,CAAV,EAAYA,IAAEs4G,QAAQr4G,MAAtB,EAA6BD,GAA7B,EAAkC;AACjC,YAAIyzG,OAAO6E,QAAQt4G,CAAR,CAAX;AACM,YAAIyzG,KAAKxzG,MAAL,KAAc,CAAlB,EAAqB;AACjB,mBAAO,IAAP;AACH;AACP;AACE,WAAO,KAAP;AACH,CARD;;AAUA;AACA;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1DA,QAAIA,EAAE78B,OAAF,CAAU,KAAV,EAAgB,KAAhB,CAAJ;AACA68B,QAAIA,EAAE78B,OAAF,CAAU,KAAV,EAAgB,KAAhB,CAAJ;AACA68B,QAAIA,EAAE78B,OAAF,CAAU,KAAV,EAAgB,KAAhB,CAAJ;AACA,WAAO,MAAM68B,CAAN,GAAU,GAAjB;AACH,CALD;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAmvD,qBAAqB50F,SAArB,CAA+B6/G,mBAA/B,GAAqD,UAASpB,UAAT,EAAqB;AACtE,QAAI1uB,MAAM0uB,WAAWvsB,OAAX,CAAmBnC,GAA7B;AACA,QAAI7nF,MAAMu2G,WAAWlpB,IAArB;AACA,QAAI4rB,aAAa,IAAIrzB,WAAJ,EAAjB;AACA,WAAO5lF,QAAQ,IAAR,IAAgBA,IAAIowF,aAAJ,IAAmB,CAA1C,EAA6C;AACzC;AACA,YAAIA,gBAAgBvI,IAAIiB,MAAJ,CAAW9oF,IAAIowF,aAAf,CAApB;AACA,YAAIwB,KAAKxB,cAAcpI,WAAd,CAA0B,CAA1B,CAAT;AACA,YAAIkxB,SAASrxB,IAAI8J,UAAJ,CAAeC,GAAGxI,WAAlB,CAAb;AACA6vB,mBAAW/yB,MAAX,CAAkBgzB,MAAlB;AACAl5G,cAAMA,IAAIwwF,SAAV;AACH;AACDyoB,eAAWzyB,SAAX,CAAqBnF,MAAM0F,OAA3B;AACA,WAAOk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","file":"ivprog.bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ivprogCore\"] = factory();\n\telse\n\t\troot[\"ivprogCore\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./js/main.js\");\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-10592bIDwoCTu8TO4/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u0002/\\u01d1\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\",\n \"\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0006\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\u000b\\u0003\\u000b\\u0003\",\n \"\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\",\n \"\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\",\n \"\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0011\\u0003\",\n \"\\u0011\\u0003\\u0011\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\\u0014\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003\",\n \"#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003&\\u0003&\\u0003&\\u0003&\\u0003\",\n \"&\\u0003&\\u0003&\\u0003&\\u0003&\\u0005&\\u0125\\n&\\u0003\\'\\u0003\\'\\u0003\",\n \"(\\u0003(\\u0003)\\u0003)\\u0007)\\u012d\\n)\\f)\\u000e)\\u0130\\u000b)\\u0003\",\n \"*\\u0003*\\u0003*\\u0003*\\u0003+\\u0006+\\u0137\\n+\\r+\\u000e+\\u0138\\u0003\",\n \"+\\u0003+\\u0003+\\u0003+\\u0005+\\u013f\\n+\\u0003+\\u0006+\\u0142\\n+\\r+\\u000e\",\n \"+\\u0143\\u0003+\\u0003+\\u0003+\\u0003+\\u0005+\\u014a\\n+\\u0003+\\u0006+\\u014d\",\n \"\\n+\\r+\\u000e+\\u014e\\u0005+\\u0151\\n+\\u0003,\\u0006,\\u0154\\n,\\r,\\u000e\",\n \",\\u0155\\u0003,\\u0003,\\u0006,\\u015a\\n,\\r,\\u000e,\\u015b\\u0003,\\u0006,\",\n \"\\u015f\\n,\\r,\\u000e,\\u0160\\u0003,\\u0003,\\u0007,\\u0165\\n,\\f,\\u000e,\\u0168\",\n \"\\u000b,\\u0003,\\u0005,\\u016b\\n,\\u0003-\\u0003-\\u0005-\\u016f\\n-\\u0003-\",\n \"\\u0006-\\u0172\\n-\\r-\\u000e-\\u0173\\u0003.\\u0003.\\u0007.\\u0178\\n.\\f.\\u000e\",\n \".\\u017b\\u000b.\\u0003.\\u0003.\\u0003/\\u0003/\\u0005/\\u0181\\n/\\u00030\\u0003\",\n \"0\\u00030\\u00050\\u0186\\n0\\u00030\\u00030\\u00031\\u00031\\u00031\\u00031\\u0003\",\n \"2\\u00032\\u00033\\u00063\\u0191\\n3\\r3\\u000e3\\u0192\\u00033\\u00053\\u0196\",\n \"\\n3\\u00034\\u00034\\u00035\\u00035\\u00036\\u00036\\u00036\\u00036\\u00056\\u01a0\",\n \"\\n6\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u0003\",\n \"7\\u00037\\u00057\\u01ad\\n7\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u0003\",\n \"8\\u00039\\u00039\\u00039\\u00039\\u00079\\u01ba\\n9\\f9\\u000e9\\u01bd\\u000b\",\n \"9\\u00039\\u00059\\u01c0\\n9\\u00039\\u00039\\u00039\\u00039\\u00039\\u00079\\u01c7\",\n \"\\n9\\f9\\u000e9\\u01ca\\u000b9\\u00039\\u00039\\u00059\\u01ce\\n9\\u00039\\u0003\",\n \"9\\u0003\\u01c8\\u0002:\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\\t\\u0006\\u000b\",\n \"\\u0007\\r\\b\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\\u0019\\u000e\\u001b\",\n \"\\u000f\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\\'\\u0015)\\u0016+\",\n \"\\u0017-\\u0002/\\u00021\\u00023\\u00185\\u00197\\u001a9\\u001b;\\u001c=\\u001d\",\n \"?\\u001eA\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y\\u0002[+]\\u0002_,a-c\\u0002e.\",\n \"g\\u0002i\\u0002k\\u0002m\\u0002o\\u0002q/\\u0003\\u0002\\u0012\\u0004\\u0002\",\n \"--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\aac|\\u0006\\u0002\",\n \"2;C\\\\aac|\\u0003\\u00022;\\u0003\\u000223\\u0004\\u0002GGgg\\u0006\\u0002\\f\",\n \"\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\\u000f))^^\\u0004\\u0002\\u000b\",\n \"\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\\u00022;CHch\\u0003\\u0002\",\n \"29\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\\u01e5\\u0002\\u0003\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\\u0002\\u0007\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\\u0002\\u000b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\\u0002\\u000f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\\u0013\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\\u0017\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\\u001b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\\u001f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002#\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"7\\u0003\\u0002\\u0002\\u0002\\u00029\\u0003\\u0002\\u0002\\u0002\\u0002;\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002=\\u0003\\u0002\\u0002\\u0002\\u0002?\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\\u0002Q\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002U\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002[\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002e\\u0003\\u0002\\u0002\\u0002\\u0002q\\u0003\\u0002\\u0002\\u0002\\u0003\",\n \"s\\u0003\\u0002\\u0002\\u0002\\u0005{\\u0003\\u0002\\u0002\\u0002\\u0007\\u0080\",\n \"\\u0003\\u0002\\u0002\\u0002\\t\\u0085\\u0003\\u0002\\u0002\\u0002\\u000b\\u008d\",\n \"\\u0003\\u0002\\u0002\\u0002\\r\\u0094\\u0003\\u0002\\u0002\\u0002\\u000f\\u009c\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0011\\u00a6\\u0003\\u0002\\u0002\\u0002\\u0013\\u00ad\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0015\\u00b2\\u0003\\u0002\\u0002\\u0002\\u0017\\u00bc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0019\\u00c2\\u0003\\u0002\\u0002\\u0002\\u001b\\u00cb\",\n \"\\u0003\\u0002\\u0002\\u0002\\u001d\\u00d2\\u0003\\u0002\\u0002\\u0002\\u001f\\u00d6\",\n \"\\u0003\\u0002\\u0002\\u0002!\\u00dc\\u0003\\u0002\\u0002\\u0002#\\u00df\\u0003\",\n \"\\u0002\\u0002\\u0002%\\u00e5\\u0003\\u0002\\u0002\\u0002\\'\\u00e8\\u0003\\u0002\",\n \"\\u0002\\u0002)\\u00ed\\u0003\\u0002\\u0002\\u0002+\\u00f3\\u0003\\u0002\\u0002\",\n \"\\u0002-\\u00f8\\u0003\\u0002\\u0002\\u0002/\\u00fc\\u0003\\u0002\\u0002\\u0002\",\n \"1\\u0100\\u0003\\u0002\\u0002\\u00023\\u0103\\u0003\\u0002\\u0002\\u00025\\u0105\",\n \"\\u0003\\u0002\\u0002\\u00027\\u0107\\u0003\\u0002\\u0002\\u00029\\u0109\\u0003\",\n \"\\u0002\\u0002\\u0002;\\u010b\\u0003\\u0002\\u0002\\u0002=\\u010d\\u0003\\u0002\",\n \"\\u0002\\u0002?\\u010f\\u0003\\u0002\\u0002\\u0002A\\u0111\\u0003\\u0002\\u0002\",\n \"\\u0002C\\u0113\\u0003\\u0002\\u0002\\u0002E\\u0115\\u0003\\u0002\\u0002\\u0002\",\n \"G\\u0117\\u0003\\u0002\\u0002\\u0002I\\u0119\\u0003\\u0002\\u0002\\u0002K\\u0124\",\n \"\\u0003\\u0002\\u0002\\u0002M\\u0126\\u0003\\u0002\\u0002\\u0002O\\u0128\\u0003\",\n \"\\u0002\\u0002\\u0002Q\\u012a\\u0003\\u0002\\u0002\\u0002S\\u0131\\u0003\\u0002\",\n \"\\u0002\\u0002U\\u0150\\u0003\\u0002\\u0002\\u0002W\\u016a\\u0003\\u0002\\u0002\",\n \"\\u0002Y\\u016c\\u0003\\u0002\\u0002\\u0002[\\u0175\\u0003\\u0002\\u0002\\u0002\",\n \"]\\u0180\\u0003\\u0002\\u0002\\u0002_\\u0182\\u0003\\u0002\\u0002\\u0002a\\u0189\",\n \"\\u0003\\u0002\\u0002\\u0002c\\u018d\\u0003\\u0002\\u0002\\u0002e\\u0195\\u0003\",\n \"\\u0002\\u0002\\u0002g\\u0197\\u0003\\u0002\\u0002\\u0002i\\u0199\\u0003\\u0002\",\n \"\\u0002\\u0002k\\u019f\\u0003\\u0002\\u0002\\u0002m\\u01ac\\u0003\\u0002\\u0002\",\n \"\\u0002o\\u01ae\\u0003\\u0002\\u0002\\u0002q\\u01cd\\u0003\\u0002\\u0002\\u0002\",\n \"st\\u0007r\\u0002\\u0002tu\\u0007t\\u0002\\u0002uv\\u0007q\\u0002\\u0002vw\\u0007\",\n \"i\\u0002\\u0002wx\\u0007t\\u0002\\u0002xy\\u0007c\\u0002\\u0002yz\\u0007o\\u0002\",\n \"\\u0002z\\u0004\\u0003\\u0002\\u0002\\u0002{|\\u0007t\\u0002\\u0002|}\\u0007g\",\n \"\\u0002\\u0002}~\\u0007c\\u0002\\u0002~\\u007f\\u0007n\\u0002\\u0002\\u007f\\u0006\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0080\\u0081\\u0007x\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007q\\u0002\\u0002\\u0082\\u0083\\u0007k\\u0002\\u0002\\u0083\\u0084\\u0007\",\n \"f\\u0002\\u0002\\u0084\\b\\u0003\\u0002\\u0002\\u0002\\u0085\\u0086\\u0007d\\u0002\",\n \"\\u0002\\u0086\\u0087\\u0007q\\u0002\\u0002\\u0087\\u0088\\u0007q\\u0002\\u0002\",\n \"\\u0088\\u0089\\u0007n\\u0002\\u0002\\u0089\\u008a\\u0007g\\u0002\\u0002\\u008a\",\n \"\\u008b\\u0007c\\u0002\\u0002\\u008b\\u008c\\u0007p\\u0002\\u0002\\u008c\\n\\u0003\",\n \"\\u0002\\u0002\\u0002\\u008d\\u008e\\u0007u\\u0002\\u0002\\u008e\\u008f\\u0007\",\n \"v\\u0002\\u0002\\u008f\\u0090\\u0007t\\u0002\\u0002\\u0090\\u0091\\u0007k\\u0002\",\n \"\\u0002\\u0091\\u0092\\u0007p\\u0002\\u0002\\u0092\\u0093\\u0007i\\u0002\\u0002\",\n \"\\u0093\\f\\u0003\\u0002\\u0002\\u0002\\u0094\\u0095\\u0007k\\u0002\\u0002\\u0095\",\n \"\\u0096\\u0007p\\u0002\\u0002\\u0096\\u0097\\u0007v\\u0002\\u0002\\u0097\\u0098\",\n \"\\u0007g\\u0002\\u0002\\u0098\\u0099\\u0007i\\u0002\\u0002\\u0099\\u009a\\u0007\",\n \"g\\u0002\\u0002\\u009a\\u009b\\u0007t\\u0002\\u0002\\u009b\\u000e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u009c\\u009d\\u0007e\\u0002\\u0002\\u009d\\u009e\\u0007j\\u0002\",\n \"\\u0002\\u009e\\u009f\\u0007c\\u0002\\u0002\\u009f\\u00a0\\u0007t\\u0002\\u0002\",\n \"\\u00a0\\u00a1\\u0007c\\u0002\\u0002\\u00a1\\u00a2\\u0007e\\u0002\\u0002\\u00a2\",\n \"\\u00a3\\u0007v\\u0002\\u0002\\u00a3\\u00a4\\u0007g\\u0002\\u0002\\u00a4\\u00a5\",\n \"\\u0007t\\u0002\\u0002\\u00a5\\u0010\\u0003\\u0002\\u0002\\u0002\\u00a6\\u00a7\",\n \"\\u0007u\\u0002\\u0002\\u00a7\\u00a8\\u0007y\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"k\\u0002\\u0002\\u00a9\\u00aa\\u0007v\\u0002\\u0002\\u00aa\\u00ab\\u0007e\\u0002\",\n \"\\u0002\\u00ab\\u00ac\\u0007j\\u0002\\u0002\\u00ac\\u0012\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00ad\\u00ae\\u0007e\\u0002\\u0002\\u00ae\\u00af\\u0007c\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007u\\u0002\\u0002\\u00b0\\u00b1\\u0007g\\u0002\\u0002\\u00b1\",\n \"\\u0014\\u0003\\u0002\\u0002\\u0002\\u00b2\\u00b3\\u0007q\\u0002\\u0002\\u00b3\",\n \"\\u00b4\\u0007v\\u0002\\u0002\\u00b4\\u00b5\\u0007j\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007g\\u0002\\u0002\\u00b6\\u00b7\\u0007t\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"y\\u0002\\u0002\\u00b8\\u00b9\\u0007k\\u0002\\u0002\\u00b9\\u00ba\\u0007u\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007g\\u0002\\u0002\\u00bb\\u0016\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00bc\\u00bd\\u0007e\\u0002\\u0002\\u00bd\\u00be\\u0007q\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007p\\u0002\\u0002\\u00bf\\u00c0\\u0007u\\u0002\\u0002\\u00c0\",\n \"\\u00c1\\u0007v\\u0002\\u0002\\u00c1\\u0018\\u0003\\u0002\\u0002\\u0002\\u00c2\",\n \"\\u00c3\\u0007h\\u0002\\u0002\\u00c3\\u00c4\\u0007w\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007p\\u0002\\u0002\\u00c5\\u00c6\\u0007e\\u0002\\u0002\\u00c6\\u00c7\\u0007\",\n \"v\\u0002\\u0002\\u00c7\\u00c8\\u0007k\\u0002\\u0002\\u00c8\\u00c9\\u0007q\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007p\\u0002\\u0002\\u00ca\\u001a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00cb\\u00cc\\u0007t\\u0002\\u0002\\u00cc\\u00cd\\u0007g\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007v\\u0002\\u0002\\u00ce\\u00cf\\u0007w\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007t\\u0002\\u0002\\u00d0\\u00d1\\u0007p\\u0002\\u0002\\u00d1\\u001c\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00d2\\u00d3\\u0007h\\u0002\\u0002\\u00d3\\u00d4\",\n \"\\u0007q\\u0002\\u0002\\u00d4\\u00d5\\u0007t\\u0002\\u0002\\u00d5\\u001e\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00d6\\u00d7\\u0007d\\u0002\\u0002\\u00d7\\u00d8\\u0007\",\n \"t\\u0002\\u0002\\u00d8\\u00d9\\u0007g\\u0002\\u0002\\u00d9\\u00da\\u0007c\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007m\\u0002\\u0002\\u00db \\u0003\\u0002\\u0002\\u0002\",\n \"\\u00dc\\u00dd\\u0007f\\u0002\\u0002\\u00dd\\u00de\\u0007q\\u0002\\u0002\\u00de\",\n \"\\\"\\u0003\\u0002\\u0002\\u0002\\u00df\\u00e0\\u0007y\\u0002\\u0002\\u00e0\\u00e1\",\n \"\\u0007j\\u0002\\u0002\\u00e1\\u00e2\\u0007k\\u0002\\u0002\\u00e2\\u00e3\\u0007\",\n \"n\\u0002\\u0002\\u00e3\\u00e4\\u0007g\\u0002\\u0002\\u00e4$\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00e5\\u00e6\\u0007k\\u0002\\u0002\\u00e6\\u00e7\\u0007h\\u0002\\u0002\",\n \"\\u00e7&\\u0003\\u0002\\u0002\\u0002\\u00e8\\u00e9\\u0007g\\u0002\\u0002\\u00e9\",\n \"\\u00ea\\u0007n\\u0002\\u0002\\u00ea\\u00eb\\u0007u\\u0002\\u0002\\u00eb\\u00ec\",\n \"\\u0007g\\u0002\\u0002\\u00ec(\\u0003\\u0002\\u0002\\u0002\\u00ed\\u00ee\\u0007\",\n \"h\\u0002\\u0002\\u00ee\\u00ef\\u0007c\\u0002\\u0002\\u00ef\\u00f0\\u0007n\\u0002\",\n \"\\u0002\\u00f0\\u00f1\\u0007u\\u0002\\u0002\\u00f1\\u00f2\\u0007g\\u0002\\u0002\",\n \"\\u00f2*\\u0003\\u0002\\u0002\\u0002\\u00f3\\u00f4\\u0007v\\u0002\\u0002\\u00f4\",\n \"\\u00f5\\u0007t\\u0002\\u0002\\u00f5\\u00f6\\u0007w\\u0002\\u0002\\u00f6\\u00f7\",\n \"\\u0007g\\u0002\\u0002\\u00f7,\\u0003\\u0002\\u0002\\u0002\\u00f8\\u00f9\\u0007\",\n \"p\\u0002\\u0002\\u00f9\\u00fa\\u0007q\\u0002\\u0002\\u00fa\\u00fb\\u0007v\\u0002\",\n \"\\u0002\\u00fb.\\u0003\\u0002\\u0002\\u0002\\u00fc\\u00fd\\u0007C\\u0002\\u0002\",\n \"\\u00fd\\u00fe\\u0007P\\u0002\\u0002\\u00fe\\u00ff\\u0007F\\u0002\\u0002\\u00ff\",\n \"0\\u0003\\u0002\\u0002\\u0002\\u0100\\u0101\\u0007Q\\u0002\\u0002\\u0101\\u0102\",\n \"\\u0007T\\u0002\\u0002\\u01022\\u0003\\u0002\\u0002\\u0002\\u0103\\u0104\\u0007\",\n \"*\\u0002\\u0002\\u01044\\u0003\\u0002\\u0002\\u0002\\u0105\\u0106\\u0007+\\u0002\",\n \"\\u0002\\u01066\\u0003\\u0002\\u0002\\u0002\\u0107\\u0108\\u0007]\\u0002\\u0002\",\n \"\\u01088\\u0003\\u0002\\u0002\\u0002\\u0109\\u010a\\u0007_\\u0002\\u0002\\u010a\",\n \":\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\\u0007}\\u0002\\u0002\\u010c<\\u0003\",\n \"\\u0002\\u0002\\u0002\\u010d\\u010e\\u0007\\u007f\\u0002\\u0002\\u010e>\\u0003\",\n \"\\u0002\\u0002\\u0002\\u010f\\u0110\\u0007.\\u0002\\u0002\\u0110@\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0111\\u0112\\u0007?\\u0002\\u0002\\u0112B\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0113\\u0114\\t\\u0002\\u0002\\u0002\\u0114D\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0115\\u0116\\t\\u0003\\u0002\\u0002\\u0116F\\u0003\\u0002\\u0002\\u0002\\u0117\",\n \"\\u0118\\u0005/\\u0018\\u0002\\u0118H\\u0003\\u0002\\u0002\\u0002\\u0119\\u011a\",\n \"\\u00051\\u0019\\u0002\\u011aJ\\u0003\\u0002\\u0002\\u0002\\u011b\\u011c\\u0007\",\n \"@\\u0002\\u0002\\u011c\\u0125\\u0007?\\u0002\\u0002\\u011d\\u011e\\u0007?\\u0002\",\n \"\\u0002\\u011e\\u0125\\u0007?\\u0002\\u0002\\u011f\\u0120\\u0007>\\u0002\\u0002\",\n \"\\u0120\\u0125\\u0007?\\u0002\\u0002\\u0121\\u0125\\t\\u0004\\u0002\\u0002\\u0122\",\n \"\\u0123\\u0007#\\u0002\\u0002\\u0123\\u0125\\u0007?\\u0002\\u0002\\u0124\\u011b\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0124\\u011d\\u0003\\u0002\\u0002\\u0002\\u0124\\u011f\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0124\\u0121\\u0003\\u0002\\u0002\\u0002\\u0124\\u0122\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0125L\\u0003\\u0002\\u0002\\u0002\\u0126\\u0127\",\n \"\\u0007<\\u0002\\u0002\\u0127N\\u0003\\u0002\\u0002\\u0002\\u0128\\u0129\\u0005\",\n \"-\\u0017\\u0002\\u0129P\\u0003\\u0002\\u0002\\u0002\\u012a\\u012e\\t\\u0005\\u0002\",\n \"\\u0002\\u012b\\u012d\\t\\u0006\\u0002\\u0002\\u012c\\u012b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u012d\\u0130\\u0003\\u0002\\u0002\\u0002\\u012e\\u012c\\u0003\\u0002\\u0002\",\n \"\\u0002\\u012e\\u012f\\u0003\\u0002\\u0002\\u0002\\u012fR\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0130\\u012e\\u0003\\u0002\\u0002\\u0002\\u0131\\u0132\\u0005Q)\\u0002\",\n \"\\u0132\\u0133\\u00070\\u0002\\u0002\\u0133\\u0134\\u0005Q)\\u0002\\u0134T\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0135\\u0137\\t\\u0007\\u0002\\u0002\\u0136\\u0135\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0137\\u0138\\u0003\\u0002\\u0002\\u0002\\u0138\\u0136\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0138\\u0139\\u0003\\u0002\\u0002\\u0002\\u0139\\u0151\\u0003\",\n \"\\u0002\\u0002\\u0002\\u013a\\u013b\\u00072\\u0002\\u0002\\u013b\\u013f\\u0007\",\n \"z\\u0002\\u0002\\u013c\\u013d\\u00072\\u0002\\u0002\\u013d\\u013f\\u0007Z\\u0002\",\n \"\\u0002\\u013e\\u013a\\u0003\\u0002\\u0002\\u0002\\u013e\\u013c\\u0003\\u0002\\u0002\",\n \"\\u0002\\u013f\\u0141\\u0003\\u0002\\u0002\\u0002\\u0140\\u0142\\u0005g4\\u0002\",\n \"\\u0141\\u0140\\u0003\\u0002\\u0002\\u0002\\u0142\\u0143\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0143\\u0141\\u0003\\u0002\\u0002\\u0002\\u0143\\u0144\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0144\\u0151\\u0003\\u0002\\u0002\\u0002\\u0145\\u0146\\u00072\\u0002\\u0002\",\n \"\\u0146\\u014a\\u0007d\\u0002\\u0002\\u0147\\u0148\\u00072\\u0002\\u0002\\u0148\",\n \"\\u014a\\u0007D\\u0002\\u0002\\u0149\\u0145\\u0003\\u0002\\u0002\\u0002\\u0149\",\n \"\\u0147\\u0003\\u0002\\u0002\\u0002\\u014a\\u014c\\u0003\\u0002\\u0002\\u0002\\u014b\",\n \"\\u014d\\t\\b\\u0002\\u0002\\u014c\\u014b\\u0003\\u0002\\u0002\\u0002\\u014d\\u014e\",\n \"\\u0003\\u0002\\u0002\\u0002\\u014e\\u014c\\u0003\\u0002\\u0002\\u0002\\u014e\\u014f\",\n \"\\u0003\\u0002\\u0002\\u0002\\u014f\\u0151\\u0003\\u0002\\u0002\\u0002\\u0150\\u0136\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0150\\u013e\\u0003\\u0002\\u0002\\u0002\\u0150\\u0149\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0151V\\u0003\\u0002\\u0002\\u0002\\u0152\\u0154\",\n \"\\t\\u0007\\u0002\\u0002\\u0153\\u0152\\u0003\\u0002\\u0002\\u0002\\u0154\\u0155\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0155\\u0153\\u0003\\u0002\\u0002\\u0002\\u0155\\u0156\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0156\\u0157\\u0003\\u0002\\u0002\\u0002\\u0157\\u0159\",\n \"\\u00070\\u0002\\u0002\\u0158\\u015a\\t\\u0007\\u0002\\u0002\\u0159\\u0158\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015a\\u015b\\u0003\\u0002\\u0002\\u0002\\u015b\\u0159\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015b\\u015c\\u0003\\u0002\\u0002\\u0002\\u015c\\u016b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015d\\u015f\\t\\u0007\\u0002\\u0002\\u015e\\u015d\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015f\\u0160\\u0003\\u0002\\u0002\\u0002\\u0160\\u015e\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0160\\u0161\\u0003\\u0002\\u0002\\u0002\\u0161\\u0162\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0162\\u0166\\u00070\\u0002\\u0002\\u0163\\u0165\\t\\u0007\",\n \"\\u0002\\u0002\\u0164\\u0163\\u0003\\u0002\\u0002\\u0002\\u0165\\u0168\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0166\\u0164\\u0003\\u0002\\u0002\\u0002\\u0166\\u0167\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0167\\u0169\\u0003\\u0002\\u0002\\u0002\\u0168\\u0166\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0169\\u016b\\u0005Y-\\u0002\\u016a\\u0153\\u0003\\u0002\\u0002\",\n \"\\u0002\\u016a\\u015e\\u0003\\u0002\\u0002\\u0002\\u016bX\\u0003\\u0002\\u0002\",\n \"\\u0002\\u016c\\u016e\\t\\t\\u0002\\u0002\\u016d\\u016f\\t\\u0002\\u0002\\u0002\\u016e\",\n \"\\u016d\\u0003\\u0002\\u0002\\u0002\\u016e\\u016f\\u0003\\u0002\\u0002\\u0002\\u016f\",\n \"\\u0171\\u0003\\u0002\\u0002\\u0002\\u0170\\u0172\\t\\u0007\\u0002\\u0002\\u0171\",\n \"\\u0170\\u0003\\u0002\\u0002\\u0002\\u0172\\u0173\\u0003\\u0002\\u0002\\u0002\\u0173\",\n \"\\u0171\\u0003\\u0002\\u0002\\u0002\\u0173\\u0174\\u0003\\u0002\\u0002\\u0002\\u0174\",\n \"Z\\u0003\\u0002\\u0002\\u0002\\u0175\\u0179\\u0007$\\u0002\\u0002\\u0176\\u0178\",\n \"\\u0005]/\\u0002\\u0177\\u0176\\u0003\\u0002\\u0002\\u0002\\u0178\\u017b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0179\\u0177\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u0003\",\n \"\\u0002\\u0002\\u0002\\u017a\\u017c\\u0003\\u0002\\u0002\\u0002\\u017b\\u0179\\u0003\",\n \"\\u0002\\u0002\\u0002\\u017c\\u017d\\u0007$\\u0002\\u0002\\u017d\\\\\\u0003\\u0002\",\n \"\\u0002\\u0002\\u017e\\u0181\\n\\n\\u0002\\u0002\\u017f\\u0181\\u0005k6\\u0002\\u0180\",\n \"\\u017e\\u0003\\u0002\\u0002\\u0002\\u0180\\u017f\\u0003\\u0002\\u0002\\u0002\\u0181\",\n \"^\\u0003\\u0002\\u0002\\u0002\\u0182\\u0185\\u0007)\\u0002\\u0002\\u0183\\u0186\",\n \"\\u0005k6\\u0002\\u0184\\u0186\\n\\u000b\\u0002\\u0002\\u0185\\u0183\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0185\\u0184\\u0003\\u0002\\u0002\\u0002\\u0186\\u0187\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0187\\u0188\\u0007)\\u0002\\u0002\\u0188`\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0189\\u018a\\t\\f\\u0002\\u0002\\u018a\\u018b\\u0003\\u0002\\u0002\\u0002\",\n \"\\u018b\\u018c\\b1\\u0002\\u0002\\u018cb\\u0003\\u0002\\u0002\\u0002\\u018d\\u018e\",\n \"\\u0007=\\u0002\\u0002\\u018ed\\u0003\\u0002\\u0002\\u0002\\u018f\\u0191\\t\\r\\u0002\",\n \"\\u0002\\u0190\\u018f\\u0003\\u0002\\u0002\\u0002\\u0191\\u0192\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0192\\u0190\\u0003\\u0002\\u0002\\u0002\\u0192\\u0193\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0193\\u0196\\u0003\\u0002\\u0002\\u0002\\u0194\\u0196\\u0005c2\\u0002\",\n \"\\u0195\\u0190\\u0003\\u0002\\u0002\\u0002\\u0195\\u0194\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0196f\\u0003\\u0002\\u0002\\u0002\\u0197\\u0198\\t\\u000e\\u0002\\u0002\\u0198\",\n \"h\\u0003\\u0002\\u0002\\u0002\\u0199\\u019a\\t\\u000f\\u0002\\u0002\\u019aj\\u0003\",\n \"\\u0002\\u0002\\u0002\\u019b\\u019c\\u0007^\\u0002\\u0002\\u019c\\u01a0\\t\\u0010\",\n \"\\u0002\\u0002\\u019d\\u01a0\\u0005o8\\u0002\\u019e\\u01a0\\u0005m7\\u0002\\u019f\",\n \"\\u019b\\u0003\\u0002\\u0002\\u0002\\u019f\\u019d\\u0003\\u0002\\u0002\\u0002\\u019f\",\n \"\\u019e\\u0003\\u0002\\u0002\\u0002\\u01a0l\\u0003\\u0002\\u0002\\u0002\\u01a1\",\n \"\\u01a2\\u0007^\\u0002\\u0002\\u01a2\\u01a3\\t\\u0011\\u0002\\u0002\\u01a3\\u01a4\",\n \"\\u0005i5\\u0002\\u01a4\\u01a5\\u0005i5\\u0002\\u01a5\\u01ad\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01a6\\u01a7\\u0007^\\u0002\\u0002\\u01a7\\u01a8\\u0005i5\\u0002\\u01a8\",\n \"\\u01a9\\u0005i5\\u0002\\u01a9\\u01ad\\u0003\\u0002\\u0002\\u0002\\u01aa\\u01ab\",\n \"\\u0007^\\u0002\\u0002\\u01ab\\u01ad\\u0005i5\\u0002\\u01ac\\u01a1\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01ac\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01ac\\u01aa\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01adn\\u0003\\u0002\\u0002\\u0002\\u01ae\\u01af\\u0007^\\u0002\",\n \"\\u0002\\u01af\\u01b0\\u0007w\\u0002\\u0002\\u01b0\\u01b1\\u0005g4\\u0002\\u01b1\",\n \"\\u01b2\\u0005g4\\u0002\\u01b2\\u01b3\\u0005g4\\u0002\\u01b3\\u01b4\\u0005g4\\u0002\",\n \"\\u01b4p\\u0003\\u0002\\u0002\\u0002\\u01b5\\u01b6\\u00071\\u0002\\u0002\\u01b6\",\n \"\\u01b7\\u00071\\u0002\\u0002\\u01b7\\u01bb\\u0003\\u0002\\u0002\\u0002\\u01b8\",\n \"\\u01ba\\n\\r\\u0002\\u0002\\u01b9\\u01b8\\u0003\\u0002\\u0002\\u0002\\u01ba\\u01bd\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01bb\\u01b9\\u0003\\u0002\\u0002\\u0002\\u01bb\\u01bc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01bc\\u01bf\\u0003\\u0002\\u0002\\u0002\\u01bd\\u01bb\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01be\\u01c0\\u0007\\u000f\\u0002\\u0002\\u01bf\\u01be\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01bf\\u01c0\\u0003\\u0002\\u0002\\u0002\\u01c0\\u01c1\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c1\\u01ce\\u0007\\f\\u0002\\u0002\\u01c2\\u01c3\",\n \"\\u00071\\u0002\\u0002\\u01c3\\u01c4\\u0007,\\u0002\\u0002\\u01c4\\u01c8\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01c5\\u01c7\\u000b\\u0002\\u0002\\u0002\\u01c6\\u01c5\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01c7\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01c8\\u01c9\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01c8\\u01c6\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cb\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01ca\\u01c8\\u0003\\u0002\\u0002\\u0002\\u01cb\\u01cc\\u0007\",\n \",\\u0002\\u0002\\u01cc\\u01ce\\u00071\\u0002\\u0002\\u01cd\\u01b5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01cd\\u01c2\\u0003\\u0002\\u0002\\u0002\\u01ce\\u01cf\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01cf\\u01d0\\b9\\u0003\\u0002\\u01d0r\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001d\\u0002\\u0124\\u012e\\u0138\\u013e\\u0143\\u0149\\u014e\\u0150\\u0155\\u015b\",\n \"\\u0160\\u0166\\u016a\\u016e\\u0173\\u0179\\u0180\\u0185\\u0192\\u0195\\u019f\\u01ac\",\n \"\\u01bb\\u01bf\\u01c8\\u01cd\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_BREAK = 15;\nivprog.RK_DO = 16;\nivprog.RK_WHILE = 17;\nivprog.RK_IF = 18;\nivprog.RK_ELSE = 19;\nivprog.RK_FALSE = 20;\nivprog.RK_TRUE = 21;\nivprog.OPEN_PARENTHESIS = 22;\nivprog.CLOSE_PARENTHESIS = 23;\nivprog.OPEN_BRACE = 24;\nivprog.CLOSE_BRACE = 25;\nivprog.OPEN_CURLY = 26;\nivprog.CLOSE_CURLY = 27;\nivprog.COMMA = 28;\nivprog.EQUAL = 29;\nivprog.SUM_OP = 30;\nivprog.MULTI_OP = 31;\nivprog.AND_OPERATOR = 32;\nivprog.OR_OPERATOR = 33;\nivprog.RELATIONAL_OPERATOR = 34;\nivprog.COLON = 35;\nivprog.NOT_OPERATOR = 36;\nivprog.ID = 37;\nivprog.LIB_ID = 38;\nivprog.INTEGER = 39;\nivprog.REAL = 40;\nivprog.STRING = 41;\nivprog.CHARACTER = 42;\nivprog.WHITESPACE = 43;\nivprog.EOS = 44;\nivprog.COMMENTS = 45;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'program'\", \"'real'\", \"'void'\", \n \"'boolean'\", \"'string'\", \"'integer'\", \n \"'character'\", \"'switch'\", \"'case'\", \"'otherwise'\", \n \"'const'\", \"'function'\", \"'return'\", \"'for'\", \n \"'break'\", \"'do'\", \"'while'\", \"'if'\", \n \"'else'\", \"'false'\", \"'true'\", \"'('\", \n \"')'\", \"'['\", \"']'\", \"'{'\", \"'}'\", \"','\", \n \"'='\", null, null, null, null, null, \"':'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \"RK_DO\", \n \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"OPEN_PARENTHESIS\", \"CLOSE_PARENTHESIS\", \n \"OPEN_BRACE\", \"CLOSE_BRACE\", \"OPEN_CURLY\", \n \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \"SUM_OP\", \n \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"STRING\", \n \"CHARACTER\", \"WHITESPACE\", \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \n \"RK_DO\", \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \n \"RK_FALSE\", \"RK_TRUE\", \"RK_LOGICAL_NOT\", \n \"RK_LOGICAL_AND\", \"RK_LOGICAL_OR\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \n \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"ExponentPart\", \n \"STRING\", \"STRING_CHARACTER\", \"CHARACTER\", \n \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \"HEX_DIGIT\", \n \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \"ESC_UNICODE\", \n \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"start\",\n $read: \"read\",\n $write: \"write\",\n $numElements: \"total_of_elements\",\n $matrixLines: \"total_of_lines\",\n $matrixColumns: \"total_of_columns\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"char_at\",\n $isReal: \"is_real\",\n $isInt: \"is_integer\",\n $isBool: \"is_logic\",\n $castReal: \"to_real\",\n $castInt: \"to_integer\",\n $castBool: \"to_logic\",\n $castString: \"to_string\",\n $sin: \"sin\",\n $cos: \"cos\",\n $tan: \"tan\",\n $sqrt: \"sqrt\",\n $pow: \"pow\",\n $log: \"log\",\n $abs: \"abs\",\n $negate: \"negate\",\n $invert: \"invert\",\n $max: \"maximum\",\n $min: \"minimum\"\n\n}","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Mathematic\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"Conversion\"\n}","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-105929zIVqdewR4af/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u0002/\\u01dc\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\\u0003\",\n \"\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\t\\u0003\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\",\n \"\\u0003\\f\\u0003\\f\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\r\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\",\n \"\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003\",\n \"#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003&\\u0003&\\u0003&\\u0003&\\u0003\",\n \"&\\u0003&\\u0003&\\u0003&\\u0003&\\u0005&\\u0130\\n&\\u0003\\'\\u0003\\'\\u0003\",\n \"(\\u0003(\\u0003)\\u0003)\\u0007)\\u0138\\n)\\f)\\u000e)\\u013b\\u000b)\\u0003\",\n \"*\\u0003*\\u0003*\\u0003*\\u0003+\\u0006+\\u0142\\n+\\r+\\u000e+\\u0143\\u0003\",\n \"+\\u0003+\\u0003+\\u0003+\\u0005+\\u014a\\n+\\u0003+\\u0006+\\u014d\\n+\\r+\\u000e\",\n \"+\\u014e\\u0003+\\u0003+\\u0003+\\u0003+\\u0005+\\u0155\\n+\\u0003+\\u0006+\\u0158\",\n \"\\n+\\r+\\u000e+\\u0159\\u0005+\\u015c\\n+\\u0003,\\u0006,\\u015f\\n,\\r,\\u000e\",\n \",\\u0160\\u0003,\\u0003,\\u0006,\\u0165\\n,\\r,\\u000e,\\u0166\\u0003,\\u0006,\",\n \"\\u016a\\n,\\r,\\u000e,\\u016b\\u0003,\\u0003,\\u0007,\\u0170\\n,\\f,\\u000e,\\u0173\",\n \"\\u000b,\\u0003,\\u0005,\\u0176\\n,\\u0003-\\u0003-\\u0005-\\u017a\\n-\\u0003-\",\n \"\\u0006-\\u017d\\n-\\r-\\u000e-\\u017e\\u0003.\\u0003.\\u0007.\\u0183\\n.\\f.\\u000e\",\n \".\\u0186\\u000b.\\u0003.\\u0003.\\u0003/\\u0003/\\u0005/\\u018c\\n/\\u00030\\u0003\",\n \"0\\u00030\\u00050\\u0191\\n0\\u00030\\u00030\\u00031\\u00031\\u00031\\u00031\\u0003\",\n \"2\\u00032\\u00033\\u00063\\u019c\\n3\\r3\\u000e3\\u019d\\u00033\\u00053\\u01a1\",\n \"\\n3\\u00034\\u00034\\u00035\\u00035\\u00036\\u00036\\u00036\\u00036\\u00056\\u01ab\",\n \"\\n6\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u0003\",\n \"7\\u00037\\u00057\\u01b8\\n7\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u0003\",\n \"8\\u00039\\u00039\\u00039\\u00039\\u00079\\u01c5\\n9\\f9\\u000e9\\u01c8\\u000b\",\n \"9\\u00039\\u00059\\u01cb\\n9\\u00039\\u00039\\u00039\\u00039\\u00039\\u00079\\u01d2\",\n \"\\n9\\f9\\u000e9\\u01d5\\u000b9\\u00039\\u00039\\u00059\\u01d9\\n9\\u00039\\u0003\",\n \"9\\u0003\\u01d3\\u0002:\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\\t\\u0006\\u000b\",\n \"\\u0007\\r\\b\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\\u0019\\u000e\\u001b\",\n \"\\u000f\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\\'\\u0015)\\u0016+\",\n \"\\u0017-\\u0002/\\u00021\\u00023\\u00185\\u00197\\u001a9\\u001b;\\u001c=\\u001d\",\n \"?\\u001eA\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y\\u0002[+]\\u0002_,a-c\\u0002e.\",\n \"g\\u0002i\\u0002k\\u0002m\\u0002o\\u0002q/\\u0003\\u0002\\u0012\\u0004\\u0002\",\n \"--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\aac|\\u0006\\u0002\",\n \"2;C\\\\aac|\\u0003\\u00022;\\u0003\\u000223\\u0004\\u0002GGgg\\u0006\\u0002\\f\",\n \"\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\\u000f))^^\\u0004\\u0002\\u000b\",\n \"\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\\u00022;CHch\\u0003\\u0002\",\n \"29\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\\u01f0\\u0002\\u0003\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\\u0002\\u0007\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\\u0002\\u000b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\\u0002\\u000f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\\u0013\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\\u0017\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\\u001b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\\u001f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002#\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"7\\u0003\\u0002\\u0002\\u0002\\u00029\\u0003\\u0002\\u0002\\u0002\\u0002;\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002=\\u0003\\u0002\\u0002\\u0002\\u0002?\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\\u0002Q\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002U\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002[\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002e\\u0003\\u0002\\u0002\\u0002\\u0002q\\u0003\\u0002\\u0002\\u0002\\u0003\",\n \"s\\u0003\\u0002\\u0002\\u0002\\u0005|\\u0003\\u0002\\u0002\\u0002\\u0007\\u0081\",\n \"\\u0003\\u0002\\u0002\\u0002\\t\\u0087\\u0003\\u0002\\u0002\\u0002\\u000b\\u008e\",\n \"\\u0003\\u0002\\u0002\\u0002\\r\\u0095\\u0003\\u0002\\u0002\\u0002\\u000f\\u009d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0011\\u00a7\\u0003\\u0002\\u0002\\u0002\\u0013\\u00af\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0015\\u00b4\\u0003\\u0002\\u0002\\u0002\\u0017\\u00be\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0019\\u00c4\\u0003\\u0002\\u0002\\u0002\\u001b\\u00cb\",\n \"\\u0003\\u0002\\u0002\\u0002\\u001d\\u00d3\\u0003\\u0002\\u0002\\u0002\\u001f\\u00d8\",\n \"\\u0003\\u0002\\u0002\\u0002!\\u00dd\\u0003\\u0002\\u0002\\u0002#\\u00e2\\u0003\",\n \"\\u0002\\u0002\\u0002%\\u00eb\\u0003\\u0002\\u0002\\u0002\\'\\u00ee\\u0003\\u0002\",\n \"\\u0002\\u0002)\\u00f4\\u0003\\u0002\\u0002\\u0002+\\u00fa\\u0003\\u0002\\u0002\",\n \"\\u0002-\\u0105\\u0003\\u0002\\u0002\\u0002/\\u0109\\u0003\\u0002\\u0002\\u0002\",\n \"1\\u010b\\u0003\\u0002\\u0002\\u00023\\u010e\\u0003\\u0002\\u0002\\u00025\\u0110\",\n \"\\u0003\\u0002\\u0002\\u00027\\u0112\\u0003\\u0002\\u0002\\u00029\\u0114\\u0003\",\n \"\\u0002\\u0002\\u0002;\\u0116\\u0003\\u0002\\u0002\\u0002=\\u0118\\u0003\\u0002\",\n \"\\u0002\\u0002?\\u011a\\u0003\\u0002\\u0002\\u0002A\\u011c\\u0003\\u0002\\u0002\",\n \"\\u0002C\\u011e\\u0003\\u0002\\u0002\\u0002E\\u0120\\u0003\\u0002\\u0002\\u0002\",\n \"G\\u0122\\u0003\\u0002\\u0002\\u0002I\\u0124\\u0003\\u0002\\u0002\\u0002K\\u012f\",\n \"\\u0003\\u0002\\u0002\\u0002M\\u0131\\u0003\\u0002\\u0002\\u0002O\\u0133\\u0003\",\n \"\\u0002\\u0002\\u0002Q\\u0135\\u0003\\u0002\\u0002\\u0002S\\u013c\\u0003\\u0002\",\n \"\\u0002\\u0002U\\u015b\\u0003\\u0002\\u0002\\u0002W\\u0175\\u0003\\u0002\\u0002\",\n \"\\u0002Y\\u0177\\u0003\\u0002\\u0002\\u0002[\\u0180\\u0003\\u0002\\u0002\\u0002\",\n \"]\\u018b\\u0003\\u0002\\u0002\\u0002_\\u018d\\u0003\\u0002\\u0002\\u0002a\\u0194\",\n \"\\u0003\\u0002\\u0002\\u0002c\\u0198\\u0003\\u0002\\u0002\\u0002e\\u01a0\\u0003\",\n \"\\u0002\\u0002\\u0002g\\u01a2\\u0003\\u0002\\u0002\\u0002i\\u01a4\\u0003\\u0002\",\n \"\\u0002\\u0002k\\u01aa\\u0003\\u0002\\u0002\\u0002m\\u01b7\\u0003\\u0002\\u0002\",\n \"\\u0002o\\u01b9\\u0003\\u0002\\u0002\\u0002q\\u01d8\\u0003\\u0002\\u0002\\u0002\",\n \"st\\u0007r\\u0002\\u0002tu\\u0007t\\u0002\\u0002uv\\u0007q\\u0002\\u0002vw\\u0007\",\n \"i\\u0002\\u0002wx\\u0007t\\u0002\\u0002xy\\u0007c\\u0002\\u0002yz\\u0007o\\u0002\",\n \"\\u0002z{\\u0007c\\u0002\\u0002{\\u0004\\u0003\\u0002\\u0002\\u0002|}\\u0007t\",\n \"\\u0002\\u0002}~\\u0007g\\u0002\\u0002~\\u007f\\u0007c\\u0002\\u0002\\u007f\\u0080\",\n \"\\u0007n\\u0002\\u0002\\u0080\\u0006\\u0003\\u0002\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007x\\u0002\\u0002\\u0082\\u0083\\u0007c\\u0002\\u0002\\u0083\\u0084\\u0007\",\n \"|\\u0002\\u0002\\u0084\\u0085\\u0007k\\u0002\\u0002\\u0085\\u0086\\u0007q\\u0002\",\n \"\\u0002\\u0086\\b\\u0003\\u0002\\u0002\\u0002\\u0087\\u0088\\u0007n\\u0002\\u0002\",\n \"\\u0088\\u0089\\u0007q\\u0002\\u0002\\u0089\\u008a\\u0007i\\u0002\\u0002\\u008a\",\n \"\\u008b\\u0007k\\u0002\\u0002\\u008b\\u008c\\u0007e\\u0002\\u0002\\u008c\\u008d\",\n \"\\u0007q\\u0002\\u0002\\u008d\\n\\u0003\\u0002\\u0002\\u0002\\u008e\\u008f\\u0007\",\n \"e\\u0002\\u0002\\u008f\\u0090\\u0007c\\u0002\\u0002\\u0090\\u0091\\u0007f\\u0002\",\n \"\\u0002\\u0091\\u0092\\u0007g\\u0002\\u0002\\u0092\\u0093\\u0007k\\u0002\\u0002\",\n \"\\u0093\\u0094\\u0007c\\u0002\\u0002\\u0094\\f\\u0003\\u0002\\u0002\\u0002\\u0095\",\n \"\\u0096\\u0007k\\u0002\\u0002\\u0096\\u0097\\u0007p\\u0002\\u0002\\u0097\\u0098\",\n \"\\u0007v\\u0002\\u0002\\u0098\\u0099\\u0007g\\u0002\\u0002\\u0099\\u009a\\u0007\",\n \"k\\u0002\\u0002\\u009a\\u009b\\u0007t\\u0002\\u0002\\u009b\\u009c\\u0007q\\u0002\",\n \"\\u0002\\u009c\\u000e\\u0003\\u0002\\u0002\\u0002\\u009d\\u009e\\u0007e\\u0002\",\n \"\\u0002\\u009e\\u009f\\u0007c\\u0002\\u0002\\u009f\\u00a0\\u0007t\\u0002\\u0002\",\n \"\\u00a0\\u00a1\\u0007c\\u0002\\u0002\\u00a1\\u00a2\\u0007e\\u0002\\u0002\\u00a2\",\n \"\\u00a3\\u0007v\\u0002\\u0002\\u00a3\\u00a4\\u0007g\\u0002\\u0002\\u00a4\\u00a5\",\n \"\\u0007t\\u0002\\u0002\\u00a5\\u00a6\\u0007g\\u0002\\u0002\\u00a6\\u0010\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00a7\\u00a8\\u0007g\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"u\\u0002\\u0002\\u00a9\\u00aa\\u0007e\\u0002\\u0002\\u00aa\\u00ab\\u0007q\\u0002\",\n \"\\u0002\\u00ab\\u00ac\\u0007n\\u0002\\u0002\\u00ac\\u00ad\\u0007j\\u0002\\u0002\",\n \"\\u00ad\\u00ae\\u0007c\\u0002\\u0002\\u00ae\\u0012\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007e\\u0002\\u0002\\u00b0\\u00b1\\u0007c\\u0002\\u0002\\u00b1\",\n \"\\u00b2\\u0007u\\u0002\\u0002\\u00b2\\u00b3\\u0007q\\u0002\\u0002\\u00b3\\u0014\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00b4\\u00b5\\u0007e\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007q\\u0002\\u0002\\u00b6\\u00b7\\u0007p\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"v\\u0002\\u0002\\u00b8\\u00b9\\u0007t\\u0002\\u0002\\u00b9\\u00ba\\u0007c\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007t\\u0002\\u0002\\u00bb\\u00bc\\u0007k\\u0002\\u0002\",\n \"\\u00bc\\u00bd\\u0007q\\u0002\\u0002\\u00bd\\u0016\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007e\\u0002\\u0002\\u00bf\\u00c0\\u0007q\\u0002\\u0002\\u00c0\",\n \"\\u00c1\\u0007p\\u0002\\u0002\\u00c1\\u00c2\\u0007u\\u0002\\u0002\\u00c2\\u00c3\",\n \"\\u0007v\\u0002\\u0002\\u00c3\\u0018\\u0003\\u0002\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007h\\u0002\\u0002\\u00c5\\u00c6\\u0007w\\u0002\\u0002\\u00c6\\u00c7\\u0007\",\n \"p\\u0002\\u0002\\u00c7\\u00c8\\u0007e\\u0002\\u0002\\u00c8\\u00c9\\u0007c\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007q\\u0002\\u0002\\u00ca\\u001a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00cb\\u00cc\\u0007t\\u0002\\u0002\\u00cc\\u00cd\\u0007g\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007v\\u0002\\u0002\\u00ce\\u00cf\\u0007q\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007t\\u0002\\u0002\\u00d0\\u00d1\\u0007p\\u0002\\u0002\\u00d1\\u00d2\",\n \"\\u0007g\\u0002\\u0002\\u00d2\\u001c\\u0003\\u0002\\u0002\\u0002\\u00d3\\u00d4\",\n \"\\u0007r\\u0002\\u0002\\u00d4\\u00d5\\u0007c\\u0002\\u0002\\u00d5\\u00d6\\u0007\",\n \"t\\u0002\\u0002\\u00d6\\u00d7\\u0007c\\u0002\\u0002\\u00d7\\u001e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00d8\\u00d9\\u0007r\\u0002\\u0002\\u00d9\\u00da\\u0007c\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007t\\u0002\\u0002\\u00db\\u00dc\\u0007g\\u0002\\u0002\",\n \"\\u00dc \\u0003\\u0002\\u0002\\u0002\\u00dd\\u00de\\u0007h\\u0002\\u0002\\u00de\",\n \"\\u00df\\u0007c\\u0002\\u0002\\u00df\\u00e0\\u0007e\\u0002\\u0002\\u00e0\\u00e1\",\n \"\\u0007c\\u0002\\u0002\\u00e1\\\"\\u0003\\u0002\\u0002\\u0002\\u00e2\\u00e3\\u0007\",\n \"g\\u0002\\u0002\\u00e3\\u00e4\\u0007p\\u0002\\u0002\\u00e4\\u00e5\\u0007s\\u0002\",\n \"\\u0002\\u00e5\\u00e6\\u0007w\\u0002\\u0002\\u00e6\\u00e7\\u0007c\\u0002\\u0002\",\n \"\\u00e7\\u00e8\\u0007p\\u0002\\u0002\\u00e8\\u00e9\\u0007v\\u0002\\u0002\\u00e9\",\n \"\\u00ea\\u0007q\\u0002\\u0002\\u00ea$\\u0003\\u0002\\u0002\\u0002\\u00eb\\u00ec\",\n \"\\u0007u\\u0002\\u0002\\u00ec\\u00ed\\u0007g\\u0002\\u0002\\u00ed&\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00ee\\u00ef\\u0007u\\u0002\\u0002\\u00ef\\u00f0\\u0007g\\u0002\",\n \"\\u0002\\u00f0\\u00f1\\u0007p\\u0002\\u0002\\u00f1\\u00f2\\u0007c\\u0002\\u0002\",\n \"\\u00f2\\u00f3\\u0007q\\u0002\\u0002\\u00f3(\\u0003\\u0002\\u0002\\u0002\\u00f4\",\n \"\\u00f5\\u0007h\\u0002\\u0002\\u00f5\\u00f6\\u0007c\\u0002\\u0002\\u00f6\\u00f7\",\n \"\\u0007n\\u0002\\u0002\\u00f7\\u00f8\\u0007u\\u0002\\u0002\\u00f8\\u00f9\\u0007\",\n \"q\\u0002\\u0002\\u00f9*\\u0003\\u0002\\u0002\\u0002\\u00fa\\u00fb\\u0007x\\u0002\",\n \"\\u0002\\u00fb\\u00fc\\u0007g\\u0002\\u0002\\u00fc\\u00fd\\u0007t\\u0002\\u0002\",\n \"\\u00fd\\u00fe\\u0007f\\u0002\\u0002\\u00fe\\u00ff\\u0007c\\u0002\\u0002\\u00ff\",\n \"\\u0100\\u0007f\\u0002\\u0002\\u0100\\u0101\\u0007g\\u0002\\u0002\\u0101\\u0102\",\n \"\\u0007k\\u0002\\u0002\\u0102\\u0103\\u0007t\\u0002\\u0002\\u0103\\u0104\\u0007\",\n \"q\\u0002\\u0002\\u0104,\\u0003\\u0002\\u0002\\u0002\\u0105\\u0106\\u0007p\\u0002\",\n \"\\u0002\\u0106\\u0107\\u0007c\\u0002\\u0002\\u0107\\u0108\\u0007q\\u0002\\u0002\",\n \"\\u0108.\\u0003\\u0002\\u0002\\u0002\\u0109\\u010a\\u0007G\\u0002\\u0002\\u010a\",\n \"0\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\\u0007Q\\u0002\\u0002\\u010c\\u010d\",\n \"\\u0007W\\u0002\\u0002\\u010d2\\u0003\\u0002\\u0002\\u0002\\u010e\\u010f\\u0007\",\n \"*\\u0002\\u0002\\u010f4\\u0003\\u0002\\u0002\\u0002\\u0110\\u0111\\u0007+\\u0002\",\n \"\\u0002\\u01116\\u0003\\u0002\\u0002\\u0002\\u0112\\u0113\\u0007]\\u0002\\u0002\",\n \"\\u01138\\u0003\\u0002\\u0002\\u0002\\u0114\\u0115\\u0007_\\u0002\\u0002\\u0115\",\n \":\\u0003\\u0002\\u0002\\u0002\\u0116\\u0117\\u0007}\\u0002\\u0002\\u0117<\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0118\\u0119\\u0007\\u007f\\u0002\\u0002\\u0119>\\u0003\",\n \"\\u0002\\u0002\\u0002\\u011a\\u011b\\u0007.\\u0002\\u0002\\u011b@\\u0003\\u0002\",\n \"\\u0002\\u0002\\u011c\\u011d\\u0007?\\u0002\\u0002\\u011dB\\u0003\\u0002\\u0002\",\n \"\\u0002\\u011e\\u011f\\t\\u0002\\u0002\\u0002\\u011fD\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0120\\u0121\\t\\u0003\\u0002\\u0002\\u0121F\\u0003\\u0002\\u0002\\u0002\\u0122\",\n \"\\u0123\\u0005/\\u0018\\u0002\\u0123H\\u0003\\u0002\\u0002\\u0002\\u0124\\u0125\",\n \"\\u00051\\u0019\\u0002\\u0125J\\u0003\\u0002\\u0002\\u0002\\u0126\\u0127\\u0007\",\n \"@\\u0002\\u0002\\u0127\\u0130\\u0007?\\u0002\\u0002\\u0128\\u0129\\u0007?\\u0002\",\n \"\\u0002\\u0129\\u0130\\u0007?\\u0002\\u0002\\u012a\\u012b\\u0007>\\u0002\\u0002\",\n \"\\u012b\\u0130\\u0007?\\u0002\\u0002\\u012c\\u0130\\t\\u0004\\u0002\\u0002\\u012d\",\n \"\\u012e\\u0007#\\u0002\\u0002\\u012e\\u0130\\u0007?\\u0002\\u0002\\u012f\\u0126\",\n \"\\u0003\\u0002\\u0002\\u0002\\u012f\\u0128\\u0003\\u0002\\u0002\\u0002\\u012f\\u012a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u012f\\u012c\\u0003\\u0002\\u0002\\u0002\\u012f\\u012d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0130L\\u0003\\u0002\\u0002\\u0002\\u0131\\u0132\",\n \"\\u0007<\\u0002\\u0002\\u0132N\\u0003\\u0002\\u0002\\u0002\\u0133\\u0134\\u0005\",\n \"-\\u0017\\u0002\\u0134P\\u0003\\u0002\\u0002\\u0002\\u0135\\u0139\\t\\u0005\\u0002\",\n \"\\u0002\\u0136\\u0138\\t\\u0006\\u0002\\u0002\\u0137\\u0136\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0138\\u013b\\u0003\\u0002\\u0002\\u0002\\u0139\\u0137\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0139\\u013a\\u0003\\u0002\\u0002\\u0002\\u013aR\\u0003\\u0002\\u0002\",\n \"\\u0002\\u013b\\u0139\\u0003\\u0002\\u0002\\u0002\\u013c\\u013d\\u0005Q)\\u0002\",\n \"\\u013d\\u013e\\u00070\\u0002\\u0002\\u013e\\u013f\\u0005Q)\\u0002\\u013fT\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0140\\u0142\\t\\u0007\\u0002\\u0002\\u0141\\u0140\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0142\\u0143\\u0003\\u0002\\u0002\\u0002\\u0143\\u0141\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0143\\u0144\\u0003\\u0002\\u0002\\u0002\\u0144\\u015c\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0145\\u0146\\u00072\\u0002\\u0002\\u0146\\u014a\\u0007\",\n \"z\\u0002\\u0002\\u0147\\u0148\\u00072\\u0002\\u0002\\u0148\\u014a\\u0007Z\\u0002\",\n \"\\u0002\\u0149\\u0145\\u0003\\u0002\\u0002\\u0002\\u0149\\u0147\\u0003\\u0002\\u0002\",\n \"\\u0002\\u014a\\u014c\\u0003\\u0002\\u0002\\u0002\\u014b\\u014d\\u0005g4\\u0002\",\n \"\\u014c\\u014b\\u0003\\u0002\\u0002\\u0002\\u014d\\u014e\\u0003\\u0002\\u0002\\u0002\",\n \"\\u014e\\u014c\\u0003\\u0002\\u0002\\u0002\\u014e\\u014f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u014f\\u015c\\u0003\\u0002\\u0002\\u0002\\u0150\\u0151\\u00072\\u0002\\u0002\",\n \"\\u0151\\u0155\\u0007d\\u0002\\u0002\\u0152\\u0153\\u00072\\u0002\\u0002\\u0153\",\n \"\\u0155\\u0007D\\u0002\\u0002\\u0154\\u0150\\u0003\\u0002\\u0002\\u0002\\u0154\",\n \"\\u0152\\u0003\\u0002\\u0002\\u0002\\u0155\\u0157\\u0003\\u0002\\u0002\\u0002\\u0156\",\n \"\\u0158\\t\\b\\u0002\\u0002\\u0157\\u0156\\u0003\\u0002\\u0002\\u0002\\u0158\\u0159\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0159\\u0157\\u0003\\u0002\\u0002\\u0002\\u0159\\u015a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015a\\u015c\\u0003\\u0002\\u0002\\u0002\\u015b\\u0141\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015b\\u0149\\u0003\\u0002\\u0002\\u0002\\u015b\\u0154\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015cV\\u0003\\u0002\\u0002\\u0002\\u015d\\u015f\",\n \"\\t\\u0007\\u0002\\u0002\\u015e\\u015d\\u0003\\u0002\\u0002\\u0002\\u015f\\u0160\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0160\\u015e\\u0003\\u0002\\u0002\\u0002\\u0160\\u0161\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0161\\u0162\\u0003\\u0002\\u0002\\u0002\\u0162\\u0164\",\n \"\\u00070\\u0002\\u0002\\u0163\\u0165\\t\\u0007\\u0002\\u0002\\u0164\\u0163\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0165\\u0166\\u0003\\u0002\\u0002\\u0002\\u0166\\u0164\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0166\\u0167\\u0003\\u0002\\u0002\\u0002\\u0167\\u0176\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0168\\u016a\\t\\u0007\\u0002\\u0002\\u0169\\u0168\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016a\\u016b\\u0003\\u0002\\u0002\\u0002\\u016b\\u0169\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016b\\u016c\\u0003\\u0002\\u0002\\u0002\\u016c\\u016d\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016d\\u0171\\u00070\\u0002\\u0002\\u016e\\u0170\\t\\u0007\",\n \"\\u0002\\u0002\\u016f\\u016e\\u0003\\u0002\\u0002\\u0002\\u0170\\u0173\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0171\\u016f\\u0003\\u0002\\u0002\\u0002\\u0171\\u0172\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0172\\u0174\\u0003\\u0002\\u0002\\u0002\\u0173\\u0171\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0174\\u0176\\u0005Y-\\u0002\\u0175\\u015e\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0175\\u0169\\u0003\\u0002\\u0002\\u0002\\u0176X\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0177\\u0179\\t\\t\\u0002\\u0002\\u0178\\u017a\\t\\u0002\\u0002\\u0002\\u0179\",\n \"\\u0178\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u0003\\u0002\\u0002\\u0002\\u017a\",\n \"\\u017c\\u0003\\u0002\\u0002\\u0002\\u017b\\u017d\\t\\u0007\\u0002\\u0002\\u017c\",\n \"\\u017b\\u0003\\u0002\\u0002\\u0002\\u017d\\u017e\\u0003\\u0002\\u0002\\u0002\\u017e\",\n \"\\u017c\\u0003\\u0002\\u0002\\u0002\\u017e\\u017f\\u0003\\u0002\\u0002\\u0002\\u017f\",\n \"Z\\u0003\\u0002\\u0002\\u0002\\u0180\\u0184\\u0007$\\u0002\\u0002\\u0181\\u0183\",\n \"\\u0005]/\\u0002\\u0182\\u0181\\u0003\\u0002\\u0002\\u0002\\u0183\\u0186\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0184\\u0182\\u0003\\u0002\\u0002\\u0002\\u0184\\u0185\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0185\\u0187\\u0003\\u0002\\u0002\\u0002\\u0186\\u0184\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0187\\u0188\\u0007$\\u0002\\u0002\\u0188\\\\\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0189\\u018c\\n\\n\\u0002\\u0002\\u018a\\u018c\\u0005k6\\u0002\\u018b\",\n \"\\u0189\\u0003\\u0002\\u0002\\u0002\\u018b\\u018a\\u0003\\u0002\\u0002\\u0002\\u018c\",\n \"^\\u0003\\u0002\\u0002\\u0002\\u018d\\u0190\\u0007)\\u0002\\u0002\\u018e\\u0191\",\n \"\\u0005k6\\u0002\\u018f\\u0191\\n\\u000b\\u0002\\u0002\\u0190\\u018e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0190\\u018f\\u0003\\u0002\\u0002\\u0002\\u0191\\u0192\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0192\\u0193\\u0007)\\u0002\\u0002\\u0193`\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0194\\u0195\\t\\f\\u0002\\u0002\\u0195\\u0196\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0196\\u0197\\b1\\u0002\\u0002\\u0197b\\u0003\\u0002\\u0002\\u0002\\u0198\\u0199\",\n \"\\u0007=\\u0002\\u0002\\u0199d\\u0003\\u0002\\u0002\\u0002\\u019a\\u019c\\t\\r\\u0002\",\n \"\\u0002\\u019b\\u019a\\u0003\\u0002\\u0002\\u0002\\u019c\\u019d\\u0003\\u0002\\u0002\",\n \"\\u0002\\u019d\\u019b\\u0003\\u0002\\u0002\\u0002\\u019d\\u019e\\u0003\\u0002\\u0002\",\n \"\\u0002\\u019e\\u01a1\\u0003\\u0002\\u0002\\u0002\\u019f\\u01a1\\u0005c2\\u0002\",\n \"\\u01a0\\u019b\\u0003\\u0002\\u0002\\u0002\\u01a0\\u019f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01a1f\\u0003\\u0002\\u0002\\u0002\\u01a2\\u01a3\\t\\u000e\\u0002\\u0002\\u01a3\",\n \"h\\u0003\\u0002\\u0002\\u0002\\u01a4\\u01a5\\t\\u000f\\u0002\\u0002\\u01a5j\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01a6\\u01a7\\u0007^\\u0002\\u0002\\u01a7\\u01ab\\t\\u0010\",\n \"\\u0002\\u0002\\u01a8\\u01ab\\u0005o8\\u0002\\u01a9\\u01ab\\u0005m7\\u0002\\u01aa\",\n \"\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01aa\\u01a8\\u0003\\u0002\\u0002\\u0002\\u01aa\",\n \"\\u01a9\\u0003\\u0002\\u0002\\u0002\\u01abl\\u0003\\u0002\\u0002\\u0002\\u01ac\",\n \"\\u01ad\\u0007^\\u0002\\u0002\\u01ad\\u01ae\\t\\u0011\\u0002\\u0002\\u01ae\\u01af\",\n \"\\u0005i5\\u0002\\u01af\\u01b0\\u0005i5\\u0002\\u01b0\\u01b8\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01b1\\u01b2\\u0007^\\u0002\\u0002\\u01b2\\u01b3\\u0005i5\\u0002\\u01b3\",\n \"\\u01b4\\u0005i5\\u0002\\u01b4\\u01b8\\u0003\\u0002\\u0002\\u0002\\u01b5\\u01b6\",\n \"\\u0007^\\u0002\\u0002\\u01b6\\u01b8\\u0005i5\\u0002\\u01b7\\u01ac\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b7\\u01b1\\u0003\\u0002\\u0002\\u0002\\u01b7\\u01b5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b8n\\u0003\\u0002\\u0002\\u0002\\u01b9\\u01ba\\u0007^\\u0002\",\n \"\\u0002\\u01ba\\u01bb\\u0007w\\u0002\\u0002\\u01bb\\u01bc\\u0005g4\\u0002\\u01bc\",\n \"\\u01bd\\u0005g4\\u0002\\u01bd\\u01be\\u0005g4\\u0002\\u01be\\u01bf\\u0005g4\\u0002\",\n \"\\u01bfp\\u0003\\u0002\\u0002\\u0002\\u01c0\\u01c1\\u00071\\u0002\\u0002\\u01c1\",\n \"\\u01c2\\u00071\\u0002\\u0002\\u01c2\\u01c6\\u0003\\u0002\\u0002\\u0002\\u01c3\",\n \"\\u01c5\\n\\r\\u0002\\u0002\\u01c4\\u01c3\\u0003\\u0002\\u0002\\u0002\\u01c5\\u01c8\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c6\\u01c4\\u0003\\u0002\\u0002\\u0002\\u01c6\\u01c7\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c7\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01c8\\u01c6\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cb\\u0007\\u000f\\u0002\\u0002\\u01ca\\u01c9\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ca\\u01cb\\u0003\\u0002\\u0002\\u0002\\u01cb\\u01cc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01cc\\u01d9\\u0007\\f\\u0002\\u0002\\u01cd\\u01ce\",\n \"\\u00071\\u0002\\u0002\\u01ce\\u01cf\\u0007,\\u0002\\u0002\\u01cf\\u01d3\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d0\\u01d2\\u000b\\u0002\\u0002\\u0002\\u01d1\\u01d0\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d2\\u01d5\\u0003\\u0002\\u0002\\u0002\\u01d3\\u01d4\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d3\\u01d1\\u0003\\u0002\\u0002\\u0002\\u01d4\\u01d6\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d5\\u01d3\\u0003\\u0002\\u0002\\u0002\\u01d6\\u01d7\\u0007\",\n \",\\u0002\\u0002\\u01d7\\u01d9\\u00071\\u0002\\u0002\\u01d8\\u01c0\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01d8\\u01cd\\u0003\\u0002\\u0002\\u0002\\u01d9\\u01da\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01da\\u01db\\b9\\u0003\\u0002\\u01dbr\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001d\\u0002\\u012f\\u0139\\u0143\\u0149\\u014e\\u0154\\u0159\\u015b\\u0160\\u0166\",\n \"\\u016b\\u0171\\u0175\\u0179\\u017e\\u0184\\u018b\\u0190\\u019d\\u01a0\\u01aa\\u01b7\",\n \"\\u01c6\\u01ca\\u01d3\\u01d8\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_BREAK = 15;\nivprog.RK_DO = 16;\nivprog.RK_WHILE = 17;\nivprog.RK_IF = 18;\nivprog.RK_ELSE = 19;\nivprog.RK_FALSE = 20;\nivprog.RK_TRUE = 21;\nivprog.OPEN_PARENTHESIS = 22;\nivprog.CLOSE_PARENTHESIS = 23;\nivprog.OPEN_BRACE = 24;\nivprog.CLOSE_BRACE = 25;\nivprog.OPEN_CURLY = 26;\nivprog.CLOSE_CURLY = 27;\nivprog.COMMA = 28;\nivprog.EQUAL = 29;\nivprog.SUM_OP = 30;\nivprog.MULTI_OP = 31;\nivprog.AND_OPERATOR = 32;\nivprog.OR_OPERATOR = 33;\nivprog.RELATIONAL_OPERATOR = 34;\nivprog.COLON = 35;\nivprog.NOT_OPERATOR = 36;\nivprog.ID = 37;\nivprog.LIB_ID = 38;\nivprog.INTEGER = 39;\nivprog.REAL = 40;\nivprog.STRING = 41;\nivprog.CHARACTER = 42;\nivprog.WHITESPACE = 43;\nivprog.EOS = 44;\nivprog.COMMENTS = 45;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'programa'\", \"'real'\", \"'vazio'\", \n \"'logico'\", \"'cadeia'\", \"'inteiro'\", \"'caractere'\", \n \"'escolha'\", \"'caso'\", \"'contrario'\", \n \"'const'\", \"'funcao'\", \"'retorne'\", \"'para'\", \n \"'pare'\", \"'faca'\", \"'enquanto'\", \"'se'\", \n \"'senao'\", \"'falso'\", \"'verdadeiro'\", \n \"'('\", \"')'\", \"'['\", \"']'\", \"'{'\", \"'}'\", \n \"','\", \"'='\", null, null, null, null, \n null, \"':'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \"RK_DO\", \n \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"OPEN_PARENTHESIS\", \"CLOSE_PARENTHESIS\", \n \"OPEN_BRACE\", \"CLOSE_BRACE\", \"OPEN_CURLY\", \n \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \"SUM_OP\", \n \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"STRING\", \n \"CHARACTER\", \"WHITESPACE\", \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \n \"RK_DO\", \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \n \"RK_FALSE\", \"RK_TRUE\", \"RK_LOGICAL_NOT\", \n \"RK_LOGICAL_AND\", \"RK_LOGICAL_OR\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \n \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"ExponentPart\", \n \"STRING\", \"STRING_CHARACTER\", \"CHARACTER\", \n \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \"HEX_DIGIT\", \n \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \"ESC_UNICODE\", \n \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"inicio\",\n $read: \"leia\",\n $write: \"escreva\",\n $numElements: \"total_of_elements\",\n $matrixLines: \"total_of_lines\",\n $matrixColumns: \"total_of_columns\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"char_at\",\n $isReal: \"is_real\",\n $isInt: \"is_integer\",\n $isBool: \"is_logic\",\n $castReal: \"to_real\",\n $castInt: \"to_integer\",\n $castBool: \"to_logic\",\n $castString: \"to_string\",\n $sin: \"sin\",\n $cos: \"cos\",\n $tan: \"tan\",\n $sqrt: \"sqrt\",\n $pow: \"pow\",\n $log: \"log\",\n $abs: \"abs\",\n $negate: \"negate\",\n $invert: \"invert\",\n $max: \"maximum\",\n $min: \"minimum\"\n}\n","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Mathematic\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"Conversion\"\n}","import * as PT from './pt/ivprog.g4';\nimport PTFuncs from './pt/langFunctions';\nimport PTLibs from './pt/langLibs';\nimport * as EN from './en/ivprog.g4';\nimport ENFuncs from './en/langFunctions';\nimport ENLibs from './en/langLibs';\nimport * as ES from './es/ivprog.g4';\nimport ESFuncs from './es/langFunctions';\nimport ESLibs from './es/langLibs';\n\nexports.pt = {lexer: PT.ivprog, langFuncs: PTFuncs, langLibs: PTLibs};\nexports.en = {lexer: EN.ivprog, langFuncs: ENFuncs, langLibs: ENLibs};\nexports.es = {lexer: ES.ivprog, langFuncs: ESFuncs, langLibs: ESLibs};\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-10592PhWgtMCp7Iog/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u0002/\\u01dc\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\\u0003\",\n \"\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\t\\u0003\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\",\n \"\\u0003\\f\\u0003\\f\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\r\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\",\n \"\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003\",\n \"#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003&\\u0003&\\u0003&\\u0003&\\u0003\",\n \"&\\u0003&\\u0003&\\u0003&\\u0003&\\u0005&\\u0130\\n&\\u0003\\'\\u0003\\'\\u0003\",\n \"(\\u0003(\\u0003)\\u0003)\\u0007)\\u0138\\n)\\f)\\u000e)\\u013b\\u000b)\\u0003\",\n \"*\\u0003*\\u0003*\\u0003*\\u0003+\\u0006+\\u0142\\n+\\r+\\u000e+\\u0143\\u0003\",\n \"+\\u0003+\\u0003+\\u0003+\\u0005+\\u014a\\n+\\u0003+\\u0006+\\u014d\\n+\\r+\\u000e\",\n \"+\\u014e\\u0003+\\u0003+\\u0003+\\u0003+\\u0005+\\u0155\\n+\\u0003+\\u0006+\\u0158\",\n \"\\n+\\r+\\u000e+\\u0159\\u0005+\\u015c\\n+\\u0003,\\u0006,\\u015f\\n,\\r,\\u000e\",\n \",\\u0160\\u0003,\\u0003,\\u0006,\\u0165\\n,\\r,\\u000e,\\u0166\\u0003,\\u0006,\",\n \"\\u016a\\n,\\r,\\u000e,\\u016b\\u0003,\\u0003,\\u0007,\\u0170\\n,\\f,\\u000e,\\u0173\",\n \"\\u000b,\\u0003,\\u0005,\\u0176\\n,\\u0003-\\u0003-\\u0005-\\u017a\\n-\\u0003-\",\n \"\\u0006-\\u017d\\n-\\r-\\u000e-\\u017e\\u0003.\\u0003.\\u0007.\\u0183\\n.\\f.\\u000e\",\n \".\\u0186\\u000b.\\u0003.\\u0003.\\u0003/\\u0003/\\u0005/\\u018c\\n/\\u00030\\u0003\",\n \"0\\u00030\\u00050\\u0191\\n0\\u00030\\u00030\\u00031\\u00031\\u00031\\u00031\\u0003\",\n \"2\\u00032\\u00033\\u00063\\u019c\\n3\\r3\\u000e3\\u019d\\u00033\\u00053\\u01a1\",\n \"\\n3\\u00034\\u00034\\u00035\\u00035\\u00036\\u00036\\u00036\\u00036\\u00056\\u01ab\",\n \"\\n6\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u0003\",\n \"7\\u00037\\u00057\\u01b8\\n7\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u0003\",\n \"8\\u00039\\u00039\\u00039\\u00039\\u00079\\u01c5\\n9\\f9\\u000e9\\u01c8\\u000b\",\n \"9\\u00039\\u00059\\u01cb\\n9\\u00039\\u00039\\u00039\\u00039\\u00039\\u00079\\u01d2\",\n \"\\n9\\f9\\u000e9\\u01d5\\u000b9\\u00039\\u00039\\u00059\\u01d9\\n9\\u00039\\u0003\",\n \"9\\u0003\\u01d3\\u0002:\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\\t\\u0006\\u000b\",\n \"\\u0007\\r\\b\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\\u0019\\u000e\\u001b\",\n \"\\u000f\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\\'\\u0015)\\u0016+\",\n \"\\u0017-\\u0002/\\u00021\\u00023\\u00185\\u00197\\u001a9\\u001b;\\u001c=\\u001d\",\n \"?\\u001eA\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y\\u0002[+]\\u0002_,a-c\\u0002e.\",\n \"g\\u0002i\\u0002k\\u0002m\\u0002o\\u0002q/\\u0003\\u0002\\u0012\\u0004\\u0002\",\n \"--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\aac|\\u0006\\u0002\",\n \"2;C\\\\aac|\\u0003\\u00022;\\u0003\\u000223\\u0004\\u0002GGgg\\u0006\\u0002\\f\",\n \"\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\\u000f))^^\\u0004\\u0002\\u000b\",\n \"\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\\u00022;CHch\\u0003\\u0002\",\n \"29\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\\u01f0\\u0002\\u0003\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\\u0002\\u0007\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\\u0002\\u000b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\\u0002\\u000f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\\u0013\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\\u0017\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\\u001b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\\u001f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002#\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"7\\u0003\\u0002\\u0002\\u0002\\u00029\\u0003\\u0002\\u0002\\u0002\\u0002;\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002=\\u0003\\u0002\\u0002\\u0002\\u0002?\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\\u0002Q\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002U\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002[\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002e\\u0003\\u0002\\u0002\\u0002\\u0002q\\u0003\\u0002\\u0002\\u0002\\u0003\",\n \"s\\u0003\\u0002\\u0002\\u0002\\u0005|\\u0003\\u0002\\u0002\\u0002\\u0007\\u0081\",\n \"\\u0003\\u0002\\u0002\\u0002\\t\\u0087\\u0003\\u0002\\u0002\\u0002\\u000b\\u008e\",\n \"\\u0003\\u0002\\u0002\\u0002\\r\\u0095\\u0003\\u0002\\u0002\\u0002\\u000f\\u009d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0011\\u00a7\\u0003\\u0002\\u0002\\u0002\\u0013\\u00af\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0015\\u00b4\\u0003\\u0002\\u0002\\u0002\\u0017\\u00be\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0019\\u00c4\\u0003\\u0002\\u0002\\u0002\\u001b\\u00cb\",\n \"\\u0003\\u0002\\u0002\\u0002\\u001d\\u00d3\\u0003\\u0002\\u0002\\u0002\\u001f\\u00d8\",\n \"\\u0003\\u0002\\u0002\\u0002!\\u00dd\\u0003\\u0002\\u0002\\u0002#\\u00e2\\u0003\",\n \"\\u0002\\u0002\\u0002%\\u00eb\\u0003\\u0002\\u0002\\u0002\\'\\u00ee\\u0003\\u0002\",\n \"\\u0002\\u0002)\\u00f4\\u0003\\u0002\\u0002\\u0002+\\u00fa\\u0003\\u0002\\u0002\",\n \"\\u0002-\\u0105\\u0003\\u0002\\u0002\\u0002/\\u0109\\u0003\\u0002\\u0002\\u0002\",\n \"1\\u010b\\u0003\\u0002\\u0002\\u00023\\u010e\\u0003\\u0002\\u0002\\u00025\\u0110\",\n \"\\u0003\\u0002\\u0002\\u00027\\u0112\\u0003\\u0002\\u0002\\u00029\\u0114\\u0003\",\n \"\\u0002\\u0002\\u0002;\\u0116\\u0003\\u0002\\u0002\\u0002=\\u0118\\u0003\\u0002\",\n \"\\u0002\\u0002?\\u011a\\u0003\\u0002\\u0002\\u0002A\\u011c\\u0003\\u0002\\u0002\",\n \"\\u0002C\\u011e\\u0003\\u0002\\u0002\\u0002E\\u0120\\u0003\\u0002\\u0002\\u0002\",\n \"G\\u0122\\u0003\\u0002\\u0002\\u0002I\\u0124\\u0003\\u0002\\u0002\\u0002K\\u012f\",\n \"\\u0003\\u0002\\u0002\\u0002M\\u0131\\u0003\\u0002\\u0002\\u0002O\\u0133\\u0003\",\n \"\\u0002\\u0002\\u0002Q\\u0135\\u0003\\u0002\\u0002\\u0002S\\u013c\\u0003\\u0002\",\n \"\\u0002\\u0002U\\u015b\\u0003\\u0002\\u0002\\u0002W\\u0175\\u0003\\u0002\\u0002\",\n \"\\u0002Y\\u0177\\u0003\\u0002\\u0002\\u0002[\\u0180\\u0003\\u0002\\u0002\\u0002\",\n \"]\\u018b\\u0003\\u0002\\u0002\\u0002_\\u018d\\u0003\\u0002\\u0002\\u0002a\\u0194\",\n \"\\u0003\\u0002\\u0002\\u0002c\\u0198\\u0003\\u0002\\u0002\\u0002e\\u01a0\\u0003\",\n \"\\u0002\\u0002\\u0002g\\u01a2\\u0003\\u0002\\u0002\\u0002i\\u01a4\\u0003\\u0002\",\n \"\\u0002\\u0002k\\u01aa\\u0003\\u0002\\u0002\\u0002m\\u01b7\\u0003\\u0002\\u0002\",\n \"\\u0002o\\u01b9\\u0003\\u0002\\u0002\\u0002q\\u01d8\\u0003\\u0002\\u0002\\u0002\",\n \"st\\u0007r\\u0002\\u0002tu\\u0007t\\u0002\\u0002uv\\u0007q\\u0002\\u0002vw\\u0007\",\n \"i\\u0002\\u0002wx\\u0007t\\u0002\\u0002xy\\u0007c\\u0002\\u0002yz\\u0007o\\u0002\",\n \"\\u0002z{\\u0007c\\u0002\\u0002{\\u0004\\u0003\\u0002\\u0002\\u0002|}\\u0007t\",\n \"\\u0002\\u0002}~\\u0007g\\u0002\\u0002~\\u007f\\u0007c\\u0002\\u0002\\u007f\\u0080\",\n \"\\u0007n\\u0002\\u0002\\u0080\\u0006\\u0003\\u0002\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007x\\u0002\\u0002\\u0082\\u0083\\u0007c\\u0002\\u0002\\u0083\\u0084\\u0007\",\n \"|\\u0002\\u0002\\u0084\\u0085\\u0007k\\u0002\\u0002\\u0085\\u0086\\u0007q\\u0002\",\n \"\\u0002\\u0086\\b\\u0003\\u0002\\u0002\\u0002\\u0087\\u0088\\u0007n\\u0002\\u0002\",\n \"\\u0088\\u0089\\u0007q\\u0002\\u0002\\u0089\\u008a\\u0007i\\u0002\\u0002\\u008a\",\n \"\\u008b\\u0007k\\u0002\\u0002\\u008b\\u008c\\u0007e\\u0002\\u0002\\u008c\\u008d\",\n \"\\u0007q\\u0002\\u0002\\u008d\\n\\u0003\\u0002\\u0002\\u0002\\u008e\\u008f\\u0007\",\n \"e\\u0002\\u0002\\u008f\\u0090\\u0007c\\u0002\\u0002\\u0090\\u0091\\u0007f\\u0002\",\n \"\\u0002\\u0091\\u0092\\u0007g\\u0002\\u0002\\u0092\\u0093\\u0007k\\u0002\\u0002\",\n \"\\u0093\\u0094\\u0007c\\u0002\\u0002\\u0094\\f\\u0003\\u0002\\u0002\\u0002\\u0095\",\n \"\\u0096\\u0007k\\u0002\\u0002\\u0096\\u0097\\u0007p\\u0002\\u0002\\u0097\\u0098\",\n \"\\u0007v\\u0002\\u0002\\u0098\\u0099\\u0007g\\u0002\\u0002\\u0099\\u009a\\u0007\",\n \"k\\u0002\\u0002\\u009a\\u009b\\u0007t\\u0002\\u0002\\u009b\\u009c\\u0007q\\u0002\",\n \"\\u0002\\u009c\\u000e\\u0003\\u0002\\u0002\\u0002\\u009d\\u009e\\u0007e\\u0002\",\n \"\\u0002\\u009e\\u009f\\u0007c\\u0002\\u0002\\u009f\\u00a0\\u0007t\\u0002\\u0002\",\n \"\\u00a0\\u00a1\\u0007c\\u0002\\u0002\\u00a1\\u00a2\\u0007e\\u0002\\u0002\\u00a2\",\n \"\\u00a3\\u0007v\\u0002\\u0002\\u00a3\\u00a4\\u0007g\\u0002\\u0002\\u00a4\\u00a5\",\n \"\\u0007t\\u0002\\u0002\\u00a5\\u00a6\\u0007g\\u0002\\u0002\\u00a6\\u0010\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00a7\\u00a8\\u0007g\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"u\\u0002\\u0002\\u00a9\\u00aa\\u0007e\\u0002\\u0002\\u00aa\\u00ab\\u0007q\\u0002\",\n \"\\u0002\\u00ab\\u00ac\\u0007n\\u0002\\u0002\\u00ac\\u00ad\\u0007j\\u0002\\u0002\",\n \"\\u00ad\\u00ae\\u0007c\\u0002\\u0002\\u00ae\\u0012\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007e\\u0002\\u0002\\u00b0\\u00b1\\u0007c\\u0002\\u0002\\u00b1\",\n \"\\u00b2\\u0007u\\u0002\\u0002\\u00b2\\u00b3\\u0007q\\u0002\\u0002\\u00b3\\u0014\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00b4\\u00b5\\u0007e\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007q\\u0002\\u0002\\u00b6\\u00b7\\u0007p\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"v\\u0002\\u0002\\u00b8\\u00b9\\u0007t\\u0002\\u0002\\u00b9\\u00ba\\u0007c\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007t\\u0002\\u0002\\u00bb\\u00bc\\u0007k\\u0002\\u0002\",\n \"\\u00bc\\u00bd\\u0007q\\u0002\\u0002\\u00bd\\u0016\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007e\\u0002\\u0002\\u00bf\\u00c0\\u0007q\\u0002\\u0002\\u00c0\",\n \"\\u00c1\\u0007p\\u0002\\u0002\\u00c1\\u00c2\\u0007u\\u0002\\u0002\\u00c2\\u00c3\",\n \"\\u0007v\\u0002\\u0002\\u00c3\\u0018\\u0003\\u0002\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007h\\u0002\\u0002\\u00c5\\u00c6\\u0007w\\u0002\\u0002\\u00c6\\u00c7\\u0007\",\n \"p\\u0002\\u0002\\u00c7\\u00c8\\u0007e\\u0002\\u0002\\u00c8\\u00c9\\u0007c\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007q\\u0002\\u0002\\u00ca\\u001a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00cb\\u00cc\\u0007t\\u0002\\u0002\\u00cc\\u00cd\\u0007g\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007v\\u0002\\u0002\\u00ce\\u00cf\\u0007q\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007t\\u0002\\u0002\\u00d0\\u00d1\\u0007p\\u0002\\u0002\\u00d1\\u00d2\",\n \"\\u0007g\\u0002\\u0002\\u00d2\\u001c\\u0003\\u0002\\u0002\\u0002\\u00d3\\u00d4\",\n \"\\u0007r\\u0002\\u0002\\u00d4\\u00d5\\u0007c\\u0002\\u0002\\u00d5\\u00d6\\u0007\",\n \"t\\u0002\\u0002\\u00d6\\u00d7\\u0007c\\u0002\\u0002\\u00d7\\u001e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00d8\\u00d9\\u0007r\\u0002\\u0002\\u00d9\\u00da\\u0007c\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007t\\u0002\\u0002\\u00db\\u00dc\\u0007g\\u0002\\u0002\",\n \"\\u00dc \\u0003\\u0002\\u0002\\u0002\\u00dd\\u00de\\u0007h\\u0002\\u0002\\u00de\",\n \"\\u00df\\u0007c\\u0002\\u0002\\u00df\\u00e0\\u0007e\\u0002\\u0002\\u00e0\\u00e1\",\n \"\\u0007c\\u0002\\u0002\\u00e1\\\"\\u0003\\u0002\\u0002\\u0002\\u00e2\\u00e3\\u0007\",\n \"g\\u0002\\u0002\\u00e3\\u00e4\\u0007p\\u0002\\u0002\\u00e4\\u00e5\\u0007s\\u0002\",\n \"\\u0002\\u00e5\\u00e6\\u0007w\\u0002\\u0002\\u00e6\\u00e7\\u0007c\\u0002\\u0002\",\n \"\\u00e7\\u00e8\\u0007p\\u0002\\u0002\\u00e8\\u00e9\\u0007v\\u0002\\u0002\\u00e9\",\n \"\\u00ea\\u0007q\\u0002\\u0002\\u00ea$\\u0003\\u0002\\u0002\\u0002\\u00eb\\u00ec\",\n \"\\u0007u\\u0002\\u0002\\u00ec\\u00ed\\u0007g\\u0002\\u0002\\u00ed&\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00ee\\u00ef\\u0007u\\u0002\\u0002\\u00ef\\u00f0\\u0007g\\u0002\",\n \"\\u0002\\u00f0\\u00f1\\u0007p\\u0002\\u0002\\u00f1\\u00f2\\u0007c\\u0002\\u0002\",\n \"\\u00f2\\u00f3\\u0007q\\u0002\\u0002\\u00f3(\\u0003\\u0002\\u0002\\u0002\\u00f4\",\n \"\\u00f5\\u0007h\\u0002\\u0002\\u00f5\\u00f6\\u0007c\\u0002\\u0002\\u00f6\\u00f7\",\n \"\\u0007n\\u0002\\u0002\\u00f7\\u00f8\\u0007u\\u0002\\u0002\\u00f8\\u00f9\\u0007\",\n \"q\\u0002\\u0002\\u00f9*\\u0003\\u0002\\u0002\\u0002\\u00fa\\u00fb\\u0007x\\u0002\",\n \"\\u0002\\u00fb\\u00fc\\u0007g\\u0002\\u0002\\u00fc\\u00fd\\u0007t\\u0002\\u0002\",\n \"\\u00fd\\u00fe\\u0007f\\u0002\\u0002\\u00fe\\u00ff\\u0007c\\u0002\\u0002\\u00ff\",\n \"\\u0100\\u0007f\\u0002\\u0002\\u0100\\u0101\\u0007g\\u0002\\u0002\\u0101\\u0102\",\n \"\\u0007k\\u0002\\u0002\\u0102\\u0103\\u0007t\\u0002\\u0002\\u0103\\u0104\\u0007\",\n \"q\\u0002\\u0002\\u0104,\\u0003\\u0002\\u0002\\u0002\\u0105\\u0106\\u0007p\\u0002\",\n \"\\u0002\\u0106\\u0107\\u0007c\\u0002\\u0002\\u0107\\u0108\\u0007q\\u0002\\u0002\",\n \"\\u0108.\\u0003\\u0002\\u0002\\u0002\\u0109\\u010a\\u0007G\\u0002\\u0002\\u010a\",\n \"0\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\\u0007Q\\u0002\\u0002\\u010c\\u010d\",\n \"\\u0007W\\u0002\\u0002\\u010d2\\u0003\\u0002\\u0002\\u0002\\u010e\\u010f\\u0007\",\n \"*\\u0002\\u0002\\u010f4\\u0003\\u0002\\u0002\\u0002\\u0110\\u0111\\u0007+\\u0002\",\n \"\\u0002\\u01116\\u0003\\u0002\\u0002\\u0002\\u0112\\u0113\\u0007]\\u0002\\u0002\",\n \"\\u01138\\u0003\\u0002\\u0002\\u0002\\u0114\\u0115\\u0007_\\u0002\\u0002\\u0115\",\n \":\\u0003\\u0002\\u0002\\u0002\\u0116\\u0117\\u0007}\\u0002\\u0002\\u0117<\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0118\\u0119\\u0007\\u007f\\u0002\\u0002\\u0119>\\u0003\",\n \"\\u0002\\u0002\\u0002\\u011a\\u011b\\u0007.\\u0002\\u0002\\u011b@\\u0003\\u0002\",\n \"\\u0002\\u0002\\u011c\\u011d\\u0007?\\u0002\\u0002\\u011dB\\u0003\\u0002\\u0002\",\n \"\\u0002\\u011e\\u011f\\t\\u0002\\u0002\\u0002\\u011fD\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0120\\u0121\\t\\u0003\\u0002\\u0002\\u0121F\\u0003\\u0002\\u0002\\u0002\\u0122\",\n \"\\u0123\\u0005/\\u0018\\u0002\\u0123H\\u0003\\u0002\\u0002\\u0002\\u0124\\u0125\",\n \"\\u00051\\u0019\\u0002\\u0125J\\u0003\\u0002\\u0002\\u0002\\u0126\\u0127\\u0007\",\n \"@\\u0002\\u0002\\u0127\\u0130\\u0007?\\u0002\\u0002\\u0128\\u0129\\u0007?\\u0002\",\n \"\\u0002\\u0129\\u0130\\u0007?\\u0002\\u0002\\u012a\\u012b\\u0007>\\u0002\\u0002\",\n \"\\u012b\\u0130\\u0007?\\u0002\\u0002\\u012c\\u0130\\t\\u0004\\u0002\\u0002\\u012d\",\n \"\\u012e\\u0007#\\u0002\\u0002\\u012e\\u0130\\u0007?\\u0002\\u0002\\u012f\\u0126\",\n \"\\u0003\\u0002\\u0002\\u0002\\u012f\\u0128\\u0003\\u0002\\u0002\\u0002\\u012f\\u012a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u012f\\u012c\\u0003\\u0002\\u0002\\u0002\\u012f\\u012d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0130L\\u0003\\u0002\\u0002\\u0002\\u0131\\u0132\",\n \"\\u0007<\\u0002\\u0002\\u0132N\\u0003\\u0002\\u0002\\u0002\\u0133\\u0134\\u0005\",\n \"-\\u0017\\u0002\\u0134P\\u0003\\u0002\\u0002\\u0002\\u0135\\u0139\\t\\u0005\\u0002\",\n \"\\u0002\\u0136\\u0138\\t\\u0006\\u0002\\u0002\\u0137\\u0136\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0138\\u013b\\u0003\\u0002\\u0002\\u0002\\u0139\\u0137\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0139\\u013a\\u0003\\u0002\\u0002\\u0002\\u013aR\\u0003\\u0002\\u0002\",\n \"\\u0002\\u013b\\u0139\\u0003\\u0002\\u0002\\u0002\\u013c\\u013d\\u0005Q)\\u0002\",\n \"\\u013d\\u013e\\u00070\\u0002\\u0002\\u013e\\u013f\\u0005Q)\\u0002\\u013fT\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0140\\u0142\\t\\u0007\\u0002\\u0002\\u0141\\u0140\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0142\\u0143\\u0003\\u0002\\u0002\\u0002\\u0143\\u0141\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0143\\u0144\\u0003\\u0002\\u0002\\u0002\\u0144\\u015c\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0145\\u0146\\u00072\\u0002\\u0002\\u0146\\u014a\\u0007\",\n \"z\\u0002\\u0002\\u0147\\u0148\\u00072\\u0002\\u0002\\u0148\\u014a\\u0007Z\\u0002\",\n \"\\u0002\\u0149\\u0145\\u0003\\u0002\\u0002\\u0002\\u0149\\u0147\\u0003\\u0002\\u0002\",\n \"\\u0002\\u014a\\u014c\\u0003\\u0002\\u0002\\u0002\\u014b\\u014d\\u0005g4\\u0002\",\n \"\\u014c\\u014b\\u0003\\u0002\\u0002\\u0002\\u014d\\u014e\\u0003\\u0002\\u0002\\u0002\",\n \"\\u014e\\u014c\\u0003\\u0002\\u0002\\u0002\\u014e\\u014f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u014f\\u015c\\u0003\\u0002\\u0002\\u0002\\u0150\\u0151\\u00072\\u0002\\u0002\",\n \"\\u0151\\u0155\\u0007d\\u0002\\u0002\\u0152\\u0153\\u00072\\u0002\\u0002\\u0153\",\n \"\\u0155\\u0007D\\u0002\\u0002\\u0154\\u0150\\u0003\\u0002\\u0002\\u0002\\u0154\",\n \"\\u0152\\u0003\\u0002\\u0002\\u0002\\u0155\\u0157\\u0003\\u0002\\u0002\\u0002\\u0156\",\n \"\\u0158\\t\\b\\u0002\\u0002\\u0157\\u0156\\u0003\\u0002\\u0002\\u0002\\u0158\\u0159\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0159\\u0157\\u0003\\u0002\\u0002\\u0002\\u0159\\u015a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015a\\u015c\\u0003\\u0002\\u0002\\u0002\\u015b\\u0141\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015b\\u0149\\u0003\\u0002\\u0002\\u0002\\u015b\\u0154\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015cV\\u0003\\u0002\\u0002\\u0002\\u015d\\u015f\",\n \"\\t\\u0007\\u0002\\u0002\\u015e\\u015d\\u0003\\u0002\\u0002\\u0002\\u015f\\u0160\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0160\\u015e\\u0003\\u0002\\u0002\\u0002\\u0160\\u0161\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0161\\u0162\\u0003\\u0002\\u0002\\u0002\\u0162\\u0164\",\n \"\\u00070\\u0002\\u0002\\u0163\\u0165\\t\\u0007\\u0002\\u0002\\u0164\\u0163\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0165\\u0166\\u0003\\u0002\\u0002\\u0002\\u0166\\u0164\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0166\\u0167\\u0003\\u0002\\u0002\\u0002\\u0167\\u0176\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0168\\u016a\\t\\u0007\\u0002\\u0002\\u0169\\u0168\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016a\\u016b\\u0003\\u0002\\u0002\\u0002\\u016b\\u0169\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016b\\u016c\\u0003\\u0002\\u0002\\u0002\\u016c\\u016d\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016d\\u0171\\u00070\\u0002\\u0002\\u016e\\u0170\\t\\u0007\",\n \"\\u0002\\u0002\\u016f\\u016e\\u0003\\u0002\\u0002\\u0002\\u0170\\u0173\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0171\\u016f\\u0003\\u0002\\u0002\\u0002\\u0171\\u0172\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0172\\u0174\\u0003\\u0002\\u0002\\u0002\\u0173\\u0171\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0174\\u0176\\u0005Y-\\u0002\\u0175\\u015e\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0175\\u0169\\u0003\\u0002\\u0002\\u0002\\u0176X\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0177\\u0179\\t\\t\\u0002\\u0002\\u0178\\u017a\\t\\u0002\\u0002\\u0002\\u0179\",\n \"\\u0178\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u0003\\u0002\\u0002\\u0002\\u017a\",\n \"\\u017c\\u0003\\u0002\\u0002\\u0002\\u017b\\u017d\\t\\u0007\\u0002\\u0002\\u017c\",\n \"\\u017b\\u0003\\u0002\\u0002\\u0002\\u017d\\u017e\\u0003\\u0002\\u0002\\u0002\\u017e\",\n \"\\u017c\\u0003\\u0002\\u0002\\u0002\\u017e\\u017f\\u0003\\u0002\\u0002\\u0002\\u017f\",\n \"Z\\u0003\\u0002\\u0002\\u0002\\u0180\\u0184\\u0007$\\u0002\\u0002\\u0181\\u0183\",\n \"\\u0005]/\\u0002\\u0182\\u0181\\u0003\\u0002\\u0002\\u0002\\u0183\\u0186\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0184\\u0182\\u0003\\u0002\\u0002\\u0002\\u0184\\u0185\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0185\\u0187\\u0003\\u0002\\u0002\\u0002\\u0186\\u0184\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0187\\u0188\\u0007$\\u0002\\u0002\\u0188\\\\\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0189\\u018c\\n\\n\\u0002\\u0002\\u018a\\u018c\\u0005k6\\u0002\\u018b\",\n \"\\u0189\\u0003\\u0002\\u0002\\u0002\\u018b\\u018a\\u0003\\u0002\\u0002\\u0002\\u018c\",\n \"^\\u0003\\u0002\\u0002\\u0002\\u018d\\u0190\\u0007)\\u0002\\u0002\\u018e\\u0191\",\n \"\\u0005k6\\u0002\\u018f\\u0191\\n\\u000b\\u0002\\u0002\\u0190\\u018e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0190\\u018f\\u0003\\u0002\\u0002\\u0002\\u0191\\u0192\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0192\\u0193\\u0007)\\u0002\\u0002\\u0193`\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0194\\u0195\\t\\f\\u0002\\u0002\\u0195\\u0196\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0196\\u0197\\b1\\u0002\\u0002\\u0197b\\u0003\\u0002\\u0002\\u0002\\u0198\\u0199\",\n \"\\u0007=\\u0002\\u0002\\u0199d\\u0003\\u0002\\u0002\\u0002\\u019a\\u019c\\t\\r\\u0002\",\n \"\\u0002\\u019b\\u019a\\u0003\\u0002\\u0002\\u0002\\u019c\\u019d\\u0003\\u0002\\u0002\",\n \"\\u0002\\u019d\\u019b\\u0003\\u0002\\u0002\\u0002\\u019d\\u019e\\u0003\\u0002\\u0002\",\n \"\\u0002\\u019e\\u01a1\\u0003\\u0002\\u0002\\u0002\\u019f\\u01a1\\u0005c2\\u0002\",\n \"\\u01a0\\u019b\\u0003\\u0002\\u0002\\u0002\\u01a0\\u019f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01a1f\\u0003\\u0002\\u0002\\u0002\\u01a2\\u01a3\\t\\u000e\\u0002\\u0002\\u01a3\",\n \"h\\u0003\\u0002\\u0002\\u0002\\u01a4\\u01a5\\t\\u000f\\u0002\\u0002\\u01a5j\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01a6\\u01a7\\u0007^\\u0002\\u0002\\u01a7\\u01ab\\t\\u0010\",\n \"\\u0002\\u0002\\u01a8\\u01ab\\u0005o8\\u0002\\u01a9\\u01ab\\u0005m7\\u0002\\u01aa\",\n \"\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01aa\\u01a8\\u0003\\u0002\\u0002\\u0002\\u01aa\",\n \"\\u01a9\\u0003\\u0002\\u0002\\u0002\\u01abl\\u0003\\u0002\\u0002\\u0002\\u01ac\",\n \"\\u01ad\\u0007^\\u0002\\u0002\\u01ad\\u01ae\\t\\u0011\\u0002\\u0002\\u01ae\\u01af\",\n \"\\u0005i5\\u0002\\u01af\\u01b0\\u0005i5\\u0002\\u01b0\\u01b8\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01b1\\u01b2\\u0007^\\u0002\\u0002\\u01b2\\u01b3\\u0005i5\\u0002\\u01b3\",\n \"\\u01b4\\u0005i5\\u0002\\u01b4\\u01b8\\u0003\\u0002\\u0002\\u0002\\u01b5\\u01b6\",\n \"\\u0007^\\u0002\\u0002\\u01b6\\u01b8\\u0005i5\\u0002\\u01b7\\u01ac\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b7\\u01b1\\u0003\\u0002\\u0002\\u0002\\u01b7\\u01b5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b8n\\u0003\\u0002\\u0002\\u0002\\u01b9\\u01ba\\u0007^\\u0002\",\n \"\\u0002\\u01ba\\u01bb\\u0007w\\u0002\\u0002\\u01bb\\u01bc\\u0005g4\\u0002\\u01bc\",\n \"\\u01bd\\u0005g4\\u0002\\u01bd\\u01be\\u0005g4\\u0002\\u01be\\u01bf\\u0005g4\\u0002\",\n \"\\u01bfp\\u0003\\u0002\\u0002\\u0002\\u01c0\\u01c1\\u00071\\u0002\\u0002\\u01c1\",\n \"\\u01c2\\u00071\\u0002\\u0002\\u01c2\\u01c6\\u0003\\u0002\\u0002\\u0002\\u01c3\",\n \"\\u01c5\\n\\r\\u0002\\u0002\\u01c4\\u01c3\\u0003\\u0002\\u0002\\u0002\\u01c5\\u01c8\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c6\\u01c4\\u0003\\u0002\\u0002\\u0002\\u01c6\\u01c7\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c7\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01c8\\u01c6\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cb\\u0007\\u000f\\u0002\\u0002\\u01ca\\u01c9\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ca\\u01cb\\u0003\\u0002\\u0002\\u0002\\u01cb\\u01cc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01cc\\u01d9\\u0007\\f\\u0002\\u0002\\u01cd\\u01ce\",\n \"\\u00071\\u0002\\u0002\\u01ce\\u01cf\\u0007,\\u0002\\u0002\\u01cf\\u01d3\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d0\\u01d2\\u000b\\u0002\\u0002\\u0002\\u01d1\\u01d0\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d2\\u01d5\\u0003\\u0002\\u0002\\u0002\\u01d3\\u01d4\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d3\\u01d1\\u0003\\u0002\\u0002\\u0002\\u01d4\\u01d6\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d5\\u01d3\\u0003\\u0002\\u0002\\u0002\\u01d6\\u01d7\\u0007\",\n \",\\u0002\\u0002\\u01d7\\u01d9\\u00071\\u0002\\u0002\\u01d8\\u01c0\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01d8\\u01cd\\u0003\\u0002\\u0002\\u0002\\u01d9\\u01da\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01da\\u01db\\b9\\u0003\\u0002\\u01dbr\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001d\\u0002\\u012f\\u0139\\u0143\\u0149\\u014e\\u0154\\u0159\\u015b\\u0160\\u0166\",\n \"\\u016b\\u0171\\u0175\\u0179\\u017e\\u0184\\u018b\\u0190\\u019d\\u01a0\\u01aa\\u01b7\",\n \"\\u01c6\\u01ca\\u01d3\\u01d8\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_BREAK = 15;\nivprog.RK_DO = 16;\nivprog.RK_WHILE = 17;\nivprog.RK_IF = 18;\nivprog.RK_ELSE = 19;\nivprog.RK_FALSE = 20;\nivprog.RK_TRUE = 21;\nivprog.OPEN_PARENTHESIS = 22;\nivprog.CLOSE_PARENTHESIS = 23;\nivprog.OPEN_BRACE = 24;\nivprog.CLOSE_BRACE = 25;\nivprog.OPEN_CURLY = 26;\nivprog.CLOSE_CURLY = 27;\nivprog.COMMA = 28;\nivprog.EQUAL = 29;\nivprog.SUM_OP = 30;\nivprog.MULTI_OP = 31;\nivprog.AND_OPERATOR = 32;\nivprog.OR_OPERATOR = 33;\nivprog.RELATIONAL_OPERATOR = 34;\nivprog.COLON = 35;\nivprog.NOT_OPERATOR = 36;\nivprog.ID = 37;\nivprog.LIB_ID = 38;\nivprog.INTEGER = 39;\nivprog.REAL = 40;\nivprog.STRING = 41;\nivprog.CHARACTER = 42;\nivprog.WHITESPACE = 43;\nivprog.EOS = 44;\nivprog.COMMENTS = 45;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'programa'\", \"'real'\", \"'vazio'\", \n \"'logico'\", \"'cadeia'\", \"'inteiro'\", \"'caractere'\", \n \"'escolha'\", \"'caso'\", \"'contrario'\", \n \"'const'\", \"'funcao'\", \"'retorne'\", \"'para'\", \n \"'pare'\", \"'faca'\", \"'enquanto'\", \"'se'\", \n \"'senao'\", \"'falso'\", \"'verdadeiro'\", \n \"'('\", \"')'\", \"'['\", \"']'\", \"'{'\", \"'}'\", \n \"','\", \"'='\", null, null, null, null, \n null, \"':'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \"RK_DO\", \n \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"OPEN_PARENTHESIS\", \"CLOSE_PARENTHESIS\", \n \"OPEN_BRACE\", \"CLOSE_BRACE\", \"OPEN_CURLY\", \n \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \"SUM_OP\", \n \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"STRING\", \n \"CHARACTER\", \"WHITESPACE\", \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \n \"RK_DO\", \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \n \"RK_FALSE\", \"RK_TRUE\", \"RK_LOGICAL_NOT\", \n \"RK_LOGICAL_AND\", \"RK_LOGICAL_OR\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \n \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"ExponentPart\", \n \"STRING\", \"STRING_CHARACTER\", \"CHARACTER\", \n \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \"HEX_DIGIT\", \n \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \"ESC_UNICODE\", \n \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"inicio\",\n $read: \"leia\",\n $write: \"escreva\",\n $numElements: \"total_de_elementos\",\n $matrixLines: \"total_de_linhas\",\n $matrixColumns: \"total_de_colunas\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"char_at\",\n $isReal: \"e_real\",\n $isInt: \"e_inteiro\",\n $isBool: \"e_logico\",\n $castReal: \"como_real\",\n $castInt: \"como_inteiro\",\n $castBool: \"como_logico\",\n $castString: \"como_cadeia\",\n $sin: \"seno\",\n $cos: \"cosseno\",\n $tan: \"tangente\",\n $sqrt: \"raiz_quadrada\",\n $pow: \"potencia\",\n $log: \"logaritmo\",\n $abs: \"modulo\",\n $negate: \"trocar_sinal\",\n $invert: \"inverter_valor\",\n $max: \"maximo\",\n $min: \"minimo\"\n}","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Matematica\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"Conversao\"\n}","import errors from './error.json';\nimport messages from './message.json'\nimport ui from './ui.json';\n\nexport default {\n 'message' : messages,\n 'error': errors,\n 'ui': ui\n}\n","import errors from './error.json';\nimport messages from './message.json'\nimport ui from './ui.json';\n\nexport default {\n 'message' : messages,\n 'error': errors,\n 'ui': ui\n}\n","import EN from './en';\nimport PT from './pt';\nimport ES from './es';\n\nexport default {\n 'en': EN,\n 'pt': PT,\n 'es': ES\n}\n","import errors from './error.json';\nimport messages from './message.json'\nimport ui from './ui.json';\n\nexport default {\n 'message' : messages,\n 'error': errors,\n 'ui': ui\n}\n","/**!\n * Sortable\n * @author\tRubaXa <trash@rubaxa.org>\n * @license MIT\n */\n\n(function sortableModule(factory) {\n\t\"use strict\";\n\n\tif (typeof define === \"function\" && define.amd) {\n\t\tdefine(factory);\n\t}\n\telse if (typeof module != \"undefined\" && typeof module.exports != \"undefined\") {\n\t\tmodule.exports = factory();\n\t}\n\telse {\n\t\t/* jshint sub:true */\n\t\twindow[\"Sortable\"] = factory();\n\t}\n})(function sortableFactory() {\n\t\"use strict\";\n\n\tif (typeof window == \"undefined\" || !window.document) {\n\t\treturn function sortableError() {\n\t\t\tthrow new Error(\"Sortable.js requires a window with a document\");\n\t\t};\n\t}\n\n\tvar dragEl,\n\t\tparentEl,\n\t\tghostEl,\n\t\tcloneEl,\n\t\trootEl,\n\t\tnextEl,\n\t\tlastDownEl,\n\n\t\tscrollEl,\n\t\tscrollParentEl,\n\t\tscrollCustomFn,\n\n\t\tlastEl,\n\t\tlastCSS,\n\t\tlastParentCSS,\n\n\t\toldIndex,\n\t\tnewIndex,\n\n\t\tactiveGroup,\n\t\tputSortable,\n\n\t\tautoScroll = {},\n\n\t\ttapEvt,\n\t\ttouchEvt,\n\n\t\tmoved,\n\n\t\t/** @const */\n\t\tR_SPACE = /\\s+/g,\n\t\tR_FLOAT = /left|right|inline/,\n\n\t\texpando = 'Sortable' + (new Date).getTime(),\n\n\t\twin = window,\n\t\tdocument = win.document,\n\t\tparseInt = win.parseInt,\n\n\t\t$ = win.jQuery || win.Zepto,\n\t\tPolymer = win.Polymer,\n\n\t\tcaptureMode = false,\n\n\t\tsupportDraggable = !!('draggable' in document.createElement('div')),\n\t\tsupportCssPointerEvents = (function (el) {\n\t\t\t// false when IE11\n\t\t\tif (!!navigator.userAgent.match(/Trident.*rv[ :]?11\\./)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tel = document.createElement('x');\n\t\t\tel.style.cssText = 'pointer-events:auto';\n\t\t\treturn el.style.pointerEvents === 'auto';\n\t\t})(),\n\n\t\t_silent = false,\n\n\t\tabs = Math.abs,\n\t\tmin = Math.min,\n\n\t\tsavedInputChecked = [],\n\t\ttouchDragOverListeners = [],\n\n\t\t_autoScroll = _throttle(function (/**Event*/evt, /**Object*/options, /**HTMLElement*/rootEl) {\n\t\t\t// Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n\t\t\tif (rootEl && options.scroll) {\n\t\t\t\tvar _this = rootEl[expando],\n\t\t\t\t\tel,\n\t\t\t\t\trect,\n\t\t\t\t\tsens = options.scrollSensitivity,\n\t\t\t\t\tspeed = options.scrollSpeed,\n\n\t\t\t\t\tx = evt.clientX,\n\t\t\t\t\ty = evt.clientY,\n\n\t\t\t\t\twinWidth = window.innerWidth,\n\t\t\t\t\twinHeight = window.innerHeight,\n\n\t\t\t\t\tvx,\n\t\t\t\t\tvy,\n\n\t\t\t\t\tscrollOffsetX,\n\t\t\t\t\tscrollOffsetY\n\t\t\t\t;\n\n\t\t\t\t// Delect scrollEl\n\t\t\t\tif (scrollParentEl !== rootEl) {\n\t\t\t\t\tscrollEl = options.scroll;\n\t\t\t\t\tscrollParentEl = rootEl;\n\t\t\t\t\tscrollCustomFn = options.scrollFn;\n\n\t\t\t\t\tif (scrollEl === true) {\n\t\t\t\t\t\tscrollEl = rootEl;\n\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif ((scrollEl.offsetWidth < scrollEl.scrollWidth) ||\n\t\t\t\t\t\t\t\t(scrollEl.offsetHeight < scrollEl.scrollHeight)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t\t\t} while (scrollEl = scrollEl.parentNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (scrollEl) {\n\t\t\t\t\tel = scrollEl;\n\t\t\t\t\trect = scrollEl.getBoundingClientRect();\n\t\t\t\t\tvx = (abs(rect.right - x) <= sens) - (abs(rect.left - x) <= sens);\n\t\t\t\t\tvy = (abs(rect.bottom - y) <= sens) - (abs(rect.top - y) <= sens);\n\t\t\t\t}\n\n\n\t\t\t\tif (!(vx || vy)) {\n\t\t\t\t\tvx = (winWidth - x <= sens) - (x <= sens);\n\t\t\t\t\tvy = (winHeight - y <= sens) - (y <= sens);\n\n\t\t\t\t\t/* jshint expr:true */\n\t\t\t\t\t(vx || vy) && (el = win);\n\t\t\t\t}\n\n\n\t\t\t\tif (autoScroll.vx !== vx || autoScroll.vy !== vy || autoScroll.el !== el) {\n\t\t\t\t\tautoScroll.el = el;\n\t\t\t\t\tautoScroll.vx = vx;\n\t\t\t\t\tautoScroll.vy = vy;\n\n\t\t\t\t\tclearInterval(autoScroll.pid);\n\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tautoScroll.pid = setInterval(function () {\n\t\t\t\t\t\t\tscrollOffsetY = vy ? vy * speed : 0;\n\t\t\t\t\t\t\tscrollOffsetX = vx ? vx * speed : 0;\n\n\t\t\t\t\t\t\tif ('function' === typeof(scrollCustomFn)) {\n\t\t\t\t\t\t\t\treturn scrollCustomFn.call(_this, scrollOffsetX, scrollOffsetY, evt);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (el === win) {\n\t\t\t\t\t\t\t\twin.scrollTo(win.pageXOffset + scrollOffsetX, win.pageYOffset + scrollOffsetY);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tel.scrollTop += scrollOffsetY;\n\t\t\t\t\t\t\t\tel.scrollLeft += scrollOffsetX;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 24);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 30),\n\n\t\t_prepareGroup = function (options) {\n\t\t\tfunction toFn(value, pull) {\n\t\t\t\tif (value === void 0 || value === true) {\n\t\t\t\t\tvalue = group.name;\n\t\t\t\t}\n\n\t\t\t\tif (typeof value === 'function') {\n\t\t\t\t\treturn value;\n\t\t\t\t} else {\n\t\t\t\t\treturn function (to, from) {\n\t\t\t\t\t\tvar fromGroup = from.options.group.name;\n\n\t\t\t\t\t\treturn pull\n\t\t\t\t\t\t\t? value\n\t\t\t\t\t\t\t: value && (value.join\n\t\t\t\t\t\t\t\t? value.indexOf(fromGroup) > -1\n\t\t\t\t\t\t\t\t: (fromGroup == value)\n\t\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\tvar group = {};\n\t\t\tvar originalGroup = options.group;\n\n\t\t\tif (!originalGroup || typeof originalGroup != 'object') {\n\t\t\t\toriginalGroup = {name: originalGroup};\n\t\t\t}\n\n\t\t\tgroup.name = originalGroup.name;\n\t\t\tgroup.checkPull = toFn(originalGroup.pull, true);\n\t\t\tgroup.checkPut = toFn(originalGroup.put);\n\t\t\tgroup.revertClone = originalGroup.revertClone;\n\n\t\t\toptions.group = group;\n\t\t}\n\t;\n\n\n\t/**\n\t * @class Sortable\n\t * @param {HTMLElement} el\n\t * @param {Object} [options]\n\t */\n\tfunction Sortable(el, options) {\n\t\tif (!(el && el.nodeType && el.nodeType === 1)) {\n\t\t\tthrow 'Sortable: `el` must be HTMLElement, and not ' + {}.toString.call(el);\n\t\t}\n\n\t\tthis.el = el; // root element\n\t\tthis.options = options = _extend({}, options);\n\n\n\t\t// Export instance\n\t\tel[expando] = this;\n\n\t\t// Default options\n\t\tvar defaults = {\n\t\t\tgroup: Math.random(),\n\t\t\tsort: true,\n\t\t\tdisabled: false,\n\t\t\tstore: null,\n\t\t\thandle: null,\n\t\t\tscroll: true,\n\t\t\tscrollSensitivity: 30,\n\t\t\tscrollSpeed: 10,\n\t\t\tdraggable: /[uo]l/i.test(el.nodeName) ? 'li' : '>*',\n\t\t\tghostClass: 'sortable-ghost',\n\t\t\tchosenClass: 'sortable-chosen',\n\t\t\tdragClass: 'sortable-drag',\n\t\t\tignore: 'a, img',\n\t\t\tfilter: null,\n\t\t\tpreventOnFilter: true,\n\t\t\tanimation: 0,\n\t\t\tsetData: function (dataTransfer, dragEl) {\n\t\t\t\tdataTransfer.setData('Text', dragEl.textContent);\n\t\t\t},\n\t\t\tdropBubble: false,\n\t\t\tdragoverBubble: false,\n\t\t\tdataIdAttr: 'data-id',\n\t\t\tdelay: 0,\n\t\t\tforceFallback: false,\n\t\t\tfallbackClass: 'sortable-fallback',\n\t\t\tfallbackOnBody: false,\n\t\t\tfallbackTolerance: 0,\n\t\t\tfallbackOffset: {x: 0, y: 0}\n\t\t};\n\n\n\t\t// Set default options\n\t\tfor (var name in defaults) {\n\t\t\t!(name in options) && (options[name] = defaults[name]);\n\t\t}\n\n\t\t_prepareGroup(options);\n\n\t\t// Bind all private methods\n\t\tfor (var fn in this) {\n\t\t\tif (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n\t\t\t\tthis[fn] = this[fn].bind(this);\n\t\t\t}\n\t\t}\n\n\t\t// Setup drag mode\n\t\tthis.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n\t\t// Bind events\n\t\t_on(el, 'mousedown', this._onTapStart);\n\t\t_on(el, 'touchstart', this._onTapStart);\n\t\t_on(el, 'pointerdown', this._onTapStart);\n\n\t\tif (this.nativeDraggable) {\n\t\t\t_on(el, 'dragover', this);\n\t\t\t_on(el, 'dragenter', this);\n\t\t}\n\n\t\ttouchDragOverListeners.push(this._onDragOver);\n\n\t\t// Restore sorting\n\t\toptions.store && this.sort(options.store.get(this));\n\t}\n\n\n\tSortable.prototype = /** @lends Sortable.prototype */ {\n\t\tconstructor: Sortable,\n\n\t\t_onTapStart: function (/** Event|TouchEvent */evt) {\n\t\t\tvar _this = this,\n\t\t\t\tel = this.el,\n\t\t\t\toptions = this.options,\n\t\t\t\tpreventOnFilter = options.preventOnFilter,\n\t\t\t\ttype = evt.type,\n\t\t\t\ttouch = evt.touches && evt.touches[0],\n\t\t\t\ttarget = (touch || evt).target,\n\t\t\t\toriginalTarget = evt.target.shadowRoot && (evt.path && evt.path[0]) || target,\n\t\t\t\tfilter = options.filter,\n\t\t\t\tstartIndex;\n\n\t\t\t_saveInputCheckedState(el);\n\n\n\t\t\t// Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\t\t\tif (dragEl) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n\t\t\t\treturn; // only left button or enabled\n\t\t\t}\n\n\n\t\t\ttarget = _closest(target, options.draggable, el);\n\n\t\t\tif (!target) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (lastDownEl === target) {\n\t\t\t\t// Ignoring duplicate `down`\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get the index of the dragged element within its parent\n\t\t\tstartIndex = _index(target, options.draggable);\n\n\t\t\t// Check filter\n\t\t\tif (typeof filter === 'function') {\n\t\t\t\tif (filter.call(this, evt, target, this)) {\n\t\t\t\t\t_dispatchEvent(_this, originalTarget, 'filter', target, el, startIndex);\n\t\t\t\t\tpreventOnFilter && evt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (filter) {\n\t\t\t\tfilter = filter.split(',').some(function (criteria) {\n\t\t\t\t\tcriteria = _closest(originalTarget, criteria.trim(), el);\n\n\t\t\t\t\tif (criteria) {\n\t\t\t\t\t\t_dispatchEvent(_this, criteria, 'filter', target, el, startIndex);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (filter) {\n\t\t\t\t\tpreventOnFilter && evt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.handle && !_closest(originalTarget, options.handle, el)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Prepare `dragstart`\n\t\t\tthis._prepareDragStart(evt, touch, target, startIndex);\n\t\t},\n\n\t\t_prepareDragStart: function (/** Event */evt, /** Touch */touch, /** HTMLElement */target, /** Number */startIndex) {\n\t\t\tvar _this = this,\n\t\t\t\tel = _this.el,\n\t\t\t\toptions = _this.options,\n\t\t\t\townerDocument = el.ownerDocument,\n\t\t\t\tdragStartFn;\n\n\t\t\tif (target && !dragEl && (target.parentNode === el)) {\n\t\t\t\ttapEvt = evt;\n\n\t\t\t\trootEl = el;\n\t\t\t\tdragEl = target;\n\t\t\t\tparentEl = dragEl.parentNode;\n\t\t\t\tnextEl = dragEl.nextSibling;\n\t\t\t\tlastDownEl = target;\n\t\t\t\tactiveGroup = options.group;\n\t\t\t\toldIndex = startIndex;\n\n\t\t\t\tthis._lastX = (touch || evt).clientX;\n\t\t\t\tthis._lastY = (touch || evt).clientY;\n\n\t\t\t\tdragEl.style['will-change'] = 'transform';\n\n\t\t\t\tdragStartFn = function () {\n\t\t\t\t\t// Delayed drag has been triggered\n\t\t\t\t\t// we can re-enable the events: touchmove/mousemove\n\t\t\t\t\t_this._disableDelayedDrag();\n\n\t\t\t\t\t// Make the element draggable\n\t\t\t\t\tdragEl.draggable = _this.nativeDraggable;\n\n\t\t\t\t\t// Chosen item\n\t\t\t\t\t_toggleClass(dragEl, options.chosenClass, true);\n\n\t\t\t\t\t// Bind the events: dragstart/dragend\n\t\t\t\t\t_this._triggerDragStart(evt, touch);\n\n\t\t\t\t\t// Drag start event\n\t\t\t\t\t_dispatchEvent(_this, rootEl, 'choose', dragEl, rootEl, oldIndex);\n\t\t\t\t};\n\n\t\t\t\t// Disable \"draggable\"\n\t\t\t\toptions.ignore.split(',').forEach(function (criteria) {\n\t\t\t\t\t_find(dragEl, criteria.trim(), _disableDraggable);\n\t\t\t\t});\n\n\t\t\t\t_on(ownerDocument, 'mouseup', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchend', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchcancel', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'pointercancel', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'selectstart', _this);\n\n\t\t\t\tif (options.delay) {\n\t\t\t\t\t// If the user moves the pointer or let go the click or touch\n\t\t\t\t\t// before the delay has been reached:\n\t\t\t\t\t// disable the delayed drag\n\t\t\t\t\t_on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'mousemove', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchmove', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'pointermove', _this._disableDelayedDrag);\n\n\t\t\t\t\t_this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n\t\t\t\t} else {\n\t\t\t\t\tdragStartFn();\n\t\t\t\t}\n\n\n\t\t\t}\n\t\t},\n\n\t\t_disableDelayedDrag: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\n\t\t\tclearTimeout(this._dragStartTimer);\n\t\t\t_off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchend', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'mousemove', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchmove', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'pointermove', this._disableDelayedDrag);\n\t\t},\n\n\t\t_triggerDragStart: function (/** Event */evt, /** Touch */touch) {\n\t\t\ttouch = touch || (evt.pointerType == 'touch' ? evt : null);\n\n\t\t\tif (touch) {\n\t\t\t\t// Touch device support\n\t\t\t\ttapEvt = {\n\t\t\t\t\ttarget: dragEl,\n\t\t\t\t\tclientX: touch.clientX,\n\t\t\t\t\tclientY: touch.clientY\n\t\t\t\t};\n\n\t\t\t\tthis._onDragStart(tapEvt, 'touch');\n\t\t\t}\n\t\t\telse if (!this.nativeDraggable) {\n\t\t\t\tthis._onDragStart(tapEvt, true);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_on(dragEl, 'dragend', this);\n\t\t\t\t_on(rootEl, 'dragstart', this._onDragStart);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (document.selection) {\n\t\t\t\t\t// Timeout neccessary for IE9\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tdocument.selection.empty();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t}\n\t\t},\n\n\t\t_dragStarted: function () {\n\t\t\tif (rootEl && dragEl) {\n\t\t\t\tvar options = this.options;\n\n\t\t\t\t// Apply effect\n\t\t\t\t_toggleClass(dragEl, options.ghostClass, true);\n\t\t\t\t_toggleClass(dragEl, options.dragClass, false);\n\n\t\t\t\tSortable.active = this;\n\n\t\t\t\t// Drag start event\n\t\t\t\t_dispatchEvent(this, rootEl, 'start', dragEl, rootEl, oldIndex);\n\t\t\t} else {\n\t\t\t\tthis._nulling();\n\t\t\t}\n\t\t},\n\n\t\t_emulateDragOver: function () {\n\t\t\tif (touchEvt) {\n\t\t\t\tif (this._lastX === touchEvt.clientX && this._lastY === touchEvt.clientY) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis._lastX = touchEvt.clientX;\n\t\t\t\tthis._lastY = touchEvt.clientY;\n\n\t\t\t\tif (!supportCssPointerEvents) {\n\t\t\t\t\t_css(ghostEl, 'display', 'none');\n\t\t\t\t}\n\n\t\t\t\tvar target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY),\n\t\t\t\t\tparent = target,\n\t\t\t\t\ti = touchDragOverListeners.length;\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tdo {\n\t\t\t\t\t\tif (parent[expando]) {\n\t\t\t\t\t\t\twhile (i--) {\n\t\t\t\t\t\t\t\ttouchDragOverListeners[i]({\n\t\t\t\t\t\t\t\t\tclientX: touchEvt.clientX,\n\t\t\t\t\t\t\t\t\tclientY: touchEvt.clientY,\n\t\t\t\t\t\t\t\t\ttarget: target,\n\t\t\t\t\t\t\t\t\trootEl: parent\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttarget = parent; // store last element\n\t\t\t\t\t}\n\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t\twhile (parent = parent.parentNode);\n\t\t\t\t}\n\n\t\t\t\tif (!supportCssPointerEvents) {\n\t\t\t\t\t_css(ghostEl, 'display', '');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t_onTouchMove: function (/**TouchEvent*/evt) {\n\t\t\tif (tapEvt) {\n\t\t\t\tvar\toptions = this.options,\n\t\t\t\t\tfallbackTolerance = options.fallbackTolerance,\n\t\t\t\t\tfallbackOffset = options.fallbackOffset,\n\t\t\t\t\ttouch = evt.touches ? evt.touches[0] : evt,\n\t\t\t\t\tdx = (touch.clientX - tapEvt.clientX) + fallbackOffset.x,\n\t\t\t\t\tdy = (touch.clientY - tapEvt.clientY) + fallbackOffset.y,\n\t\t\t\t\ttranslate3d = evt.touches ? 'translate3d(' + dx + 'px,' + dy + 'px,0)' : 'translate(' + dx + 'px,' + dy + 'px)';\n\n\t\t\t\t// only set the status to dragging, when we are actually dragging\n\t\t\t\tif (!Sortable.active) {\n\t\t\t\t\tif (fallbackTolerance &&\n\t\t\t\t\t\tmin(abs(touch.clientX - this._lastX), abs(touch.clientY - this._lastY)) < fallbackTolerance\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._dragStarted();\n\t\t\t\t}\n\n\t\t\t\t// as well as creating the ghost element on the document body\n\t\t\t\tthis._appendGhost();\n\n\t\t\t\tmoved = true;\n\t\t\t\ttouchEvt = touch;\n\n\t\t\t\t_css(ghostEl, 'webkitTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'mozTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'msTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'transform', translate3d);\n\n\t\t\t\tevt.preventDefault();\n\t\t\t}\n\t\t},\n\n\t\t_appendGhost: function () {\n\t\t\tif (!ghostEl) {\n\t\t\t\tvar rect = dragEl.getBoundingClientRect(),\n\t\t\t\t\tcss = _css(dragEl),\n\t\t\t\t\toptions = this.options,\n\t\t\t\t\tghostRect;\n\n\t\t\t\tghostEl = dragEl.cloneNode(true);\n\n\t\t\t\t_toggleClass(ghostEl, options.ghostClass, false);\n\t\t\t\t_toggleClass(ghostEl, options.fallbackClass, true);\n\t\t\t\t_toggleClass(ghostEl, options.dragClass, true);\n\n\t\t\t\t_css(ghostEl, 'top', rect.top - parseInt(css.marginTop, 10));\n\t\t\t\t_css(ghostEl, 'left', rect.left - parseInt(css.marginLeft, 10));\n\t\t\t\t_css(ghostEl, 'width', rect.width);\n\t\t\t\t_css(ghostEl, 'height', rect.height);\n\t\t\t\t_css(ghostEl, 'opacity', '0.8');\n\t\t\t\t_css(ghostEl, 'position', 'fixed');\n\t\t\t\t_css(ghostEl, 'zIndex', '100000');\n\t\t\t\t_css(ghostEl, 'pointerEvents', 'none');\n\n\t\t\t\toptions.fallbackOnBody && document.body.appendChild(ghostEl) || rootEl.appendChild(ghostEl);\n\n\t\t\t\t// Fixing dimensions.\n\t\t\t\tghostRect = ghostEl.getBoundingClientRect();\n\t\t\t\t_css(ghostEl, 'width', rect.width * 2 - ghostRect.width);\n\t\t\t\t_css(ghostEl, 'height', rect.height * 2 - ghostRect.height);\n\t\t\t}\n\t\t},\n\n\t\t_onDragStart: function (/**Event*/evt, /**boolean*/useFallback) {\n\t\t\tvar dataTransfer = evt.dataTransfer,\n\t\t\t\toptions = this.options;\n\n\t\t\tthis._offUpEvents();\n\n\t\t\tif (activeGroup.checkPull(this, this, dragEl, evt)) {\n\t\t\t\tcloneEl = _clone(dragEl);\n\n\t\t\t\tcloneEl.draggable = false;\n\t\t\t\tcloneEl.style['will-change'] = '';\n\n\t\t\t\t_css(cloneEl, 'display', 'none');\n\t\t\t\t_toggleClass(cloneEl, this.options.chosenClass, false);\n\n\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\n\t\t\t\t_dispatchEvent(this, rootEl, 'clone', dragEl);\n\t\t\t}\n\n\t\t\t_toggleClass(dragEl, options.dragClass, true);\n\n\t\t\tif (useFallback) {\n\t\t\t\tif (useFallback === 'touch') {\n\t\t\t\t\t// Bind touch events\n\t\t\t\t\t_on(document, 'touchmove', this._onTouchMove);\n\t\t\t\t\t_on(document, 'touchend', this._onDrop);\n\t\t\t\t\t_on(document, 'touchcancel', this._onDrop);\n\t\t\t\t\t_on(document, 'pointermove', this._onTouchMove);\n\t\t\t\t\t_on(document, 'pointerup', this._onDrop);\n\t\t\t\t} else {\n\t\t\t\t\t// Old brwoser\n\t\t\t\t\t_on(document, 'mousemove', this._onTouchMove);\n\t\t\t\t\t_on(document, 'mouseup', this._onDrop);\n\t\t\t\t}\n\n\t\t\t\tthis._loopId = setInterval(this._emulateDragOver, 50);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (dataTransfer) {\n\t\t\t\t\tdataTransfer.effectAllowed = 'move';\n\t\t\t\t\toptions.setData && options.setData.call(this, dataTransfer, dragEl);\n\t\t\t\t}\n\n\t\t\t\t_on(document, 'drop', this);\n\t\t\t\tsetTimeout(this._dragStarted, 0);\n\t\t\t}\n\t\t},\n\n\t\t_onDragOver: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\ttarget,\n\t\t\t\tdragRect,\n\t\t\t\ttargetRect,\n\t\t\t\trevert,\n\t\t\t\toptions = this.options,\n\t\t\t\tgroup = options.group,\n\t\t\t\tactiveSortable = Sortable.active,\n\t\t\t\tisOwner = (activeGroup === group),\n\t\t\t\tisMovingBetweenSortable = false,\n\t\t\t\tcanSort = options.sort;\n\n\t\t\tif (evt.preventDefault !== void 0) {\n\t\t\t\tevt.preventDefault();\n\t\t\t\t!options.dragoverBubble && evt.stopPropagation();\n\t\t\t}\n\n\t\t\tif (dragEl.animated) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmoved = true;\n\n\t\t\tif (activeSortable && !options.disabled &&\n\t\t\t\t(isOwner\n\t\t\t\t\t? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n\t\t\t\t\t: (\n\t\t\t\t\t\tputSortable === this ||\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(activeSortable.lastPullMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) &&\n\t\t\t\t\t\t\tgroup.checkPut(this, activeSortable, dragEl, evt)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t) &&\n\t\t\t\t(evt.rootEl === void 0 || evt.rootEl === this.el) // touch fallback\n\t\t\t) {\n\t\t\t\t// Smart auto-scrolling\n\t\t\t\t_autoScroll(evt, options, this.el);\n\n\t\t\t\tif (_silent) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ttarget = _closest(evt.target, options.draggable, el);\n\t\t\t\tdragRect = dragEl.getBoundingClientRect();\n\n\t\t\t\tif (putSortable !== this) {\n\t\t\t\t\tputSortable = this;\n\t\t\t\t\tisMovingBetweenSortable = true;\n\t\t\t\t}\n\n\t\t\t\tif (revert) {\n\t\t\t\t\t_cloneHide(activeSortable, true);\n\t\t\t\t\tparentEl = rootEl; // actualization\n\n\t\t\t\t\tif (cloneEl || nextEl) {\n\t\t\t\t\t\trootEl.insertBefore(dragEl, cloneEl || nextEl);\n\t\t\t\t\t}\n\t\t\t\t\telse if (!canSort) {\n\t\t\t\t\t\trootEl.appendChild(dragEl);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\n\t\t\t\tif ((el.children.length === 0) || (el.children[0] === ghostEl) ||\n\t\t\t\t\t(el === evt.target) && (_ghostIsLast(el, evt))\n\t\t\t\t) {\n\t\t\t\t\t//assign target only if condition is true\n\t\t\t\t\tif (el.children.length !== 0 && el.children[0] !== ghostEl && el === evt.target) {\n\t\t\t\t\t\ttarget = el.lastElementChild;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (target) {\n\t\t\t\t\t\tif (target.animated) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttargetRect = target.getBoundingClientRect();\n\t\t\t\t\t}\n\n\t\t\t\t\t_cloneHide(activeSortable, isOwner);\n\n\t\t\t\t\tif (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt) !== false) {\n\t\t\t\t\t\tif (!dragEl.contains(el)) {\n\t\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\t\tparentEl = el; // actualization\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._animate(dragRect, dragEl);\n\t\t\t\t\t\ttarget && this._animate(targetRect, target);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (target && !target.animated && target !== dragEl && (target.parentNode[expando] !== void 0)) {\n\t\t\t\t\tif (lastEl !== target) {\n\t\t\t\t\t\tlastEl = target;\n\t\t\t\t\t\tlastCSS = _css(target);\n\t\t\t\t\t\tlastParentCSS = _css(target.parentNode);\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetRect = target.getBoundingClientRect();\n\n\t\t\t\t\tvar width = targetRect.right - targetRect.left,\n\t\t\t\t\t\theight = targetRect.bottom - targetRect.top,\n\t\t\t\t\t\tfloating = R_FLOAT.test(lastCSS.cssFloat + lastCSS.display)\n\t\t\t\t\t\t\t|| (lastParentCSS.display == 'flex' && lastParentCSS['flex-direction'].indexOf('row') === 0),\n\t\t\t\t\t\tisWide = (target.offsetWidth > dragEl.offsetWidth),\n\t\t\t\t\t\tisLong = (target.offsetHeight > dragEl.offsetHeight),\n\t\t\t\t\t\thalfway = (floating ? (evt.clientX - targetRect.left) / width : (evt.clientY - targetRect.top) / height) > 0.5,\n\t\t\t\t\t\tnextSibling = target.nextElementSibling,\n\t\t\t\t\t\tafter = false\n\t\t\t\t\t;\n\n\t\t\t\t\tif (floating) {\n\t\t\t\t\t\tvar elTop = dragEl.offsetTop,\n\t\t\t\t\t\t\ttgTop = target.offsetTop;\n\n\t\t\t\t\t\tif (elTop === tgTop) {\n\t\t\t\t\t\t\tafter = (target.previousElementSibling === dragEl) && !isWide || halfway && isWide;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (target.previousElementSibling === dragEl || dragEl.previousElementSibling === target) {\n\t\t\t\t\t\t\tafter = (evt.clientY - targetRect.top) / height > 0.5;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tafter = tgTop > elTop;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!isMovingBetweenSortable) {\n\t\t\t\t\t\tafter = (nextSibling !== dragEl) && !isLong || halfway && isLong;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n\t\t\t\t\tif (moveVector !== false) {\n\t\t\t\t\t\tif (moveVector === 1 || moveVector === -1) {\n\t\t\t\t\t\t\tafter = (moveVector === 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_silent = true;\n\t\t\t\t\t\tsetTimeout(_unsilent, 30);\n\n\t\t\t\t\t\t_cloneHide(activeSortable, isOwner);\n\n\t\t\t\t\t\tif (!dragEl.contains(el)) {\n\t\t\t\t\t\t\tif (after && !nextSibling) {\n\t\t\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttarget.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparentEl = dragEl.parentNode; // actualization\n\n\t\t\t\t\t\tthis._animate(dragRect, dragEl);\n\t\t\t\t\t\tthis._animate(targetRect, target);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_animate: function (prevRect, target) {\n\t\t\tvar ms = this.options.animation;\n\n\t\t\tif (ms) {\n\t\t\t\tvar currentRect = target.getBoundingClientRect();\n\n\t\t\t\tif (prevRect.nodeType === 1) {\n\t\t\t\t\tprevRect = prevRect.getBoundingClientRect();\n\t\t\t\t}\n\n\t\t\t\t_css(target, 'transition', 'none');\n\t\t\t\t_css(target, 'transform', 'translate3d('\n\t\t\t\t\t+ (prevRect.left - currentRect.left) + 'px,'\n\t\t\t\t\t+ (prevRect.top - currentRect.top) + 'px,0)'\n\t\t\t\t);\n\n\t\t\t\ttarget.offsetWidth; // repaint\n\n\t\t\t\t_css(target, 'transition', 'all ' + ms + 'ms');\n\t\t\t\t_css(target, 'transform', 'translate3d(0,0,0)');\n\n\t\t\t\tclearTimeout(target.animated);\n\t\t\t\ttarget.animated = setTimeout(function () {\n\t\t\t\t\t_css(target, 'transition', '');\n\t\t\t\t\t_css(target, 'transform', '');\n\t\t\t\t\ttarget.animated = false;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t},\n\n\t\t_offUpEvents: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\n\t\t\t_off(document, 'touchmove', this._onTouchMove);\n\t\t\t_off(document, 'pointermove', this._onTouchMove);\n\t\t\t_off(ownerDocument, 'mouseup', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchend', this._onDrop);\n\t\t\t_off(ownerDocument, 'pointerup', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchcancel', this._onDrop);\n\t\t\t_off(ownerDocument, 'pointercancel', this._onDrop);\n\t\t\t_off(ownerDocument, 'selectstart', this);\n\t\t},\n\n\t\t_onDrop: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\toptions = this.options;\n\n\t\t\tclearInterval(this._loopId);\n\t\t\tclearInterval(autoScroll.pid);\n\t\t\tclearTimeout(this._dragStartTimer);\n\n\t\t\t// Unbind events\n\t\t\t_off(document, 'mousemove', this._onTouchMove);\n\n\t\t\tif (this.nativeDraggable) {\n\t\t\t\t_off(document, 'drop', this);\n\t\t\t\t_off(el, 'dragstart', this._onDragStart);\n\t\t\t}\n\n\t\t\tthis._offUpEvents();\n\n\t\t\tif (evt) {\n\t\t\t\tif (moved) {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t!options.dropBubble && evt.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n\t\t\t\tif (rootEl === parentEl || Sortable.active.lastPullMode !== 'clone') {\n\t\t\t\t\t// Remove clone\n\t\t\t\t\tcloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n\t\t\t\t}\n\n\t\t\t\tif (dragEl) {\n\t\t\t\t\tif (this.nativeDraggable) {\n\t\t\t\t\t\t_off(dragEl, 'dragend', this);\n\t\t\t\t\t}\n\n\t\t\t\t\t_disableDraggable(dragEl);\n\t\t\t\t\tdragEl.style['will-change'] = '';\n\n\t\t\t\t\t// Remove class's\n\t\t\t\t\t_toggleClass(dragEl, this.options.ghostClass, false);\n\t\t\t\t\t_toggleClass(dragEl, this.options.chosenClass, false);\n\n\t\t\t\t\t// Drag stop event\n\t\t\t\t\t_dispatchEvent(this, rootEl, 'unchoose', dragEl, rootEl, oldIndex);\n\n\t\t\t\t\tif (rootEl !== parentEl) {\n\t\t\t\t\t\tnewIndex = _index(dragEl, options.draggable);\n\n\t\t\t\t\t\tif (newIndex >= 0) {\n\t\t\t\t\t\t\t// Add event\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'add', dragEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t\t// Remove event\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'remove', dragEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t\t// drag from one list and drop into another\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'sort', dragEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (dragEl.nextSibling !== nextEl) {\n\t\t\t\t\t\t\t// Get the index of the dragged element within its parent\n\t\t\t\t\t\t\tnewIndex = _index(dragEl, options.draggable);\n\n\t\t\t\t\t\t\tif (newIndex >= 0) {\n\t\t\t\t\t\t\t\t// drag & drop within the same list\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'update', dragEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex);\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 (Sortable.active) {\n\t\t\t\t\t\t/* jshint eqnull:true */\n\t\t\t\t\t\tif (newIndex == null || newIndex === -1) {\n\t\t\t\t\t\t\tnewIndex = oldIndex;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'end', dragEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t// Save sorting\n\t\t\t\t\t\tthis.save();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._nulling();\n\t\t},\n\n\t\t_nulling: function() {\n\t\t\trootEl =\n\t\t\tdragEl =\n\t\t\tparentEl =\n\t\t\tghostEl =\n\t\t\tnextEl =\n\t\t\tcloneEl =\n\t\t\tlastDownEl =\n\n\t\t\tscrollEl =\n\t\t\tscrollParentEl =\n\n\t\t\ttapEvt =\n\t\t\ttouchEvt =\n\n\t\t\tmoved =\n\t\t\tnewIndex =\n\n\t\t\tlastEl =\n\t\t\tlastCSS =\n\n\t\t\tputSortable =\n\t\t\tactiveGroup =\n\t\t\tSortable.active = null;\n\n\t\t\tsavedInputChecked.forEach(function (el) {\n\t\t\t\tel.checked = true;\n\t\t\t});\n\t\t\tsavedInputChecked.length = 0;\n\t\t},\n\n\t\thandleEvent: function (/**Event*/evt) {\n\t\t\tswitch (evt.type) {\n\t\t\t\tcase 'drop':\n\t\t\t\tcase 'dragend':\n\t\t\t\t\tthis._onDrop(evt);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'dragover':\n\t\t\t\tcase 'dragenter':\n\t\t\t\t\tif (dragEl) {\n\t\t\t\t\t\tthis._onDragOver(evt);\n\t\t\t\t\t\t_globalDragOver(evt);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'selectstart':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Serializes the item into an array of string.\n\t\t * @returns {String[]}\n\t\t */\n\t\ttoArray: function () {\n\t\t\tvar order = [],\n\t\t\t\tel,\n\t\t\t\tchildren = this.el.children,\n\t\t\t\ti = 0,\n\t\t\t\tn = children.length,\n\t\t\t\toptions = this.options;\n\n\t\t\tfor (; i < n; i++) {\n\t\t\t\tel = children[i];\n\t\t\t\tif (_closest(el, options.draggable, this.el)) {\n\t\t\t\t\torder.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn order;\n\t\t},\n\n\n\t\t/**\n\t\t * Sorts the elements according to the array.\n\t\t * @param {String[]} order order of the items\n\t\t */\n\t\tsort: function (order) {\n\t\t\tvar items = {}, rootEl = this.el;\n\n\t\t\tthis.toArray().forEach(function (id, i) {\n\t\t\t\tvar el = rootEl.children[i];\n\n\t\t\t\tif (_closest(el, this.options.draggable, rootEl)) {\n\t\t\t\t\titems[id] = el;\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\torder.forEach(function (id) {\n\t\t\t\tif (items[id]) {\n\t\t\t\t\trootEl.removeChild(items[id]);\n\t\t\t\t\trootEl.appendChild(items[id]);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n\t\t * Save the current sorting\n\t\t */\n\t\tsave: function () {\n\t\t\tvar store = this.options.store;\n\t\t\tstore && store.set(this);\n\t\t},\n\n\n\t\t/**\n\t\t * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n\t\t * @param {HTMLElement} el\n\t\t * @param {String} [selector] default: `options.draggable`\n\t\t * @returns {HTMLElement|null}\n\t\t */\n\t\tclosest: function (el, selector) {\n\t\t\treturn _closest(el, selector || this.options.draggable, this.el);\n\t\t},\n\n\n\t\t/**\n\t\t * Set/get option\n\t\t * @param {string} name\n\t\t * @param {*} [value]\n\t\t * @returns {*}\n\t\t */\n\t\toption: function (name, value) {\n\t\t\tvar options = this.options;\n\n\t\t\tif (value === void 0) {\n\t\t\t\treturn options[name];\n\t\t\t} else {\n\t\t\t\toptions[name] = value;\n\n\t\t\t\tif (name === 'group') {\n\t\t\t\t\t_prepareGroup(options);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Destroy\n\t\t */\n\t\tdestroy: function () {\n\t\t\tvar el = this.el;\n\n\t\t\tel[expando] = null;\n\n\t\t\t_off(el, 'mousedown', this._onTapStart);\n\t\t\t_off(el, 'touchstart', this._onTapStart);\n\t\t\t_off(el, 'pointerdown', this._onTapStart);\n\n\t\t\tif (this.nativeDraggable) {\n\t\t\t\t_off(el, 'dragover', this);\n\t\t\t\t_off(el, 'dragenter', this);\n\t\t\t}\n\n\t\t\t// Remove draggable attributes\n\t\t\tArray.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n\t\t\t\tel.removeAttribute('draggable');\n\t\t\t});\n\n\t\t\ttouchDragOverListeners.splice(touchDragOverListeners.indexOf(this._onDragOver), 1);\n\n\t\t\tthis._onDrop();\n\n\t\t\tthis.el = el = null;\n\t\t}\n\t};\n\n\n\tfunction _cloneHide(sortable, state) {\n\t\tif (sortable.lastPullMode !== 'clone') {\n\t\t\tstate = true;\n\t\t}\n\n\t\tif (cloneEl && (cloneEl.state !== state)) {\n\t\t\t_css(cloneEl, 'display', state ? 'none' : '');\n\n\t\t\tif (!state) {\n\t\t\t\tif (cloneEl.state) {\n\t\t\t\t\tif (sortable.options.group.revertClone) {\n\t\t\t\t\t\trootEl.insertBefore(cloneEl, nextEl);\n\t\t\t\t\t\tsortable._animate(dragEl, cloneEl);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcloneEl.state = state;\n\t\t}\n\t}\n\n\n\tfunction _closest(/**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx) {\n\t\tif (el) {\n\t\t\tctx = ctx || document;\n\n\t\t\tdo {\n\t\t\t\tif ((selector === '>*' && el.parentNode === ctx) || _matches(el, selector)) {\n\t\t\t\t\treturn el;\n\t\t\t\t}\n\t\t\t\t/* jshint boss:true */\n\t\t\t} while (el = _getParentOrHost(el));\n\t\t}\n\n\t\treturn null;\n\t}\n\n\n\tfunction _getParentOrHost(el) {\n\t\tvar parent = el.host;\n\n\t\treturn (parent && parent.nodeType) ? parent : el.parentNode;\n\t}\n\n\n\tfunction _globalDragOver(/**Event*/evt) {\n\t\tif (evt.dataTransfer) {\n\t\t\tevt.dataTransfer.dropEffect = 'move';\n\t\t}\n\t\tevt.preventDefault();\n\t}\n\n\n\tfunction _on(el, event, fn) {\n\t\tel.addEventListener(event, fn, captureMode);\n\t}\n\n\n\tfunction _off(el, event, fn) {\n\t\tel.removeEventListener(event, fn, captureMode);\n\t}\n\n\n\tfunction _toggleClass(el, name, state) {\n\t\tif (el) {\n\t\t\tif (el.classList) {\n\t\t\t\tel.classList[state ? 'add' : 'remove'](name);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n\t\t\t\tel.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction _css(el, prop, val) {\n\t\tvar style = el && el.style;\n\n\t\tif (style) {\n\t\t\tif (val === void 0) {\n\t\t\t\tif (document.defaultView && document.defaultView.getComputedStyle) {\n\t\t\t\t\tval = document.defaultView.getComputedStyle(el, '');\n\t\t\t\t}\n\t\t\t\telse if (el.currentStyle) {\n\t\t\t\t\tval = el.currentStyle;\n\t\t\t\t}\n\n\t\t\t\treturn prop === void 0 ? val : val[prop];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!(prop in style)) {\n\t\t\t\t\tprop = '-webkit-' + prop;\n\t\t\t\t}\n\n\t\t\t\tstyle[prop] = val + (typeof val === 'string' ? '' : 'px');\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction _find(ctx, tagName, iterator) {\n\t\tif (ctx) {\n\t\t\tvar list = ctx.getElementsByTagName(tagName), i = 0, n = list.length;\n\n\t\t\tif (iterator) {\n\t\t\t\tfor (; i < n; i++) {\n\t\t\t\t\titerator(list[i], i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\n\n\tfunction _dispatchEvent(sortable, rootEl, name, targetEl, fromEl, startIndex, newIndex) {\n\t\tsortable = (sortable || rootEl[expando]);\n\n\t\tvar evt = document.createEvent('Event'),\n\t\t\toptions = sortable.options,\n\t\t\tonName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n\n\t\tevt.initEvent(name, true, true);\n\n\t\tevt.to = rootEl;\n\t\tevt.from = fromEl || rootEl;\n\t\tevt.item = targetEl || rootEl;\n\t\tevt.clone = cloneEl;\n\n\t\tevt.oldIndex = startIndex;\n\t\tevt.newIndex = newIndex;\n\n\t\trootEl.dispatchEvent(evt);\n\n\t\tif (options[onName]) {\n\t\t\toptions[onName].call(sortable, evt);\n\t\t}\n\t}\n\n\n\tfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvt, willInsertAfter) {\n\t\tvar evt,\n\t\t\tsortable = fromEl[expando],\n\t\t\tonMoveFn = sortable.options.onMove,\n\t\t\tretVal;\n\n\t\tevt = document.createEvent('Event');\n\t\tevt.initEvent('move', true, true);\n\n\t\tevt.to = toEl;\n\t\tevt.from = fromEl;\n\t\tevt.dragged = dragEl;\n\t\tevt.draggedRect = dragRect;\n\t\tevt.related = targetEl || toEl;\n\t\tevt.relatedRect = targetRect || toEl.getBoundingClientRect();\n\t\tevt.willInsertAfter = willInsertAfter;\n\n\t\tfromEl.dispatchEvent(evt);\n\n\t\tif (onMoveFn) {\n\t\t\tretVal = onMoveFn.call(sortable, evt, originalEvt);\n\t\t}\n\n\t\treturn retVal;\n\t}\n\n\n\tfunction _disableDraggable(el) {\n\t\tel.draggable = false;\n\t}\n\n\n\tfunction _unsilent() {\n\t\t_silent = false;\n\t}\n\n\n\t/** @returns {HTMLElement|false} */\n\tfunction _ghostIsLast(el, evt) {\n\t\tvar lastEl = el.lastElementChild,\n\t\t\trect = lastEl.getBoundingClientRect();\n\n\t\t// 5 — min delta\n\t\t// abs — нельзя добавлять, а то глюки при наведении сверху\n\t\treturn (evt.clientY - (rect.top + rect.height) > 5) ||\n\t\t\t(evt.clientX - (rect.left + rect.width) > 5);\n\t}\n\n\n\t/**\n\t * Generate id\n\t * @param {HTMLElement} el\n\t * @returns {String}\n\t * @private\n\t */\n\tfunction _generateId(el) {\n\t\tvar str = el.tagName + el.className + el.src + el.href + el.textContent,\n\t\t\ti = str.length,\n\t\t\tsum = 0;\n\n\t\twhile (i--) {\n\t\t\tsum += str.charCodeAt(i);\n\t\t}\n\n\t\treturn sum.toString(36);\n\t}\n\n\t/**\n\t * Returns the index of an element within its parent for a selected set of\n\t * elements\n\t * @param {HTMLElement} el\n\t * @param {selector} selector\n\t * @return {number}\n\t */\n\tfunction _index(el, selector) {\n\t\tvar index = 0;\n\n\t\tif (!el || !el.parentNode) {\n\t\t\treturn -1;\n\t\t}\n\n\t\twhile (el && (el = el.previousElementSibling)) {\n\t\t\tif ((el.nodeName.toUpperCase() !== 'TEMPLATE') && (selector === '>*' || _matches(el, selector))) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\n\t\treturn index;\n\t}\n\n\tfunction _matches(/**HTMLElement*/el, /**String*/selector) {\n\t\tif (el) {\n\t\t\tselector = selector.split('.');\n\n\t\t\tvar tag = selector.shift().toUpperCase(),\n\t\t\t\tre = new RegExp('\\\\s(' + selector.join('|') + ')(?=\\\\s)', 'g');\n\n\t\t\treturn (\n\t\t\t\t(tag === '' || el.nodeName.toUpperCase() == tag) &&\n\t\t\t\t(!selector.length || ((' ' + el.className + ' ').match(re) || []).length == selector.length)\n\t\t\t);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfunction _throttle(callback, ms) {\n\t\tvar args, _this;\n\n\t\treturn function () {\n\t\t\tif (args === void 0) {\n\t\t\t\targs = arguments;\n\t\t\t\t_this = this;\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif (args.length === 1) {\n\t\t\t\t\t\tcallback.call(_this, args[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback.apply(_this, args);\n\t\t\t\t\t}\n\n\t\t\t\t\targs = void 0;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction _extend(dst, src) {\n\t\tif (dst && src) {\n\t\t\tfor (var key in src) {\n\t\t\t\tif (src.hasOwnProperty(key)) {\n\t\t\t\t\tdst[key] = src[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn dst;\n\t}\n\n\tfunction _clone(el) {\n\t\treturn $\n\t\t\t? $(el).clone(true)[0]\n\t\t\t: (Polymer && Polymer.dom\n\t\t\t\t? Polymer.dom(el).cloneNode(true)\n\t\t\t\t: el.cloneNode(true)\n\t\t\t);\n\t}\n\n\tfunction _saveInputCheckedState(root) {\n\t\tvar inputs = root.getElementsByTagName('input');\n\t\tvar idx = inputs.length;\n\n\t\twhile (idx--) {\n\t\t\tvar el = inputs[idx];\n\t\t\tel.checked && savedInputChecked.push(el);\n\t\t}\n\t}\n\n\t// Fixed #973: \n\t_on(document, 'touchmove', function (evt) {\n\t\tif (Sortable.active) {\n\t\t\tevt.preventDefault();\n\t\t}\n\t});\n\n\ttry {\n\t\twindow.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n\t\t\tget: function () {\n\t\t\t\tcaptureMode = {\n\t\t\t\t\tcapture: false,\n\t\t\t\t\tpassive: false\n\t\t\t\t};\n\t\t\t}\n\t\t}));\n\t} catch (err) {}\n\n\t// Export utils\n\tSortable.utils = {\n\t\ton: _on,\n\t\toff: _off,\n\t\tcss: _css,\n\t\tfind: _find,\n\t\tis: function (el, selector) {\n\t\t\treturn !!_closest(el, selector, el);\n\t\t},\n\t\textend: _extend,\n\t\tthrottle: _throttle,\n\t\tclosest: _closest,\n\t\ttoggleClass: _toggleClass,\n\t\tclone: _clone,\n\t\tindex: _index\n\t};\n\n\n\t/**\n\t * Create sortable instance\n\t * @param {HTMLElement} el\n\t * @param {Object} [options]\n\t */\n\tSortable.create = function (el, options) {\n\t\treturn new Sortable(el, options);\n\t};\n\n\n\t// Export\n\tSortable.version = '1.6.1';\n\treturn Sortable;\n});\n","import { IVProgParser } from \"./../ast/ivprogParser\";\nimport { SemanticAnalyser } from \"./../processor/semantic/semanticAnalyser\";\nimport { IVProgProcessor } from \"./../processor/ivprogProcessor\";\nimport { InputTest } from \"./../util/inputTest\";\nimport { OutputTest } from \"./../util/outputTest\";\nimport * as LocalizedStringsService from \"../services/localizedStringsService\";\nimport { Decimal } from 'decimal.js';\nimport { Config } from \"../util/config\";\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport class IVProgAssessment {\n\n constructor (textCode, testCases, domConsole) {\n this.textCode = textCode;\n this.testCases = testCases;\n this.domConsole = domConsole;\n }\n\n runTest () {\n try {\n // try and show error messages through domconsole\n const parser = IVProgParser.createParser(this.textCode);\n const semantic = new SemanticAnalyser(parser.parseTree());\n const validTree = semantic.analyseTree();\n // loop test cases and show messages through domconsole\n const partialTests = this.testCases.map( (t, name) => {\n return this.partialEvaluateTestCase(new IVProgProcessor(validTree), t.input, t.output, name);\n });\n const testResult = partialTests.reduce((acc, curr) => acc.then(curr), Promise.resolve(0));\n return testResult.then(total => Promise.resolve(total / this.testCases.length))\n .catch(err => {\n this.domConsole.err(\"Erro durante a execução do programa\");// try and show error messages through domconsole\n this.domConsole.err(err.message);\n return Promise.resolve(0);\n });\n } catch (error) {\n this.domConsole.err(\"Erro durante a execução do programa\");// try and show error messages through domconsole\n this.domConsole.err(error.message);\n return Promise.resolve(0);\n }\n }\n\n evaluateTestCase (prog, inputList, outputList, name, accumulator) {\n const outerThis = this;\n const input = new InputTest(inputList);\n const output = new OutputTest();\n prog.registerInput(input);\n prog.registerOutput(output);\n const startTime = Date.now()\n return prog.interpretAST().then( _ => {\n const millis = Date.now() - startTime;\n if (input.inputList.length !== input.index) {\n outerThis.showErrorMessage('test_case_few_reads', name+1);\n outerThis.showMessage('test_case_duration', millis);\n return Promise.resolve(accumulator + 1 * (input.index/inputList.length));\n } else if (output.list.length < outputList.length) {\n outerThis.showErrorMessage('test_case_failed', name + 1, inputList.join(','),\n outputList.join(','), output.list.join(','));\n outerThis.showMessage('test_case_duration', millis);\n return Promise.resolve(accumulator + 1 * (output.list.length/outputList.length));\n } else if (output.list.length > outputList.length) {\n outerThis.showErrorMessage('test_case_failed', name + 1, inputList.join(','),\n outputList.join(','), output.list.join(','));\n outerThis.showMessage('test_case_duration', millis);\n return Promise.resolve(accumulator + 1 * (outputList.length/output.list.length));\n } else {\n const isOk = outerThis.checkOutput(output.list, outputList);\n if(!isOk) {\n outerThis.showErrorMessage('test_case_failed', name + 1, inputList.join(','),\n outputList.join(','), output.list.join(','));\n outerThis.showMessage('test_case_duration', millis);\n return Promise.resolve(accumulator);\n } else {\n outerThis.showMessage('test_case_success', name + 1);\n outerThis.showMessage('test_case_duration', millis);\n return Promise.resolve(accumulator + 1);\n }\n }\n }).catch( error => {\n outerThis.showErrorMessage('test_case_failed_exception', name + 1, error.message);\n return Promise.resolve(accumulator);\n });\n }\n\n partialEvaluateTestCase (prog, inputList, outputList, name) {\n return this.evaluateTestCase.bind(this, prog, inputList, outputList, name);\n }\n\n checkOutput (aList, bList) {\n for (let i = 0; i < aList.length; i++) {\n const outValue = aList[i];\n let castNumberA = parseFloat(outValue);\n if(!Number.isNaN(castNumberA)) {\n let castNumberB = parseFloat(bList[i]);\n if(Number.isNaN(castNumberB)) {\n return false;\n }\n castNumberA = new Decimal(castNumberA);\n castNumberB = new Decimal(castNumberB);\n const decimalPlaces = Math.min(castNumberB.dp(), Config.decimalPlaces);\n Decimal.set({ rounding: Decimal.ROUND_FLOOR});\n castNumberA = new Decimal(castNumberA.toFixed(decimalPlaces));\n castNumberB = new Decimal(castNumberB.toFixed(decimalPlaces));\n const aEqualsB = castNumberA.eq(castNumberB);\n Decimal.set({ rounding: Decimal.ROUND_HALF_UP});\n if (!aEqualsB) {\n return false;\n }\n } else if(outValue != bList[i]) {\n return false;\n }\n }\n return true;\n }\n\n showErrorMessage (errorID, ...args) {\n this.domConsole.err(LocalizedStrings.getError(errorID, args));\n }\n\n showMessage (msgID, ...args) {\n this.domConsole.info(LocalizedStrings.getMessage(msgID, args));\n }\n}","import { Assign } from './assign';\n\nexport class ArrayIndexAssign extends Assign {\n\n constructor (id, lineExpression, columnExpression, expression) {\n super(id, expression);\n this.line = lineExpression;\n this.column = columnExpression;\n }\n}\n","import { Declaration } from './declaration';\n\nexport class ArrayDeclaration extends Declaration {\n\n constructor (id, type, lines, columns, initial, isConst) {\n super(id, type, initial, isConst);\n this.lines = lines;\n this.columns = columns;\n }\n}","import { Command } from './command';\n\nexport class Assign extends Command {\n \n constructor (id, expression) {\n super();\n this.id = id;\n this.expression = expression;\n }\n}","import { Command } from './command';\n\nexport class Break extends Command {\n\n constructor () {\n super();\n }\n}\n","import { Command } from './command';\n\nexport class Case extends Command {\n\n constructor (expression) {\n super();\n this.expression = expression;\n this.commands = [];\n }\n\n setCommands (commands) {\n this.commands = commands;\n }\n\n get isDefault () {\n return this.expression === null;\n }\n}","export class Command {\n\n constructor () {\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n this._sourceInfo = sourceInfo;\n }\n\n get sourceInfo () {\n return this._sourceInfo;\n }\n}\n","export class CommandBlock {\n\t\n\tconstructor(variables, commands) {\n\t\tthis.variables = variables;\n\t\tthis.commands = commands;\n\t\tthis._sourceInfo = null;\n\t}\n\n\tset sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Command } from './command';\n\nexport class Declaration extends Command {\n \n constructor (id, type, initial, isConst) {\n super();\n this.id = id;\n this.type = type;\n this.initial = initial;\n this.isConst = isConst;\n }\n}\n","import { While } from './while';\n\nexport class DoWhile extends While {\n\n constructor(condition, commandBlock) {\n super(condition, commandBlock);\n }\n\n get testFirst () {\n return false;\n }\n \n}","import { Command } from './command';\n\nexport class For extends Command {\n\n constructor (assignment, condition, increment, commandBlock) {\n super();\n this.assignment = assignment;\n this.condition = condition;\n this.increment = increment;\n this.commandBlock = commandBlock;\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n}","export class FormalParameter {\n\n constructor (type, id, byRef = false) {\n this.type = type;\n this.id = id;\n this.byRef = byRef;\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Types } from './../../typeSystem/types';\n\nexport class Function {\n\n constructor(name, returnType, formalParameters, commandBlock) {\n this.name = name;\n this.returnType = returnType;\n this.formalParameters = formalParameters;\n this.commandBlock = commandBlock;\n this._sourceInfo = null;\n }\n\n get isMain () {\n return this.name === null && this.returnType.isCompatible(Types.VOID);\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n\n get variablesDeclarations () {\n return this.commandBlock.variables;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Command } from './command';\n\nexport class IfThenElse extends Command {\n\n constructor (condition, ifTrue, ifFalse) {\n super();\n this.condition = condition;\n this.ifTrue = ifTrue;\n this.ifFalse = ifFalse;\n }\n}","import { Break } from './break';\nimport { Return } from './return';\nimport { Assign } from './assign';\nimport { ArrayIndexAssign } from './arrayAssign';\nimport { Declaration } from './declaration';\nimport { ArrayDeclaration } from './arrayDeclaration';\nimport { While } from './while';\nimport { For } from './for';\nimport { Function } from './function';\nimport { IfThenElse } from './ifThenElse';\nimport { CommandBlock } from './commandBlock';\nimport { DoWhile } from './doWhile';\nimport { Switch } from './switch';\nimport { Case } from './case';\nimport { SysCall } from './sysCall';\nimport { FormalParameter } from './formalParameter';\nimport { FunctionCall } from './../expressions/functionCall'; //Proxy to expression since they do exatcly the same thing\n\nexport {\n Break,\n Return,\n Assign,\n ArrayIndexAssign,\n Declaration,\n ArrayDeclaration,\n While,\n For,\n Function,\n IfThenElse,\n CommandBlock,\n DoWhile,\n Switch,\n Case,\n SysCall,\n FormalParameter,\n FunctionCall\n};","import { Command } from './command';\n\nexport class Return extends Command {\n\n constructor(expression) {\n super();\n this.expression = expression;\n }\n \n}","import { Command } from './command';\n\nexport class Switch extends Command {\n \n constructor (expression, cases) {\n super();\n this.expression = expression;\n this.cases = cases;\n }\n}","/**\n * This class represents all the language defined functions.\n * The language processor uses the id provided here to properly execute the desired function.\n * The function is actually implemented inside the language processor.\n * All the functions can be found at: js/processor/definedFunctions.js\n */\nexport class SysCall {\n\n constructor (langFunc) {\n this.langFunc = langFunc;\n }\n}","import { Command } from './command';\n\nexport class While extends Command {\n\n constructor (expression, commandBlock) {\n super();\n this.expression = expression;\n this.commandBlock = commandBlock;\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n\n get testFirst () {\n \treturn true;\n }\n}","export class SyntaxError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, SyntaxError);\n }\n}\n","import * as LocalizedStringsService from './../../services/localizedStringsService';\nimport { SyntaxError } from './syntaxError';\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport const SyntaxErrorFactory = Object.freeze({\n extra_lines: () => new SyntaxError(LocalizedStrings.getError(\"extra_lines\")),\n token_missing_one: (expected, token) => {\n const context = [expected, token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"token_missing_one\", context));\n },\n token_missing_list: (expectedList, token) => {\n const line = expectedList.join(LocalizedStrings.getOR());\n return SyntaxErrorFactory.token_missing_one(line, token);\n },\n id_missing: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"id_missing\", context));\n },\n eos_missing: (token) => {\n const context = [token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"eos_missing\", context));\n },\n invalid_array_dimension: (typeName, token) => {\n const context = [token.line, token.column, typeName];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_array_dimension\", context));\n },\n invalid_array_size: (token) => {\n const context = [token.line];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_array_size\", context));\n },\n invalid_main_return: (name, typeName, token) => {\n const context = [name, typeName, token.line];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_main_return\", context));\n },\n invalid_var_declaration: (token) => {\n const context = [token.line];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_var_declaration\", context));\n },\n invalid_break_command: (cmdName, token) => {\n const context = [token.line, cmdName];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_break_command\", context));\n },\n invalid_terminal: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError('invalid_terminal', context));\n },\n invalid_type: (list, token) => {\n const line = list.join(LocalizedStrings.getOR());\n const context = [token.text, token.line, token.column, line]\n return new SyntaxError(LocalizedStrings.getError(\"invalid_type\", context));\n },\n const_not_init: (token) => {\n const context = [token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"const_not_init\", context));\n },\n invalid_id_format: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_id_format\", context));\n },\n duplicate_function: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"duplicate_function\", context));\n },\n main_parameters: () => {\n return new SyntaxError(LocalizedStrings.getError(\"main_parameters\"));\n },\n duplicate_variable: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"duplicate_variable\", context));\n }\n});\n","import { Expression } from './expression';\n\nexport class ArrayAccess extends Expression {\n\t\n\tconstructor (id, line, column) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.line = line;\n\t\tthis.column = column;\n\t}\n\n\ttoString () {\n\t\tconst strLine = this.line.toString();\n\t\tlet strColumn = null;\n\t\tif(this.column) {\n\t\t\tstrColumn = this.column.toString();\n\t\t}\n\t\tif(strColumn) {\n\t\t\treturn `${this.id}[${strLine}][${strColumn}]`;\n\t\t} else {\n\t\t\treturn `${this.id}[${strLine}]`;\n\t\t}\n\t}\n}","import { Literal } from './literal';\n\nexport class ArrayLiteral extends Literal {\n \n constructor(type, value) {\n super(type);\n this.value = value;\n }\n\n get subtype () {\n let element = this.value[0];\n if (element instanceof ArrayLiteral) {\n return element.value[0].type;\n } else {\n return element.type;\n }\n }\n\n get lines () {\n return this.value.length;\n }\n\n get columns () {\n let element = this.value[0];\n if (!(element instanceof ArrayLiteral)){\n return null;\n } else {\n return element.value[0].length;\n }\n }\n\n get isVector () {\n return this.columns === null;\n }\n\n get isValid () {\n return true;//this.validateType() && this.validateSize();\n }\n\n validateType () {\n // let valid = true;\n // if(this.columns !== null) {\n // const len = this.columns;\n // const len2 = this.lines;\n // for (let i = len - 1; i >= 0; i--) {\n // for (let j = len2 - 1; j >= 0; j--) {\n // if(this.value[i].value[j].type !== this.subtype) {\n // valid = false;\n // break;\n // }\n // }\n // }\n // } else {\n // const len = this.lines;\n // for (var i = len - 1; i >= 0; i--) {\n // if(this.value[i].type !== this.subtype) {\n // valid = false;\n // break;\n // }\n // }\n // }\n return true;//valid;\n }\n\n validateSize () {\n let valid = true;\n if(this.columns !== null) {\n const equalityTest = data.value.map(v => v.length)\n .reduce((old, next) => {\n if (old === null) {\n return next;\n } else if (old === next) {\n return old\n } else {\n return -1;\n }\n }, null);\n valid = equalityTest !== -1;\n }\n return valid;\n }\n\n toString () {\n const strList = this.value.map(arrayLiteral => arrayLiteral.toString());\n return \"{\" + strList.join(',') + \"}\";\n }\n}\n","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertBoolToString } from \"./../../typeSystem/parsers\";\n\nexport class BoolLiteral extends Literal {\n \n constructor(value) {\n super(Types.BOOLEAN);\n this.value = value;\n }\n\n toString () {\n return convertBoolToString(this.value);\n }\n}","export class Expression {\n\n constructor () {\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Expression } from './expression';\nimport { LanguageDefinedFunction } from '../../processor/definedFunctions';\n\nexport class FunctionCall extends Expression {\n\n\tconstructor (id, actualParameters) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.actualParameters = actualParameters;\n\t}\n\n\tget isMainCall () {\n\t\treturn this.id === null;\n\t}\n\n\tget parametersSize () {\n\t\treturn this.actualParameters.length;\n\t}\n\n\ttoString () {\n\t\tlet name = null;\n\t\tif(this.isMainCall) {\n\t\t\tname = LanguageDefinedFunction.getMainFunctionName();\n\t\t} else {\n\t\t\tname = LanguageDefinedFunction.getLocalName(this.id);\n\t\t}\n\t\tlet params = null;\n\t\tif(this.actualParameters.length == 0) {\n\t\t\tparams = \"()\";\n\t\t} else {\n\t\t\tconst strParams = this.actualParameters.map(v => v.toString());\n\t\t\tparams = \"(\" + strParams.join(\",\") + \")\";\n\t\t}\n\t\treturn name + params;\n\t}\n}","import { ArrayAccess } from './arrayAccess';\nimport { FunctionCall } from './functionCall';\nimport { IntLiteral } from './intLiteral';\nimport { RealLiteral } from './realLiteral';\nimport { BoolLiteral } from './boolLiteral';\nimport { StringLiteral } from './stringLiteral';\nimport { ArrayLiteral } from './arrayLiteral';\nimport { VariableLiteral } from './variableLiteral';\nimport { InfixApp } from './infixApp';\nimport { UnaryApp } from './unaryApp';\n\nexport {\n\tArrayAccess,\n\tFunctionCall,\n IntLiteral,\n RealLiteral,\n BoolLiteral,\n StringLiteral,\n ArrayLiteral,\n VariableLiteral,\n InfixApp,\n UnaryApp\n};","import { Expression } from './expression';\n\nexport class InfixApp extends Expression {\n\n constructor(op, left, right) {\n super();\n this.op = op;\n this.left = left;\n this.right = right;\n }\n\n toString () {\n const l = this.left.toString();\n const op = this.op.value;\n const r = this.right.toString();\n return l + op + r;\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertToString } from './../../typeSystem/parsers';\n\nexport class IntLiteral extends Literal {\n \n constructor(value) {\n super(Types.INTEGER);\n this.value = value;\n }\n\n toString() {\n return convertToString(this.value, this.type);\n }\n}","import { Expression } from './expression';\n\nexport class Literal extends Expression {\n \n constructor (type) {\n super();\n this.type = type;\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertToString } from './../../typeSystem/parsers';\n\nexport class RealLiteral extends Literal {\n \n constructor(value) {\n super(Types.REAL);\n this.value = value;\n }\n\n toString() {\n return convertToString(this.value, this.type);\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class StringLiteral extends Literal {\n \n constructor(value) {\n super(Types.STRING);\n this.value = value;\n }\n\n toString() {\n return '\"' + this.value + '\"';\n }\n}","import {InfixApp} from './infixApp';\n\nexport class UnaryApp extends InfixApp {\n \n constructor (op, left) {\n super(op, left, null);\n }\n\n toString () {\n const l = this.left.toString();\n const op = this.op.value;\n return op + l;\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class VariableLiteral extends Literal {\n \n constructor(id) {\n super(Types.UNDEFINED);\n this.id = id;\n }\n\n toString () {\n return this.id;\n }\n}","import { CommonTokenStream, InputStream } from 'antlr4/index';\nimport * as Expressions from './expressions/';\nimport * as Commands from './commands/';\nimport { toInt, toString, toBool, toReal } from './../typeSystem/parsers';\nimport { Types } from \"./../typeSystem/types\";\nimport { CompoundType } from \"./../typeSystem/compoundType\";\nimport { SourceInfo } from './sourceInfo';\nimport { convertFromString } from './operators';\nimport { SyntaxErrorFactory } from './error/syntaxErrorFactory';\nimport { LanguageDefinedFunction } from './../processor/definedFunctions';\nimport { LanguageService } from '../services/languageService';\n\nexport class IVProgParser {\n\n static createParser (input) {\n const lexerClass = LanguageService.getCurrentLexer();\n return new IVProgParser(input, lexerClass);\n }\n\n // <BEGIN scope consts>\n static get BASE () {\n return 0;\n }\n static get FUNCTION () {\n return 1;\n }\n static get COMMAND () {\n return 2;\n }\n static get BREAKABLE () {\n return 4;\n }\n // </ END scope consts>\n\n constructor (input, lexerClass) {\n this.lexerClass = lexerClass;\n this.lexer = new lexerClass(new InputStream(input));\n this.tokenStream = new CommonTokenStream(this.lexer);\n this.tokenStream.fill();\n this.pos = 1;\n this.variableTypes = [this.lexerClass.RK_INTEGER,\n this.lexerClass.RK_REAL,\n this.lexerClass.RK_BOOLEAN,\n this.lexerClass.RK_STRING\n ];\n this.functionTypes = this.variableTypes.concat(this.lexerClass.RK_VOID);\n this.parsingArrayDimension = 0;\n this.scope = [];\n this.langFuncs = LanguageService.getCurrentLangFuncs();\n this.definedFuncsNameList = [];\n this.definedVariablesStack = [];\n }\n\n parseTree () {\n return this.parseProgram();\n }\n\n getToken (index = this.pos) {\n // if(index === null)\n // index = this.pos;\n return this.tokenStream.LT(index);\n }\n\n insideScope (scope) {\n if(this.scope.length <= 0) {\n return IVProgParser.BASE === scope;\n } else {\n return this.scope[this.scope.length-1] === scope;\n }\n }\n\n pushScope (scope) {\n this.scope.push(scope);\n }\n\n pushVariableStack () {\n this.definedVariablesStack.push([]);\n }\n\n popScope () {\n return this.scope.pop();\n }\n\n popVariableStack () {\n return this.definedVariablesStack.pop();\n }\n\n getCurrentVariableStack () {\n return this.definedVariablesStack[this.definedVariablesStack.length - 1];\n }\n\n isEOF () {\n this.getToken(this.pos);\n return this.tokenStream.fetchedEOF;\n }\n\n parseProgram () {\n const token = this.getToken();\n let globalVars = [];\n let functions = [];\n\n if(this.lexerClass.RK_PROGRAM === token.type) {\n this.pos++;\n this.consumeNewLines();\n this.checkOpenCurly();\n this.pos++;\n this.pushVariableStack();\n while(true) {\n this.consumeNewLines();\n const token = this.getToken();\n if (token.type === this.lexerClass.RK_CONST || this.isVariableType(token)) {\n globalVars = globalVars.concat(this.parseGlobalVariables());\n } else if (token.type === this.lexerClass.RK_FUNCTION) {\n this.pushVariableStack();\n functions = functions.concat(this.parseFunction());\n this.popVariableStack();\n } else {\n break;\n }\n }\n this.consumeNewLines();\n this.checkCloseCurly();\n this.pos++;\n this.consumeNewLines();\n if(!this.isEOF()) {\n throw SyntaxErrorFactory.extra_lines();\n }\n this.popVariableStack();\n return {global: globalVars, functions: functions};\n } else {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_PROGRAM], token);\n }\n }\n\n checkOpenCurly (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_CURLY !== token.type){\n if(!attempt)\n throw SyntaxErrorFactory.token_missing_one('{', token);\n else\n return false;\n }\n return true;\n }\n\n checkCloseCurly (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_CURLY !== token.type){\n if(!attempt)\n throw SyntaxErrorFactory.token_missing_one('}', token);\n else\n return false;\n }\n return true;\n }\n\n /* It checks if the current token at position pos is a ']'.\n * As a check function it doesn't increment pos.\n *\n * @params bool:attempt, indicates that the token is optional. Defaults: false\n *\n * @returns true if the attempt is true and current token is '[',\n * false is attempt is true and current token is not '['\n **/\n checkOpenBrace (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_BRACE !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one('[', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkCloseBrace (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_BRACE !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(']', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkOpenParenthesis (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_PARENTHESIS !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one('(', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkCloseParenthesis (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_PARENTHESIS !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(')', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkEOS (attempt = false) {\n const eosToken = this.getToken();\n if (eosToken.type !== this.lexerClass.EOS) {\n if (!attempt)\n throw SyntaxErrorFactory.eos_missing(eosToken);\n else\n return false;\n }\n return true;\n }\n\n checkFunctionDuplicate (functionID, funcIDToken) {\n const id = functionID === null ? \"$main\" : functionID;\n const index = this.definedFuncsNameList.indexOf(id);\n if(index !== -1) {\n throw SyntaxErrorFactory.duplicate_function(funcIDToken);\n }\n this.definedFuncsNameList.push(id);\n }\n\n checkVariableDuplicate (variableID, variableIDToken) {\n const index = this.getCurrentVariableStack().indexOf(variableID);\n if(index !== -1) {\n throw SyntaxErrorFactory.duplicate_variable(variableIDToken);\n }\n this.getCurrentVariableStack().push(variableID);\n }\n\n consumeForSemiColon () {\n const eosToken = this.getToken();\n if (eosToken.type === this.lexerClass.EOS && eosToken.text.match(';')) {\n this.pos++;\n return; \n }\n throw SyntaxErrorFactory.token_missing_one(';', eosToken);\n }\n\n parseGlobalVariables () {\n const decl = this.parseMaybeConst();\n this.checkEOS();\n this.pos++;\n return decl;\n }\n\n /*\n * Checks if the next token is PR_CONST. It's only available\n * at global variables declaration level\n * @returns Declararion(const, type, id, initVal?)\n **/\n parseMaybeConst () {\n const constToken = this.getToken();\n if(constToken.type === this.lexerClass.RK_CONST) {\n this.pos++;\n const typeString = this.parseType();\n return this.parseDeclaration(typeString, true);\n } else if(this.isVariableType(constToken)) {\n const typeString = this.parseType();\n return this.parseDeclaration(typeString);\n } else {\n throw SyntaxErrorFactory.token_missing_list(\n [this.lexer.literalNames[this.lexerClass.RK_CONST]].concat(this.getTypeArray()), constToken);\n }\n\n }\n\n /*\n * Parses a declarion of the form: type --- id --- (= --- EAnd)?\n * @returns a list of Declararion(const, type, id, initVal?)\n **/\n parseDeclaration (typeString, isConst = false) {\n let initial = null;\n let dim1 = null;\n let dim2 = null;\n const idToken = this.getToken();\n const idString = this.parseID();\n this.checkVariableDuplicate(idString,idToken);\n // Check for array or vector\n // ID[int/IDi][int/IDj]\n if (this.checkOpenBrace(true)) {\n this.pos++;\n this.consumeNewLines();\n dim1 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n this.consumeNewLines();\n dim2 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n }\n }\n\n const equalsToken = this.getToken();\n if(isConst && equalsToken.type !== this.lexerClass.EQUAL ) {\n throw SyntaxErrorFactory.const_not_init(idToken);\n }\n if(equalsToken.type === this.lexerClass.EQUAL) {\n this.pos++;\n initial = this.parseExpressionOR();\n }\n let declaration = null;\n let dimensions = 0;\n if (dim1 !== null) {\n dimensions++;\n if(dim2 !== null) {\n dimensions++;\n }\n declaration = new Commands.ArrayDeclaration(idString,\n new CompoundType(typeString, dimensions), dim1, dim2, initial, isConst);\n } else {\n declaration = new Commands.Declaration(idString, typeString, initial, isConst);\n }\n declaration.sourceInfo = SourceInfo.createSourceInfo(idToken);\n const commaToken = this.getToken();\n if(commaToken.type === this.lexerClass.COMMA) {\n this.pos++;\n this.consumeNewLines();\n return [declaration]\n .concat(this.parseDeclaration(typeString, isConst));\n } else {\n return [declaration]\n }\n }\n\n consumeNewLines () {\n let token = this.getToken();\n while(token.type === this.lexerClass.EOS && token.text.match('[\\r\\n]+')) {\n this.pos++;\n token = this.getToken();\n }\n }\n\n isVariableType (token) {\n return this.variableTypes.find(v => v === token.type);\n }\n\n /*\n * Reads the next token of the stream to check if it is a Integer or an ID.\n * @returns Integer | ID\n **/\n parseArrayDimension () {\n const dimToken = this.getToken();\n if(dimToken.type === this.lexerClass.INTEGER) {\n //parse as int literal\n this.pos++;\n return this.getIntLiteral(dimToken);\n } else if(dimToken.type === this.lexerClass.ID) {\n //parse as variable\n this.pos++;\n return this.parseVariable(dimToken);\n } else {\n throw SyntaxErrorFactory.invalid_array_dimension(this.lexer.literalNames[this.lexerClass.RK_INTEGER], dimToken);\n }\n }\n\n /*\n * Returns an object {type: 'int', value: value}.\n * It checks for binary and hexadecimal integers.\n * @returns object with fields type and value\n **/\n getIntLiteral (token) {\n const text = token.text;\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.IntLiteral(toInt(text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getRealLiteral (token) {\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.RealLiteral(toReal(token.text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getStringLiteral (token) {\n const text = token.text;\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.StringLiteral(toString(text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getBoolLiteral (token) {\n const val = toBool(token.text);\n const exp = new Expressions.BoolLiteral(val);\n exp.sourceInfo = SourceInfo.createSourceInfo(token);;\n return exp;\n }\n\n parseArrayLiteral () {\n this.checkOpenCurly();\n const beginArray = this.getToken();\n if (this.parsingArrayDimension >= 2) {\n throw SyntaxErrorFactory.token_missing_list(`Array dimensions exceed maximum size of 2 at line ${beginArray.line}`);\n }\n this.pos++;\n this.parsingArrayDimension++;\n this.consumeNewLines();\n const data = this.parseExpressionList();\n this.consumeNewLines();\n this.checkCloseCurly()\n const endArray = this.getToken();\n this.pos++;\n this.parsingArrayDimension--;\n if (this.parsingArrayDimension === 0) {\n // if (!data.isValid) {\n // // TODO: better error message\n // console.log('invalid array');\n // throw new Error(`Invalid array at line ${beginArray.line}`);\n // }\n }\n const sourceInfo = SourceInfo.createSourceInfoFromList(beginArray, endArray);\n let dataDim = 1;\n if(data[0] instanceof Expressions.ArrayLiteral) {\n dataDim++;\n }\n const type = new CompoundType(Types.UNDEFINED, dataDim);\n const exp = new Expressions.ArrayLiteral(type, data);\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n /*\n * Returns an object {type: 'variable', value: value}.\n * @returns object with fields type and value\n **/\n parseVariable (token) {\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.VariableLiteral(token.text);\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n /*\n * Returns an object representing a function. It has\n * four attributes: returnType, id, formalParams and block.\n * The block object has two attributes: declarations and commands\n **/\n parseFunction () {\n this.pushScope(IVProgParser.FUNCTION);\n let formalParams = [];\n const token = this.getToken();\n if(token.type !== this.lexerClass.RK_FUNCTION) {\n //throw SyntaxError.createError(this.lexer.literalNames[this.lexerClass.PR_FUNCAO], token);\n return null;\n }\n this.pos++;\n const funType = this.parseType();\n let dimensions = 0;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n this.checkCloseBrace();\n this.pos++;\n dimensions++;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n this.checkCloseBrace();\n this.pos++;\n dimensions++;\n }\n }\n const funcIDToken = this.getToken();\n const functionID = this.parseID();\n this.checkFunctionDuplicate(functionID, funcIDToken);\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n if (!this.checkCloseParenthesis(true)) {\n formalParams = this.parseFormalParameters(); // formal parameters \n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n } else {\n this.pos++;\n }\n this.consumeNewLines();\n const commandsBlock = this.parseCommandBlock();\n let returnType = funType;\n if(dimensions > 0) {\n returnType = new CompoundType(funType, dimensions);\n }\n const func = new Commands.Function(functionID, returnType, formalParams, commandsBlock);\n if (functionID === null && !func.isMain) {\n throw SyntaxErrorFactory.invalid_main_return(LanguageDefinedFunction.getMainFunctionName(),\n this.lexer.literalNames[this.lexerClass.RK_VOID],\n token.line);\n } else if (func.isMain && formalParams.length !== 0) {\n throw SyntaxErrorFactory.main_parameters();\n }\n this.popScope();\n return func;\n }\n\n /*\n * Parse the formal parameters of a function.\n * @returns a list of objects with the following attributes: type, id and dimensions.\n **/\n parseFormalParameters () {\n const list = [];\n while(true) {\n let dimensions = 0;\n const typeString = this.parseType();\n const idToken = this.getToken();\n const idString = this.parseID();\n this.checkVariableDuplicate(idString, idToken);\n if (this.checkOpenBrace(true)) {\n this.pos++;\n dimensions++;\n this.checkCloseBrace();\n this.pos++;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n dimensions++;\n this.checkCloseBrace();\n this.pos++;\n }\n }\n let type = null;\n if(dimensions > 0) {\n type = new CompoundType(typeString, dimensions);\n } else {\n type = typeString;\n }\n list.push(new Commands.FormalParameter(type, idString));\n const commaToken = this.getToken();\n if (commaToken.type !== this.lexerClass.COMMA)\n break;\n this.pos++;\n this.consumeNewLines();\n }\n return list;\n }\n\n parseID () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.ID) {\n throw SyntaxErrorFactory.id_missing(token);\n }\n this.pos++;\n if (this.insideScope(IVProgParser.FUNCTION)) {\n if (token.text === LanguageDefinedFunction.getMainFunctionName()){\n return null;\n }\n }\n return token.text;\n }\n\n parseMaybeLibID () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.ID && token.type !== this.lexerClass.LIB_ID) {\n throw SyntaxErrorFactory.id_missing(token);\n } \n this.pos++;\n return token.text;\n }\n\n parseType () {\n const token = this.getToken();\n if(token.type === this.lexerClass.ID && this.insideScope(IVProgParser.FUNCTION)) {\n return Types.VOID;\n } else if (token.type === this.lexerClass.RK_VOID && this.insideScope(IVProgParser.FUNCTION)) {\n this.pos++;\n return Types.VOID;\n } else if (this.isVariableType(token)) {\n this.pos++;\n switch(token.type) {\n case this.lexerClass.RK_INTEGER:\n return Types.INTEGER;\n case this.lexerClass.RK_BOOLEAN:\n return Types.BOOLEAN;\n case this.lexerClass.RK_REAL:\n return Types.REAL;\n case this.lexerClass.RK_STRING:\n return Types.STRING;\n default:\n break;\n }\n }\n \n throw SyntaxErrorFactory.invalid_type(this.getTypeArray(), token);\n }\n\n parseCommandBlock (optionalCurly = false) {\n let variablesDecl = [];\n const commands = [];\n let hasOpen = false;\n if (this.checkOpenCurly(optionalCurly)) {\n this.pos++;\n hasOpen = true;\n }\n this.consumeNewLines();\n while(true) {\n\n const cmd = this.parseCommand();\n if (cmd === null)\n break;\n if(cmd !== -1) {\n if (cmd instanceof Array) {\n variablesDecl = variablesDecl.concat(cmd);\n } else {\n commands.push(cmd);\n }\n }\n }\n this.consumeNewLines();\n if (hasOpen) {\n this.checkCloseCurly()\n this.pos++;\n this.consumeNewLines();\n }\n return new Commands.CommandBlock(variablesDecl, commands);\n }\n\n parseCommand () {\n const token = this.getToken();\n if (this.isVariableType(token)) {\n if(!this.insideScope(IVProgParser.FUNCTION)) {\n throw SyntaxErrorFactory.invalid_var_declaration(token.line);\n }\n this.pushScope(IVProgParser.BASE);\n const varType = this.parseType();\n this.popScope();\n const cmd = this.parseDeclaration(varType);\n this.checkEOS();\n this.pos++;\n return cmd;\n } else if (token.type === this.lexerClass.ID) {\n return this.parseIDCommand();\n } else if (token.type === this.lexerClass.LIB_ID) {\n return this.parseIDCommand();\n } else if (token.type === this.lexerClass.RK_RETURN) {\n return this.parseReturn();\n } else if (token.type === this.lexerClass.RK_WHILE) {\n return this.parseWhile();\n } else if (token.type === this.lexerClass.RK_FOR) {\n return this.parseFor();\n } else if (token.type === this.lexerClass.RK_BREAK ) {\n if(!this.insideScope(IVProgParser.BREAKABLE)) {\n throw SyntaxErrorFactory.invalid_break_command(\n this.lexer.literalNames[this.lexerClass.RK_BREAK],\n token\n );\n }\n return this.parseBreak();\n } else if (token.type === this.lexerClass.RK_SWITCH) {\n return this.parseSwitchCase();\n } else if (token.type === this.lexerClass.RK_DO) {\n return this.parseDoWhile();\n } else if (token.type === this.lexerClass.RK_IF) {\n return this.parseIfThenElse();\n } else if (this.checkEOS(true)){\n this.pos++;\n return -1;\n } else {\n return null;\n }\n }\n\n parseSwitchCase () {\n this.pushScope(IVProgParser.BREAKABLE);\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const exp = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n this.checkOpenCurly();\n this.pos++;\n this.consumeNewLines();\n const casesList = this.parseCases();\n this.consumeNewLines();\n this.checkCloseCurly();\n this.pos++;\n this.consumeNewLines();\n\n this.popScope();\n return new Commands.Switch(exp, casesList);\n }\n\n parseDoWhile () {\n this.pos++;\n this.consumeNewLines();\n this.pushScope(IVProgParser.BREAKABLE);\n const commandsBlock = this.parseCommandBlock();\n this.consumeNewLines(); //Maybe not...\n const whileToken = this.getToken();\n if (whileToken.type !== this.lexerClass.RK_WHILE) {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_WHILE], whileToken);\n }\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const condition = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.checkEOS();\n this.popScope();\n return new Commands.DoWhile(condition, commandsBlock);\n }\n\n parseIfThenElse () {\n if(this.insideScope(IVProgParser.BREAKABLE)) {\n this.pushScope(IVProgParser.BREAKABLE);\n } else {\n this.pushScope(IVProgParser.COMMAND);\n }\n const token = this.getToken();\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const logicalExpression = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n const cmdBlocks = this.parseCommandBlock();\n\n const maybeElse = this.getToken();\n if(maybeElse.type === this.lexerClass.RK_ELSE) {\n this.pos++;\n this.consumeNewLines();\n const maybeIf = this.getToken();\n let elseBlock = null;\n if(this.checkOpenCurly(true)) {\n elseBlock = this.parseCommandBlock();\n } else if(maybeIf.type === this.lexerClass.RK_IF) {\n elseBlock = this.parseIfThenElse();\n } else {\n throw SyntaxErrorFactory.token_missing_list([this.lexer.literalNames[this.lexerClass.RK_IF], '{'], maybeIf);\n }\n this.popScope();\n const cmd = new Commands.IfThenElse(logicalExpression, cmdBlocks, elseBlock);\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n this.popScope();\n\n const cmd = new Commands.IfThenElse(logicalExpression, cmdBlocks, null);\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n\n parseFor () {\n this.pushScope(IVProgParser.BREAKABLE);\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const attribution = this.parseForAssign();\n this.consumeNewLines();\n const condition = this.parseExpressionOR();\n this.consumeForSemiColon();\n const increment = this.parseForAssign(true);\n this.checkCloseParenthesis()\n this.pos++;\n this.consumeNewLines();\n const commandsBlock = this.parseCommandBlock();\n this.popScope();\n return new Commands.For(attribution, condition, increment, commandsBlock);\n }\n\n parseWhile () {\n this.pushScope(IVProgParser.BREAKABLE);\n const token = this.getToken();\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const logicalExpression = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n const cmdBlocks = this.parseCommandBlock();\n this.popScope();\n const cmd = new Commands.While(logicalExpression, cmdBlocks);\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n\n parseBreak () {\n this.pos++;\n this.checkEOS();\n this.pos++;\n return new Commands.Break();\n }\n\n parseReturn () {\n this.pos++;\n let exp = null;\n if(!this.checkEOS(true)) {\n exp = this.parseExpressionOR();\n this.checkEOS();\n }\n this.pos++;\n return new Commands.Return(exp);\n }\n\n parseIDCommand () {\n const refToken = this.getToken();\n const isID = refToken.type === this.lexerClass.ID;\n const id = this.parseMaybeLibID();\n if(this.checkOpenBrace(true)) {\n this.pos++;\n let lineExpression = null;\n let columnExpression = null;\n this.consumeNewLines();\n lineExpression = this.parseExpression()\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n if (this.checkOpenBrace(true)) {\n this.pos++\n this.consumeNewLines();\n columnExpression = this.parseExpression();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n }\n const equalToken = this.getToken();\n if (equalToken.type !== this.lexerClass.EQUAL) {\n throw SyntaxErrorFactory.token_missing_one('=', equalToken);\n }\n this.pos++;\n const exp = this.parseExpressionOR();\n this.checkEOS();\n this.pos++;\n const cmd = new Commands.ArrayIndexAssign(id, lineExpression, columnExpression, exp);\n cmd.sourceInfo = SourceInfo.createSourceInfo(equalToken);\n return cmd;\n }\n const equalOrParenthesis = this.getToken();\n if (isID && equalOrParenthesis.type === this.lexerClass.EQUAL) {\n this.pos++\n const exp = this.parseExpressionOR();\n this.checkEOS();\n this.pos++;\n const cmd = new Commands.Assign(id, exp);\n cmd.sourceInfo = SourceInfo.createSourceInfo(equalOrParenthesis);\n return cmd;\n } else if (equalOrParenthesis.type === this.lexerClass.OPEN_PARENTHESIS) {\n const funcCall = this.parseFunctionCallCommand(id);\n this.checkEOS();\n this.pos++;\n return funcCall;\n } else if (isID) {\n throw SyntaxErrorFactory.token_missing_list(['=','('], equalOrParenthesis);\n } else {\n throw SyntaxErrorFactory.invalid_id_format(refToken);\n }\n }\n\n parseForAssign (isLast = false) {\n if(!isLast)\n this.consumeNewLines();\n if(this.checkEOS(true)) {\n return null;\n }\n const id = this.parseID();\n const equal = this.getToken();\n if (equal.type !== this.lexerClass.EQUAL) {\n throw SyntaxErrorFactory.token_missing_one('=', equal);\n }\n this.pos++\n const exp = this.parseExpressionOR();\n if(!isLast) {\n this.consumeForSemiColon();\n }\n const sourceInfo = SourceInfo.createSourceInfo(equal);\n const cmd = new Commands.Assign(id, exp);\n cmd.sourceInfo = sourceInfo;\n return cmd;\n }\n\n parseCases () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.RK_CASE) {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_CASE], token);\n }\n this.pos++;\n const nextToken = this.getToken();\n if(nextToken.type === this.lexerClass.RK_DEFAULT) {\n this.pos++;\n const colonToken = this.getToken();\n if (colonToken.type !== this.lexerClass.COLON) {\n throw SyntaxErrorFactory.token_missing_one(':', colonToken);\n }\n this.pos++;\n this.consumeNewLines();\n const block = this.parseCommandBlock(true);\n const defaultCase = new Commands.Case(null);\n defaultCase.setCommands(block.commands);\n return [defaultCase];\n } else {\n const exp = this.parseExpressionOR();\n const colonToken = this.getToken();\n if (colonToken.type !== this.lexerClass.COLON) {\n throw SyntaxErrorFactory.token_missing_one(':', colonToken);\n }\n this.pos++;\n this.consumeNewLines();\n const block = this.parseCommandBlock(true);\n const aCase = new Commands.Case(exp);\n aCase.setCommands(block.commands);\n const caseToken = this.getToken();\n if(caseToken.type === this.lexerClass.RK_CASE) {\n return [aCase].concat(this.parseCases());\n } else {\n return [aCase];\n }\n }\n }\n\n /*\n * Parses an Expression following the structure:\n *\n * EOR => EAnd ( 'or' EOR)? #expression and\n *\n * EOR => ENot ('and' EOR)? #expression or\n *\n * ENot => 'not'? ER #expression not\n *\n * ER => E ((>=, <=, ==, >, <) E)? #expression relational\n *\n * E => factor ((+, -) E)? #expression\n *\n * factor=> term ((*, /, %) factor)?\n *\n * term => literal || arrayAccess || FuncCall || ID || '('EAnd')'\n **/\n parseExpressionOR () {\n let exp1 = this.parseExpressionAND();\n while (this.getToken().type === this.lexerClass.OR_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const or = convertFromString('or');\n this.consumeNewLines();\n const exp2 = this.parseExpressionAND();\n const finalExp = new Expressions.InfixApp(or, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n exp1 = finalExp\n }\n return exp1;\n }\n\n parseExpressionAND () {\n let exp1 = this.parseExpressionNot();\n while (this.getToken().type === this.lexerClass.AND_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const and = convertFromString('and');\n this.consumeNewLines();\n const exp2 = this.parseExpressionNot();\n const finalExp = new Expressions.InfixApp(and, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n exp1 = finalExp;\n }\n return exp1;\n }\n\n parseExpressionNot () {\n const maybeNotToken = this.getToken();\n if (maybeNotToken.type === this.lexerClass.NOT_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const not = convertFromString('not');\n const exp1 = this.parseExpressionRel();\n finalExp = new Expressions.UnaryApp(not, exp1);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n return finalExp;\n \n } else {\n return this.parseExpressionRel();\n }\n }\n\n parseExpressionRel () {\n let exp1 = this.parseExpression();\n while (this.getToken().type === this.lexerClass.RELATIONAL_OPERATOR) {\n const relToken = this.getToken();\n this.pos++;\n const rel = convertFromString(relToken.text);\n const exp2 = this.parseExpression();\n const finalExp = new Expressions.InfixApp(rel, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(relToken);\n exp1 = finalExp;\n }\n return exp1;\n }\n\n parseExpression () {\n let factor = this.parseFactor();\n while (this.getToken().type === this.lexerClass.SUM_OP) {\n const sumOpToken = this.getToken();\n this.pos++;\n const op = convertFromString(sumOpToken.text);\n const factor2 = this.parseFactor();\n const finalExp = new Expressions.InfixApp(op, factor, factor2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(sumOpToken);\n factor = finalExp;\n }\n return factor;\n }\n\n parseFactor () {\n let term = this.parseTerm();\n while (this.getToken().type === this.lexerClass.MULTI_OP) {\n const multOpToken = this.getToken();\n this.pos++;\n const op = convertFromString(multOpToken.text);\n const term2 =this.parseTerm();\n const finalExp = new Expressions.InfixApp(op, term, term2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(multOpToken);\n term = finalExp;\n }\n return term;\n }\n\n parseTerm () {\n const token = this.getToken();\n let sourceInfo = null;\n switch(token.type) {\n case this.lexerClass.SUM_OP:\n this.pos++;\n sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.UnaryApp(convertFromString(token.text), this.parseTerm());\n exp.sourceInfo = sourceInfo;\n return exp;\n case this.lexerClass.INTEGER:\n this.pos++;\n return this.getIntLiteral(token);\n case this.lexerClass.REAL:\n this.pos++;\n return this.getRealLiteral(token);\n case this.lexerClass.STRING:\n this.pos++;\n return this.getStringLiteral(token);\n case this.lexerClass.RK_TRUE:\n case this.lexerClass.RK_FALSE:\n this.pos++;\n return this.getBoolLiteral(token);\n case this.lexerClass.OPEN_CURLY:\n return this.parseArrayLiteral();\n case this.lexerClass.ID:\n case this.lexerClass.LIB_ID:\n return this.parseIDTerm();\n case this.lexerClass.OPEN_PARENTHESIS:\n return this.parseParenthesisExp();\n default:\n throw SyntaxErrorFactory.invalid_terminal(token);\n }\n }\n\n parseIDTerm () {\n const tokenA = this.getToken();\n const id = this.parseMaybeLibID();\n const isID = tokenA.type === this.lexerClass.ID;\n if(isID && this.checkOpenBrace(true)) {\n let tokenB = null;\n this.pos++;\n const firstIndex = this.parseExpression();\n let secondIndex = null;\n this.consumeNewLines();\n this.checkCloseBrace();\n tokenB = this.getToken();\n this.pos++;\n if(this.checkOpenBrace(true)){\n this.pos++;\n secondIndex = this.parseExpression();\n this.consumeNewLines();\n this.checkCloseBrace();\n tokenB = this.getToken();\n this.pos++;\n }\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB); \n const exp = new Expressions.ArrayAccess(id, firstIndex, secondIndex);\n exp.sourceInfo = sourceInfo;\n return exp;\n\n } else if (this.checkOpenParenthesis(true)) {\n return this.parseFunctionCallExpression(id);\n } else if (isID) {\n const sourceInfo = SourceInfo.createSourceInfo(tokenA);\n const exp = new Expressions.VariableLiteral(id);\n exp.sourceInfo = sourceInfo;\n return exp;\n } else {\n throw SyntaxErrorFactory.invalid_id_format(tokenA);\n }\n }\n\n getFunctionName (id) {\n const name = LanguageDefinedFunction.getInternalName(id);\n if (name === null) {\n if (id === LanguageDefinedFunction.getMainFunctionName()) {\n return null;\n }\n return id;\n } else {\n return name;\n }\n }\n\n parseFunctionCallExpression (id) {\n const tokenA = this.getToken(this.pos - 1);\n const actualParameters = this.parseActualParameters();\n const tokenB = this.getToken(this.pos - 1);\n const funcName = this.getFunctionName(id);\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n const cmd = new Expressions.FunctionCall(funcName, actualParameters);\n cmd.sourceInfo = sourceInfo;\n return cmd;\n }\n\n parseFunctionCallCommand (id) {\n return this.parseFunctionCallExpression(id);\n }\n\n parseParenthesisExp () {\n this.checkOpenParenthesis();\n const tokenA = this.getToken();\n this.pos++;\n this.consumeNewLines();\n const exp = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n const tokenB = this.getToken();\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n this.pos++;\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n parseActualParameters () {\n this.checkOpenParenthesis();\n this.pos++;\n if(this.checkCloseParenthesis(true)) {\n this.pos++;\n return [];\n }\n this.consumeNewLines();\n const list = this.parseExpressionList();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n return list;\n }\n\n parseExpressionList () {\n const list = [];\n while(true) {\n const exp = this.parseExpressionOR();\n list.push(exp);\n const maybeToken = this.getToken();\n if (maybeToken.type !== this.lexerClass.COMMA) {\n break;\n } else {\n this.pos++;\n this.consumeNewLines();\n }\n }\n return list;\n }\n\n getTypeArray () {\n const types = this.insideScope(IVProgParser.FUNCTION) ? this.functionTypes : this.variableTypes;\n return types.map( x => this.lexer.literalNames[x]);\n }\n}","export const Operators = Object.freeze({\n ADD: {ord: 0, value: \"+\"},\n SUB: {ord: 1, value: \"-\"},\n MULT: {ord: 2, value: '*'},\n DIV: {ord: 3, value: '/'},\n MOD: {ord: 4, value: '%'},\n GT: {ord: 5, value: '>'},\n GE: {ord: 6, value: '>='},\n LT: {ord: 7, value: '<'},\n LE: {ord: 8, value: '<='},\n EQ: {ord: 9, value: '=='},\n NEQ: {ord: 10, value: '!='},\n AND: {ord: 11, value: 'and'},\n OR: {ord: 12, value: 'or'},\n NOT: {ord: 13, value: 'not'}\n});\n\nexport function convertFromString (op) {\n switch (op) {\n case '+' : return Operators.ADD;\n case '-' : return Operators.SUB;\n case '*' : return Operators.MULT;\n case '/' : return Operators.DIV;\n case '%' : return Operators.MOD;\n case '>' : return Operators.GT;\n case '>=' : return Operators.GE;\n case '<' : return Operators.LT;\n case '<=' : return Operators.LE;\n case '==' : return Operators.EQ;\n case '!=' : return Operators.NEQ;\n case 'and' : return Operators.AND;\n case 'or' : return Operators.OR;\n case 'not' : return Operators.NOT;\n }\n}","export class SourceInfo {\n\n static createSourceInfo (token) {\n return new SourceInfo(token.line, token.column, token.text.length);\n }\n\n static createSourceInfoFromList (tokenA, tokenB) {\n const line = tokenA.line;\n const column = tokenA.column;\n // copied from https://github.com/UNIVALI-LITE/Portugol-Studio/blob/master/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/Portugol.g\n // No idea why...\n const size = tokenB.tokenIndex + 1 - tokenA.tokenIndex\n return new SourceInfo(line, column, size);\n }\n\n constructor (line, column, size) {\n this.line = line;\n this.column = column;\n this.size = size;\n }\n\n}","import $ from 'jquery';\n\nexport class DOMConsole {\n\n static get USER () {\n return 0;\n }\n\n static get INFO () {\n return 1;\n }\n\n static get ERR () {\n return 2;\n }\n\n constructor (elementID) {\n this.input = null;\n this.needInput = false;\n this.termDiv = null;\n this.anyKey = false;\n this.parent = $(elementID);\n this.setup();\n this.inputListeners = [];\n }\n\n setup () {\n this._setupDom();\n this._setupEvents();\n }\n\n _setupEvents () {\n this.input.on(\"keydown\", (event) => {\n if (!this.needInput) {\n event.preventDefault();\n return;\n }\n const keyCode = event.which;\n if (keyCode === 13 || this.anyKey) {\n let text = this.input.val();\n text = text.replace('[\\n\\r]+', '');\n this.notifyListeners(text);\n this.write(text);\n this.input.val(\"\");\n }\n });\n }\n\n _setupDom () {\n this.termDiv = $(\"<div></div>\");\n this.termDiv.addClass(\"ivprog-term-div\");\n this.input = $('<input text=\"type\">')\n this.input.addClass(\"ivprog-term-input\");\n this.termDiv.append(this.input);\n this.parent.append(this.termDiv);\n }\n\n notifyListeners (text) {\n this.inputListeners.forEach(resolve => resolve(text));\n this.inputListeners.splice(0, this.inputListeners.length);\n this.hideInput();\n this.anyKey = false;\n }\n\n write (text) {\n this._appendText(text, DOMConsole.USER);\n }\n\n info (text) {\n this._appendText(text, DOMConsole.INFO);\n }\n\n err (text) {\n this._appendText(text, DOMConsole.ERR);\n }\n\n _appendText (text, type) {\n const divClass = this.getClassForType(type);\n const textDiv = $(\"<div></div>\");\n textDiv.addClass(divClass);\n textDiv.append(text);\n textDiv.insertBefore(this.input);\n this.scrollTerm();\n }\n\n scrollTerm () {\n this.termDiv.animate({\n scrollTop: this.termDiv.prop('scrollHeight')\n }, 0);\n }\n\n getClassForType (type) {\n switch (type) {\n case DOMConsole.USER:\n return \"ivprog-term-userText\";\n case DOMConsole.INFO:\n return \"ivprog-term-info\";\n case DOMConsole.ERR:\n return \"ivprog-term-error\";\n }\n }\n\n dispose () {\n this.parent.off();\n this.input.off();\n this.input = null;\n this.parent.empty();\n }\n\n showInput () {\n this.needInput = true;\n this.input.show();\n this.input.focus();\n }\n\n hideInput () {\n this.needInput = false;\n this.input.hide();\n }\n\n requestInput (callback, anyKey = false) {\n this.inputListeners.push(callback);\n this.anyKey = anyKey;\n this.showInput();\n }\n\n sendOutput (text) {\n const output = \"\"+text;\n output.split(\"\\n\").forEach(t => {\n t = t.replace(/\\t/g,'	');\n this.write(t)\n });\n }\n\n clear () {\n this.input.parent().children().not(this.input).remove();\n this.input.val(\"\");\n }\n}","export class Input {\n\n requestInput (callback) {\n throw new Error(\"Must be implemented\");\n }\n}","export class Output {\n\n sendOutput (text) {\n throw new Error(\"Must be implemented\");\n }\n}","import { runner } from './runner';\nimport { initVisualUI } from './visualUI/functions';\nimport * as LocalizedStringsService from './services/localizedStringsService';\nimport { i18nHelper } from \"./services/i18nHelper\";\n\nconst i18n = i18nHelper.i18n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport {\n runner,\n initVisualUI,\n LocalizedStrings,\n i18n\n}","import { Types } from './../typeSystem/types';\nimport { Operators } from './../ast/operators';\nimport { MultiType } from '../typeSystem/multiType';\nimport { Config } from '../util/config';\n\nfunction buildInfixAddTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n table[Types.INTEGER.ord][Types.REAL.ord] = Types.REAL;\n table[Types.INTEGER.ord][Types.STRING.ord] = Types.STRING;\n\n table[Types.REAL.ord][Types.INTEGER.ord] = Types.REAL;\n table[Types.REAL.ord][Types.REAL.ord] = Types.REAL;\n table[Types.REAL.ord][Types.STRING.ord] = Types.STRING;\n\n table[Types.STRING.ord][Types.INTEGER.ord] = Types.STRING;\n table[Types.STRING.ord][Types.REAL.ord] = Types.STRING;\n table[Types.STRING.ord][Types.STRING.ord] = Types.STRING;\n table[Types.STRING.ord][Types.BOOLEAN.ord] = Types.STRING;\n\n return table;\n}\n\nfunction buildInfixMultiDivSubTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n table[Types.INTEGER.ord][Types.REAL.ord] = Types.REAL;\n\n table[Types.REAL.ord][Types.INTEGER.ord] = Types.REAL;\n table[Types.REAL.ord][Types.REAL.ord] = Types.REAL;\n\n return table;\n}\n\nfunction buildInfixEqualityInequalityTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.BOOLEAN;\n\n table[Types.REAL.ord][Types.REAL.ord] = Types.BOOLEAN;\n\n table[Types.BOOLEAN.ord][Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n table[Types.STRING.ord][Types.STRING.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixRelationalTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.BOOLEAN;\n\n table[Types.REAL.ord][Types.REAL.ord] = Types.BOOLEAN;\n\n table[Types.STRING.ord][Types.STRING.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixAndOrTable () {\n const table = [[], [], [], []];\n\n table[Types.BOOLEAN.ord][Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixModTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n\n return table;\n}\n\nfunction buildUnarySumSubList () {\n const list = [];\n\n list[Types.INTEGER.ord] = Types.INTEGER;\n\n list[Types.REAL.ord] = Types.REAL;\n\n return list;\n}\n\nfunction buildUnaryNegList () {\n const list = [];\n\n list[Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n return list;\n}\n\nfunction buildInfixCompatibilityTable () {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(Operators.ADD, buildInfixAddTable());\n compatibilityMap.set(Operators.SUB, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.MULT, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.DIV, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.EQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(Operators.NEQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(Operators.GE, buildInfixRelationalTable());\n compatibilityMap.set(Operators.GT, buildInfixRelationalTable());\n compatibilityMap.set(Operators.LE, buildInfixRelationalTable());\n compatibilityMap.set(Operators.LT, buildInfixRelationalTable());\n compatibilityMap.set(Operators.OR, buildInfixAndOrTable());\n compatibilityMap.set(Operators.AND, buildInfixAndOrTable());\n compatibilityMap.set(Operators.MOD, buildInfixModTable());\n return compatibilityMap;\n}\n\nfunction buildUnaryCompatibilityTable () {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(Operators.ADD, buildUnarySumSubList());\n compatibilityMap.set(Operators.SUB, buildUnarySumSubList());\n compatibilityMap.set(Operators.NOT, buildUnaryNegList());\n return compatibilityMap;\n}\n\nconst infixMap = buildInfixCompatibilityTable();\nconst unaryMap = buildUnaryCompatibilityTable();\n\nexport function resultTypeAfterInfixOp (operator, leftExpressionType, rightExpressionType) {\n try {\n if(leftExpressionType instanceof MultiType && rightExpressionType instanceof MultiType) {\n let newMulti = [];\n for (let i = 0; i < leftExpressionType.types.length; i++) {\n const element = leftExpressionType.types[i];\n if(rightExpressionType.types.indexOf(element) !== -1) {\n newMulti.push(element);\n }\n }\n if(newMulti.length <= 0) {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n return new MultiType([Types.INTEGER, Types.REAL]);\n }\n }\n }\n return Types.UNDEFINED;\n } else {\n return new MultiType(newMulti)\n }\n } else if(leftExpressionType instanceof MultiType) {\n if(leftExpressionType.isCompatible(rightExpressionType)) {\n return rightExpressionType;\n } else {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n return rightExpressionType;\n }\n }\n }\n return Types.UNDEFINED;\n }\n } else if(rightExpressionType instanceof MultiType) {\n if(rightExpressionType.isCompatible(leftExpressionType)) {\n return leftExpressionType;\n } else {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n return leftExpressionType;\n }\n }\n }\n return Types.UNDEFINED;\n }\n }\n const resultType = infixMap.get(operator)[leftExpressionType.ord][rightExpressionType.ord];\n if (resultType === null || resultType === undefined) {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n if(operator === Operators.MOD) {\n return Types.INTEGER;\n } else if (operator.ord >= 5 && operator.ord <= 10){\n return Types.BOOLEAN;\n }\n }\n }\n }\n return Types.UNDEFINED\n }\n return resultType;\n } catch (e) {\n if (e instanceof TypeError) {\n return Types.UNDEFINED;\n } else {\n throw e;\n }\n }\n}\n\nexport function resultTypeAfterUnaryOp (operator, leftExpressionType) {\n try {\n if(leftExpressionType instanceof MultiType){\n return leftExpressionType;\n }\n return unaryMap.get(operator)[leftExpressionType.ord];\n } catch (e) {\n if (e instanceof TypeError) {\n return Types.UNDEFINED;\n } else {\n throw e;\n } \n }\n}","export const Context = Object.freeze({\n BASE: Symbol('context:base'),\n BREAKABLE: Symbol('context:breakable'),\n FUNCTION: Symbol('context:function')\n});","import { LanguageService } from '../services/languageService';\nimport {createInputFun, createOutputFun} from './lib/io';\nimport {createLengthFun, createLowercaseFun,\n createrCharAtFun, createSubstringFun,\n createUppercaseFun} from './lib/strings';\nimport {createMatrixColumnsFun, createMatrixLinesFun,\n createNumElementsFun} from './lib/arrays';\nimport {createCastBoolFun, createCastIntFun,\n createCastRealFun, createCastStringFun,\n createIsBoolFun, createIsIntFun,\n createIsRealFun} from './lib/lang';\nimport {createAbsFun, createCosFun,\n createInvertFun, createLogFun,\n createMaxFun, createMinFun,\n createNegateFun, createPowFun,\n createSinFun, createSqrtFun,\n createTanFun} from './lib/math';\n\nfunction valueToKey (value, object) {\n for (const key in object) {\n if(object.hasOwnProperty(key)){\n if (object[key] === value) {\n return key;\n }\n }\n }\n return null;\n}\n\nfunction concatObjects (...objs) {\n let result = {};\n for (let i = 0; i < objs.length; i++) {\n const obj = objs[i];\n for(const key in obj) {\n if(obj.hasOwnProperty(key)) {\n result[key] = obj[key];\n }\n }\n }\n return result;\n}\n\nconst libsObject = {\n $mathLib: {\n $sin: createSinFun(),\n $cos: createCosFun(),\n $tan: createTanFun(),\n $sqrt: createSqrtFun(),\n $pow: createPowFun(),\n $log: createLogFun(),\n $abs: createAbsFun(),\n $negate: createNegateFun(),\n $invert: createInvertFun(),\n $max: createMaxFun(),\n $min: createMinFun()\n },\n $ioLib: {\n $read: createInputFun(),\n $write: createOutputFun()\n },\n $strLib: {\n $substring: createSubstringFun(),\n $length: createLengthFun(),\n $uppercase: createUppercaseFun(),\n $lowercase: createLowercaseFun(),\n $charAt: createrCharAtFun(),\n },\n $arrayLib: {\n $numElements: createNumElementsFun(),\n $matrixLines: createMatrixLinesFun(),\n $matrixColumns: createMatrixColumnsFun()\n },\n $langLib: {\n $isReal: createIsRealFun(),\n $isInt: createIsIntFun(),\n $isBool: createIsBoolFun(),\n $castReal: createCastRealFun(),\n $castInt: createCastIntFun(),\n $castBool: createCastBoolFun(),\n $castString: createCastStringFun()\n }\n}\n\nconst funcsObject = concatObjects(libsObject.$ioLib, libsObject.$langLib,\n libsObject.$strLib, libsObject.$arrayLib);\n\nexport const LanguageDefinedFunction = Object.freeze({\n getMainFunctionName: () => LanguageService.getCurrentLangFuncs().main_function,\n getInternalName: (localName) => {\n if (localName.indexOf(\".\") !== -1) {\n const names = localName.split(\".\");\n const lib = valueToKey(names[0], LanguageService.getCurrentLangLibs());\n const internalName = valueToKey(names[1], LanguageService.getCurrentLangFuncs());\n if (lib === null || internalName === null) {\n return null;\n }\n return lib + \".\" + internalName;\n }\n const funcName = valueToKey(localName, LanguageService.getCurrentLangFuncs());\n if(funcName !== null) {\n if(funcsObject[funcName]) {\n return funcName;\n }\n }\n return null;\n },\n getFunction: (internalName) => {\n if (internalName.indexOf(\".\") !== -1) {\n const names = internalName.split(\".\");\n const libName = names[0];\n const funName = names[1];\n return libsObject[libName][funName];\n }\n return funcsObject[internalName];\n },\n getLocalName: (internalName) => {\n if (internalName.indexOf(\".\") !== -1) {\n const names = internalName.split(\".\");\n const libName = LanguageService.getCurrentLangLibs()[names[0]];\n const funName = LanguageService.getCurrentLangFuncs()[names[1]];\n return `${libName}.${funName}`;\n } else if (LanguageService.getCurrentLangFuncs()[internalName]) {\n return LanguageService.getCurrentLangFuncs()[internalName];\n } else { \n return internalName\n }\n }\n});","import { RuntimeError } from './runtimeError';\nimport { SemanticError } from './semanticError';\nimport * as LocalizedStringsService from './../../services/localizedStringsService';\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport const ProcessorErrorFactory = Object.freeze({\n symbol_not_found_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"symbol_not_found_full\", context));\n } else {\n return ProcessorErrorFactory.symbol_not_found(id);\n }\n },\n symbol_not_found: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"symbol_not_found\", context));\n },\n function_missing_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"function_missing_full\", context));\n } else {\n return ProcessorErrorFactory.function_missing(id);\n }\n },\n function_missing: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"function_missing\", context));\n },\n main_missing: () => {\n return new SemanticError(LocalizedStrings.getError(\"main_missing\"));\n }, // TODO: better urgent error message\n array_dimension_not_int_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_int_full\", context));\n } else {\n return ProcessorErrorFactory.array_dimension_not_int();\n }\n },\n array_dimension_not_int: () => {\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_int\"));\n },\n unknown_command_full: (sourceInfo)=> {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new RuntimeError(LocalizedStrings.getError(\"unknown_command_full\", context));\n } else {\n return ProcessorErrorFactory.unknown_command();\n }\n \n },\n unknown_command: ()=> {\n return new RuntimeError(LocalizedStrings.getError(\"unknown_command\"));\n },\n incompatible_types_full: (type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [LocalizedStrings.translateType(type, dim), sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types_full\", context));\n } else {\n return ProcessorErrorFactory.incompatible_types(type, dim);\n }\n },\n incompatible_types: (type, dim) => {\n const context = [LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types\", context));\n },\n incompatible_types_array_full: (exp, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, LocalizedStrings.translateType(type, dim), sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types_array_full\", context));\n } else {\n return ProcessorErrorFactory.incompatible_types_array(exp, type, dim);\n }\n },\n incompatible_types_array: (exp, type, dim) => {\n const context = [exp, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types_array\", context));\n },\n loop_condition_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, exp];\n return new SemanticError(LocalizedStrings.getError(\"loop_condition_type_full\", context));\n } else {\n return ProcessorErrorFactory.loop_condition_type(exp);\n }\n },\n loop_condition_type: (exp) => {\n const context = [exp];\n return new SemanticError(LocalizedStrings.getError(\"loop_condition_type\", context));\n },\n endless_loop_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"endless_loop_full\", context));\n } else {\n return ProcessorErrorFactory.endless_loop();\n }\n },\n endless_loop: () => {\n return new SemanticError(LocalizedStrings.getError(\"endless_loop\"));\n },\n for_condition_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, exp];\n return new SemanticError(LocalizedStrings.getError(\"for_condition_type_full\", context));\n } else {\n return ProcessorErrorFactory.for_condition_type(exp);\n }\n },\n for_condition_type: (exp) => {\n const context = [exp];\n return new SemanticError(LocalizedStrings.getError(\"for_condition_type\", context));\n },\n if_condition_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, exp];\n return new SemanticError(LocalizedStrings.getError(\"if_condition_type_full\", context));\n } else {\n return ProcessorErrorFactory.if_condition_type(exp);\n }\n },\n if_condition_type: (exp) => {\n const context = [exp];\n return new SemanticError(LocalizedStrings.getError(\"if_condition_type\", context));\n },\n invalid_global_var: () => {\n return new RuntimeError(LocalizedStrings.getError(\"invalid_global_var\"))\n },\n not_implemented: (id) => {\n const context = [id]\n return new RuntimeError(LocalizedStrings.getError(\"not_implemented\", context))\n },\n invalid_case_type_full: (exp, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, LocalizedStrings.translateType(type, dim), sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"invalid_case_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_case_type(exp, type, dim);\n }\n },\n invalid_case_type: (exp, type, dim) => {\n const context = [exp, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_case_type\", context));\n },\n void_in_expression_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, id];\n return new SemanticError(LocalizedStrings.getError(\"void_in_expression_full\", context));\n } else {\n return ProcessorErrorFactory.void_in_expression(id);\n }\n },\n void_in_expression: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"void_in_expression\", context));\n },\n invalid_array_access_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"invalid_array_access_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_access(id);\n }\n },\n invalid_array_access: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_array_access\", context));\n },\n invalid_matrix_access_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"invalid_matrix_access_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_matrix_access(id);\n }\n },\n invalid_matrix_access: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_matrix_access\", context));\n },\n matrix_column_outbounds_full: (id, value, columns, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, columns];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_column_outbounds_full\", context));\n } else {\n return ProcessorErrorFactory.matrix_column_outbounds(id, value, columns);\n }\n },\n matrix_column_outbounds: (id, value, columns) => {\n const context = [value, id, columns];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_column_outbounds\", context));\n },\n matrix_line_outbounds_full: (id, value, lines, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_line_outbounds_full\", context));\n } else {\n return ProcessorErrorFactory.matrix_line_outbounds(id, value, lines);\n }\n },\n matrix_line_outbounds: (id, value, lines) => {\n const context = [value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_line_outbounds\", context));\n },\n vector_line_outbounds_full: (id, value, lines, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"vector_line_outbounds_full\", context));\n } else {\n return ProcessorErrorFactory.vector_line_outbounds(id, value, lines);\n }\n },\n vector_line_outbounds: (id, value, lines) => {\n const context = [value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"vector_line_outbounds\", context));\n },\n vector_not_matrix_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id];\n return new RuntimeError(LocalizedStrings.getError(\"vector_not_matrix_full\", context));\n } else {\n return ProcessorErrorFactory.vector_not_matrix(id);\n }\n },\n vector_not_matrix: (id) => {\n const context = [id];\n return new RuntimeError(LocalizedStrings.getError(\"vector_not_matrix\", context));\n },\n function_no_return: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"function_no_return\", context));\n },\n invalid_void_return_full: (id, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_void_return_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_void_return(id, type, dim);\n }\n },\n invalid_void_return: (id, type, dim) => {\n const context = [id, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_void_return_full\", context));\n },\n invalid_return_type_full: (id, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_return_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_return_type(id, type, dim);\n }\n },\n invalid_return_type: (id, type, dim) => {\n const context = [id, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_return_type\", context));\n },\n invalid_parameters_size_full: (id, expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, expected, actual];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameters_size_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_parameters_size(id, expected, actual);\n }\n },\n invalid_parameters_size: (id, expected, actual) => {\n const context = [id, expected, actual];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameters_size\", context));\n },\n invalid_parameter_type_full: (id, exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, id, sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameter_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_parameter_type(id, exp);\n }\n },\n invalid_parameter_type: (id, exp) => {\n const context = [exp, id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameter_type_full\", context));\n },\n invalid_ref_full: (id, exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, id , sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"invalid_ref_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_ref(id, exp);\n }\n },\n invalid_ref: (id, exp) => {\n const context = [exp, id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_ref\", context));\n },\n unexpected_break_command_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new RuntimeError(LocalizedStrings.getError(\"unexpected_break_command_full\", context));\n } else {\n return ProcessorErrorFactory.unexpected_break_command();\n }\n },\n unexpected_break_command: () => {\n return new RuntimeError(LocalizedStrings.getError(\"unexpected_break_command\"));\n },\n invalid_array_literal_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, exp];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_literal_type(exp);\n }\n },\n invalid_array_literal_type: (exp) => {\n const context = [exp];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_type\", context));\n },\n invalid_array_literal_line_full: (expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_line_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_literal_type(expected, actual);\n }\n },\n invalid_array_literal_line: (expected, actual) => {\n const context = [expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_line\", context));\n },\n invalid_array_literal_column_full: (expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_column_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_literal_column(expected, actual);\n }\n },\n invalid_array_literal_column: (expected, actual) => {\n const context = [expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_column\", context));\n },\n invalid_unary_op_full: (opName, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(type, dim)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_unary_op_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_unary_op(opName, type, dim);\n }\n },\n invalid_unary_op: (opName, type, dim) => {\n const context = [LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(type, dim)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_unary_op\", context));\n },\n invalid_infix_op_full: (opName, typeLeft, dimLeft, typeRight, dimRight, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(typeLeft, dimLeft), LocalizedStrings.translateType(typeRight, dimRight)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_infix_op_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_infix_op(opName, typeLeft, dimLeft, typeRight, dimRight);\n }\n },\n invalid_infix_op: (opName, typeLeft, dimLeft, typeRight, dimRight) => {\n const context = [LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(typeLeft, dimLeft), LocalizedStrings.translateType(typeRight, dimRight)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_infix_op\", context));\n },\n array_dimension_not_positive_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_positive_full\", context));\n } else {\n return ProcessorErrorFactory.array_dimension_not_positive();\n }\n },\n array_dimension_not_positive: () => {\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_positive\"));\n }\n});","export class RuntimeError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, RuntimeError);\n }\n}","export class SemanticError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, SemanticError);\n }\n}","import { Store } from './store/store';\nimport { StoreObject } from './store/storeObject';\nimport { StoreObjectArray } from './store/storeObjectArray';\nimport { StoreObjectRef } from './store/storeObjectRef';\nimport { Modes } from './modes';\nimport { Context } from './context';\nimport { Types } from './../typeSystem/types';\nimport { Operators } from './../ast/operators';\nimport { LanguageDefinedFunction } from './definedFunctions';\nimport { resultTypeAfterInfixOp, resultTypeAfterUnaryOp } from './compatibilityTable';\nimport * as Commands from './../ast/commands/';\nimport * as Expressions from './../ast/expressions/';\nimport { StoreObjectArrayAddress } from './store/storeObjectArrayAddress';\nimport { StoreObjectArrayAddressRef } from './store/storeObjectArrayAddressRef';\nimport { CompoundType } from './../typeSystem/compoundType';\nimport { convertToString } from '../typeSystem/parsers';\nimport { Config } from '../util/config';\nimport Decimal from 'decimal.js';\nimport { ProcessorErrorFactory } from './error/processorErrorFactory';\nimport { RuntimeError } from './error/runtimeError';\n\nexport class IVProgProcessor {\n\n static get LOOP_TIMEOUT () {\n return Config.loopTimeout;\n }\n\n static set LOOP_TIMEOUT (ms) {\n Config.setConfig({loopTimeout: ms});\n }\n\n static get MAIN_INTERNAL_ID () {\n return \"$main\";\n }\n\n constructor (ast) {\n this.ast = ast;\n this.globalStore = new Store(\"$global\");\n this.stores = [this.globalStore];\n this.context = [Context.BASE];\n this.input = null;\n this.forceKill = false;\n this.loopTimers = [];\n this.output = null;\n }\n\n registerInput (input) {\n if(this.input !== null)\n this.input = null;\n this.input = input;\n }\n\n registerOutput (output) {\n if(this.output !== null)\n this.output = null;\n this.output = output;\n }\n\n checkContext(context) {\n return this.context[this.context.length - 1] === context;\n }\n\n ignoreSwitchCases (store) {\n if (store.mode === Modes.RETURN) {\n return true;\n } else if (store.mode === Modes.BREAK) {\n return true;\n } else {\n return false;\n }\n }\n\n prepareState () {\n if(this.stores !== null) {\n for (let i = 0; i < this.stores.length; i++) {\n delete this.stores[i];\n }\n this.stores = null;\n }\n if(this.globalStore !== null)\n this.globalStore = null;\n this.globalStore = new Store(\"$global\");\n this.stores = [this.globalStore];\n this.context = [Context.BASE];\n }\n\n interpretAST () {\n this.prepareState();\n return this.initGlobal().then( _ => {\n const mainFunc = this.findMainFunction();\n if(mainFunc === null) {\n throw ProcessorErrorFactory.main_missing();\n }\n return this.runFunction(mainFunc, [], this.globalStore);\n });\n }\n\n initGlobal () {\n if(!this.checkContext(Context.BASE)) {\n throw ProcessorErrorFactory.invalid_global_var();\n }\n return this.executeCommands(this.globalStore, this.ast.global);\n }\n\n findMainFunction () {\n return this.ast.functions.find(v => v.isMain);\n }\n\n findFunction (name) {\n if(name.match(/^\\$.+$/)) {\n const fun = LanguageDefinedFunction.getFunction(name);\n if(!!!fun) {\n throw ProcessorErrorFactory.not_implemented(name);\n }\n return fun;\n } else {\n const val = this.ast.functions.find( v => v.name === name);\n if (!!!val) {\n // TODO: better error message;\n throw ProcessorErrorFactory.function_missing(name);\n }\n return val;\n }\n }\n\n runFunction (func, actualParameters, store) {\n const funcName = func.isMain ? IVProgProcessor.MAIN_INTERNAL_ID : func.name;\n let funcStore = new Store(funcName);\n funcStore.extendStore(this.globalStore);\n let returnStoreObject = null;\n if(func.returnType instanceof CompoundType) {\n if(func.returnType.dimensions > 1) {\n returnStoreObject = new StoreObjectArray(func.returnType,-1,-1,[[]]);\n } else {\n returnStoreObject = new StoreObjectArray(func.returnType,-1,null,[]);\n }\n } else {\n returnStoreObject = new StoreObject(func.returnType, null);\n }\n funcStore.insertStore('$', returnStoreObject);\n const newFuncStore$ = this.associateParameters(func.formalParameters, actualParameters, store, funcStore);\n return newFuncStore$.then(sto => {\n this.context.push(Context.FUNCTION);\n this.stores.push(sto);\n return this.executeCommands(sto, func.variablesDeclarations)\n .then(stoWithVars => this.executeCommands(stoWithVars, func.commands)).then(finalSto => {\n this.stores.pop();\n this.context.pop();\n return finalSto;\n });\n });\n }\n\n associateParameters (formalList, actualList, callerStore, calleeStore) {\n const funcName = calleeStore.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : calleeStore.name;\n\n if (formalList.length != actualList.length) {\n throw ProcessorErrorFactory.invalid_parameters_size(funcName, formalList.length, actualList.length);\n }\n const promises$ = actualList.map(actualParameter => this.evaluateExpression(callerStore, actualParameter));\n return Promise.all(promises$).then(values => {\n for (let i = 0; i < values.length; i++) {\n const stoObj = values[i];\n const exp = actualList[i];\n let shouldTypeCast = false;\n const formalParameter = formalList[i];\n if(!formalParameter.type.isCompatible(stoObj.type)) {\n if (Config.enable_type_casting && !formalParameter.byRef\n && Store.canImplicitTypeCast(formalParameter.type, stoObj.type)) {\n shouldTypeCast = true;\n } else {\n throw ProcessorErrorFactory.invalid_parameter_type(funcName, exp.toString());\n }\n }\n\n if(formalParameter.byRef && !stoObj.inStore) {\n throw ProcessorErrorFactory.invalid_ref(funcName, exp.toString());\n }\n\n if(formalParameter.byRef) {\n let ref = null;\n if (stoObj instanceof StoreObjectArrayAddress) {\n ref = new StoreObjectArrayAddressRef(stoObj);\n } else {\n ref = new StoreObjectRef(stoObj.id, callerStore);\n }\n calleeStore.insertStore(formalParameter.id, ref);\n } else {\n let realValue = this.parseStoreObjectValue(stoObj);\n if (shouldTypeCast) {\n realValue = Store.doImplicitCasting(formalParameter.type, realValue);\n }\n calleeStore.insertStore(formalParameter.id, realValue);\n }\n }\n return calleeStore;\n });\n }\n\n executeCommands (store, cmds) {\n // helper to partially apply a function, in this case executeCommand\n const outerRef = this;\n const partial = (fun, cmd) => (sto) => fun(sto, cmd);\n return cmds.reduce((lastCommand, next) => {\n const nextCommand = partial(outerRef.executeCommand.bind(outerRef), next);\n return lastCommand.then(nextCommand);\n }, Promise.resolve(store));\n }\n\n executeCommand (store, cmd) {\n if(this.forceKill) {\n return Promise.reject(\"FORCED_KILL!\");\n } else if (store.mode === Modes.PAUSE) {\n return Promise.resolve(this.executeCommand(store, cmd));\n } else if(store.mode === Modes.RETURN) {\n return Promise.resolve(store);\n } else if(this.checkContext(Context.BREAKABLE) && store.mode === Modes.BREAK) {\n return Promise.resolve(store);\n }\n\n if (cmd instanceof Commands.Declaration) {\n return this.executeDeclaration(store, cmd);\n } else if (cmd instanceof Commands.ArrayIndexAssign) {\n return this.executeArrayIndexAssign(store, cmd);\n } else if (cmd instanceof Commands.Assign) {\n return this.executeAssign(store, cmd);\n } else if (cmd instanceof Commands.Break) {\n return this.executeBreak(store, cmd);\n } else if (cmd instanceof Commands.Return) {\n return this.executeReturn(store, cmd);\n } else if (cmd instanceof Commands.IfThenElse) {\n return this.executeIfThenElse(store, cmd);\n } else if (cmd instanceof Commands.DoWhile) {\n return this.executeDoWhile(store, cmd);\n } else if (cmd instanceof Commands.While) {\n return this.executeWhile(store, cmd);\n } else if (cmd instanceof Commands.For) {\n return this.executeFor(store, cmd);\n } else if (cmd instanceof Commands.Switch) {\n return this.executeSwitch(store, cmd);\n } else if (cmd instanceof Expressions.FunctionCall) {\n \n return this.executeFunctionCall(store, cmd);\n } else if (cmd instanceof Commands.SysCall) {\n return this.executeSysCall(store, cmd);\n } else {\n throw ProcessorErrorFactory.unknown_command(cmd.sourceInfo);\n }\n }\n\n executeSysCall (store, cmd) {\n const func = cmd.langFunc.bind(this);\n return func(store, cmd);\n }\n\n executeFunctionCall (store, cmd) {\n let func = null;\n if(cmd.isMainCall) {\n func = this.findMainFunction();\n } else {\n func = this.findFunction(cmd.id);\n }\n return this.runFunction(func, cmd.actualParameters, store)\n .then(sto => {\n if(!Types.VOID.isCompatible(func.returnType) && sto.mode !== Modes.RETURN) {\n const funcName = func.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : func.name;\n return Promise.reject(ProcessorErrorFactory.function_no_return(funcName));\n } else {\n return store;\n }\n })\n }\n\n executeSwitch (store, cmd) {\n this.context.push(Context.BREAKABLE);\n const auxCaseFun = (promise, switchExp, aCase) => {\n return promise.then( result => {\n const sto = result.sto;\n if (this.ignoreSwitchCases(sto)) {\n return Promise.resolve(result);\n } else if (result.wasTrue || aCase.isDefault) {\n const $newSto = this.executeCommands(result.sto,aCase.commands);\n return $newSto.then(nSto => {\n return Promise.resolve({wasTrue: true, sto: nSto});\n });\n } else {\n const $value = this.evaluateExpression(sto,\n new Expressions.InfixApp(Operators.EQ, switchExp, aCase.expression));\n return $value.then(vl => {\n if (vl.value) {\n const $newSto = this.executeCommands(result.sto,aCase.commands);\n return $newSto.then(nSto => {\n return Promise.resolve({wasTrue: true, sto: nSto});\n });\n } else {\n return Promise.resolve({wasTrue: false, sto: sto});\n }\n });\n }\n });\n }\n\n try {\n let breakLoop = false;\n let $result = Promise.resolve({wasTrue: false, sto: store});\n for (let index = 0; index < cmd.cases.length && !breakLoop; index++) {\n const aCase = cmd.cases[index];\n $result = auxCaseFun($result, cmd.expression, aCase);\n $result.then( r => breakLoop = this.ignoreSwitchCases(r.sto));\n }\n return $result.then(r => {\n this.context.pop();\n if(r.sto.mode === Modes.BREAK) {\n r.sto.mode = Modes.RUN;\n }\n return r.sto;\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeFor (store, cmd) {\n try {\n //BEGIN for -> while rewrite\n const initCmd = cmd.assignment;\n const condition = cmd.condition;\n const increment = cmd.increment;\n const whileBlock = new Commands.CommandBlock([],\n cmd.commands.concat(increment));\n const forAsWhile = new Commands.While(condition, whileBlock);\n forAsWhile.sourceInfo = cmd.sourceInfo;\n //END for -> while rewrite\n const newCmdList = [initCmd,forAsWhile];\n return this.executeCommands(store, newCmdList);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeDoWhile (store, cmd) {\n const outerRef = this;\n try {\n outerRef.loopTimers.push(Date.now());\n outerRef.context.push(Context.BREAKABLE);\n const $newStore = outerRef.executeCommands(store, cmd.commands);\n return $newStore.then(sto => {\n if(sto.mode === Modes.BREAK) {\n outerRef.context.pop();\n sto.mode = Modes.RUN;\n outerRef.loopTimers.pop();\n return sto;\n }\n const $value = outerRef.evaluateExpression(sto, cmd.expression);\n return $value.then(vl => {\n if (!vl.type.isCompatible(Types.BOOLEAN)) {\n return Promise.reject(ProcessorErrorFactory.loop_condition_type_full(cmd.sourceInfo));\n }\n if (vl.value) {\n outerRef.context.pop();\n for (let i = 0; i < outerRef.loopTimers.length; i++) {\n const time = outerRef.loopTimers[i];\n if(Date.now() - time >= IVProgProcessor.LOOP_TIMEOUT) {\n outerRef.forceKill = true;\n return Promise.reject(ProcessorErrorFactory.endless_loop_full(cmd.sourceInfo));\n }\n }\n return outerRef.executeCommand(sto, cmd);\n } else {\n outerRef.context.pop();\n outerRef.loopTimers.pop();\n return sto;\n }\n })\n })\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeWhile (store, cmd) {\n const outerRef = this;\n try {\n outerRef.loopTimers.push(Date.now());\n outerRef.context.push(Context.BREAKABLE);\n const $value = outerRef.evaluateExpression(store, cmd.expression);\n return $value.then(vl => {\n if(vl.type.isCompatible(Types.BOOLEAN)) {\n if(vl.value) {\n const $newStore = outerRef.executeCommands(store, cmd.commands);\n return $newStore.then(sto => {\n outerRef.context.pop();\n if (sto.mode === Modes.BREAK) {\n outerRef.loopTimers.pop();\n sto.mode = Modes.RUN;\n return sto;\n }\n for (let i = 0; i < outerRef.loopTimers.length; i++) {\n const time = outerRef.loopTimers[i];\n if(Date.now() - time >= IVProgProcessor.LOOP_TIMEOUT) {\n outerRef.forceKill = true;\n return Promise.reject(ProcessorErrorFactory.endless_loop_full(cmd.sourceInfo));\n }\n }\n return outerRef.executeCommand(sto, cmd);\n });\n } else {\n outerRef.context.pop();\n outerRef.loopTimers.pop();\n return store;\n }\n } else {\n return Promise.reject(ProcessorErrorFactory.loop_condition_type_full(cmd.expression.toString(), cmd.sourceInfo));\n }\n })\n \n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeIfThenElse (store, cmd) {\n try {\n const $value = this.evaluateExpression(store, cmd.condition);\n return $value.then(vl => {\n if(vl.type.isCompatible(Types.BOOLEAN)) {\n if(vl.value) {\n return this.executeCommands(store, cmd.ifTrue.commands);\n } else if( cmd.ifFalse !== null){\n if(cmd.ifFalse instanceof Commands.IfThenElse) {\n return this.executeCommand(store, cmd.ifFalse);\n } else {\n return this.executeCommands(store, cmd.ifFalse.commands);\n }\n } else {\n return Promise.resolve(store);\n }\n } else {\n return Promise.reject(ProcessorErrorFactory.if_condition_type_full(cmd.condition.toString(), cmd.sourceInfo));\n }\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeReturn (store, cmd) {\n try {\n const funcType = store.applyStore('$').type;\n const $value = this.evaluateExpression(store, cmd.expression);\n const funcName = store.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : store.name;\n return $value.then(vl => {\n\n if(vl === null && funcType.isCompatible(Types.VOID)) {\n store.mode = Modes.RETURN;\n return Promise.resolve(store);\n }\n\n if (vl === null || !funcType.isCompatible(vl.type)) {\n const stringInfo = funcType.stringInfo();\n const info = stringInfo[0];\n return Promise.reject(ProcessorErrorFactory.invalid_return_type_full(funcName, info.type, info.dim, cmd.sourceInfo));\n } else {\n let realValue = this.parseStoreObjectValue(vl);\n store.updateStore('$', realValue);\n store.mode = Modes.RETURN;\n return Promise.resolve(store);\n }\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeBreak (store, cmd) {\n if(this.checkContext(Context.BREAKABLE)) {\n store.mode = Modes.BREAK;\n return Promise.resolve(store);\n } else {\n return Promise.reject(ProcessorErrorFactory.unexpected_break_command_full(cmd.sourceInfo));\n }\n }\n\n executeAssign (store, cmd) {\n try {\n const inStore = store.applyStore(cmd.id);\n const $value = this.evaluateExpression(store, cmd.expression);\n return $value.then( vl => {\n let realValue = this.parseStoreObjectValue(vl);\n if(!inStore.type.isCompatible(realValue.type)) {\n if(Config.enable_type_casting && Store.canImplicitTypeCast(inStore.type, vl.type)) {\n realValue = Store.doImplicitCasting(inStore.type, realValue);\n } else {\n const stringInfo = inStore.type.stringInfo()\n const info = stringInfo[0]\n return Promise.reject(ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo));\n }\n }\n \n store.updateStore(cmd.id, realValue) \n return store;\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeArrayIndexAssign (store, cmd) {\n const mustBeArray = store.applyStore(cmd.id);\n if(!(mustBeArray.type instanceof CompoundType)) {\n return Promise.reject(ProcessorErrorFactory.invalid_array_access_full(cmd.id, cmd.sourceInfo));\n }\n const line$ = this.evaluateExpression(store, cmd.line);\n const column$ = this.evaluateExpression(store, cmd.column);\n const value$ = this.evaluateExpression(store, cmd.expression);\n return Promise.all([line$, column$, value$]).then(results => {\n const lineSO = results[0];\n if(!Types.INTEGER.isCompatible(lineSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n const line = lineSO.number;\n const columnSO = results[1];\n let column = null\n if (columnSO !== null) {\n if(!Types.INTEGER.isCompatible(columnSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n column = columnSO.number;\n }\n const value = this.parseStoreObjectValue(results[2]);\n if (line >= mustBeArray.lines) {\n if(mustBeArray.isVector) {\n return Promise.reject(ProcessorErrorFactory.vector_line_outbounds_full(cmd.id, line, mustBeArray.lines, cmd.sourceInfo));\n } else {\n return Promise.reject(ProcessorErrorFactory.matrix_line_outbounds_full(cmd.id, line, mustBeArray.lines, cmd.sourceInfo));\n }\n } else if (line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n if (column !== null && mustBeArray.columns === null ){\n return Promise.reject(ProcessorErrorFactory.vector_not_matrix_full(cmd.id, cmd.sourceInfo));\n }\n if(column !== null ) {\n if (column >= mustBeArray.columns) {\n return Promise.reject(ProcessorErrorFactory.matrix_column_outbounds_full(cmd.id, column,mustBeArray.columns, cmd.sourceInfo));\n } else if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n }\n\n const newArray = Object.assign(new StoreObjectArray(null,null,null), mustBeArray);\n if (column !== null) {\n if (value.type instanceof CompoundType || !newArray.type.canAccept(value.type)) {\n const type = mustBeArray.type.innerType;\n const stringInfo = type.stringInfo()\n const info = stringInfo[0]\n return Promise.reject(ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo));\n }\n newArray.value[line].value[column] = value;\n store.updateStore(cmd.id, newArray);\n } else {\n if((mustBeArray.columns !== null && value.type instanceof CompoundType) || !newArray.type.canAccept(value.type)) {\n const type = mustBeArray.type;\n const stringInfo = type.stringInfo()\n const info = stringInfo[0]\n const exp = cmd.expression.toString()\n return Promise.reject(ProcessorErrorFactory.incompatible_types_array_full(exp,info.type, info.dim-1, cmd.sourceInfo));\n }\n newArray.value[line] = value;\n store.updateStore(cmd.id, newArray);\n }\n return store;\n });\n }\n\n executeDeclaration (store, cmd) {\n try {\n const $value = this.evaluateExpression(store, cmd.initial);\n if(cmd instanceof Commands.ArrayDeclaration) {\n const $lines = this.evaluateExpression(store, cmd.lines);\n const $columns = cmd.columns === null ? null: this.evaluateExpression(store, cmd.columns);\n return Promise.all([$lines, $columns, $value]).then(values => {\n const lineSO = values[0];\n if(!Types.INTEGER.isCompatible(lineSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n const line = lineSO.number;\n if(line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n const columnSO = values[1];\n let column = null\n if (columnSO !== null) {\n if(!Types.INTEGER.isCompatible(columnSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n column = columnSO.number;\n if(column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n }\n const value = values[2];\n const temp = new StoreObjectArray(cmd.type, line, column, null);\n store.insertStore(cmd.id, temp);\n let realValue = value;\n if (value !== null) {\n if(value instanceof StoreObjectArrayAddress) {\n if(value.type instanceof CompoundType) {\n realValue = Object.assign(new StoreObjectArray(null,null,null), value.refValue);\n } else {\n realValue = Object.assign(new StoreObject(null,null), value.refValue);\n }\n }\n } else {\n realValue = new StoreObjectArray(cmd.type, line, column, [])\n if(column !== null) {\n for (let i = 0; i < line; i++) {\n realValue.value.push(new StoreObjectArray(new CompoundType(cmd.type.innerType, 1), column, null, []));\n }\n }\n }\n realValue.readOnly = cmd.isConst;\n store.updateStore(cmd.id, realValue);\n return store;\n });\n \n } else {\n const temp = new StoreObject(cmd.type, null);\n store.insertStore(cmd.id, temp);\n return $value.then(vl => {\n let realValue = vl;\n if (vl !== null) {\n if(!vl.type.isCompatible(cmd.type)) {\n if(Config.enable_type_casting && Store.canImplicitTypeCast(cmd.type, vl.type)) {\n realValue = Store.doImplicitCasting(cmd.type, realValue);\n } else {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n return Promise.reject(ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo));\n }\n }\n if(vl instanceof StoreObjectArrayAddress) {\n if(vl.type instanceof CompoundType) {\n return Promise.reject(new Error(\"!!!Critical Error: Compatibility check failed, a Type accepts a CompoundType\"))\n } else {\n realValue = Object.assign(new StoreObject(null,null), vl.refValue);\n }\n }\n } else {\n realValue = new StoreObject(cmd.type, 0);\n }\n realValue.readOnly = cmd.isConst;\n store.updateStore(cmd.id, realValue);\n return store;\n });\n }\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n evaluateExpression (store, exp) {\n\n if (exp instanceof Expressions.UnaryApp) {\n return this.evaluateUnaryApp(store, exp);\n } else if (exp instanceof Expressions.InfixApp) {\n return this.evaluateInfixApp(store, exp);\n } else if (exp instanceof Expressions.ArrayAccess) {\n return this.evaluateArrayAccess(store, exp);\n } else if (exp instanceof Expressions.VariableLiteral) {\n return this.evaluateVariableLiteral(store, exp);\n } else if (exp instanceof Expressions.IntLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.RealLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.BoolLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.StringLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.ArrayLiteral) {\n return this.evaluateArrayLiteral(store, exp);\n } else if (exp instanceof Expressions.FunctionCall) {\n return this.evaluateFunctionCall(store, exp);\n }\n return Promise.resolve(null);\n }\n\n evaluateFunctionCall (store, exp) {\n if(exp.isMainCall) {\n return Promise.reject(ProcessorErrorFactory.void_in_expression_full(LanguageDefinedFunction.getMainFunctionName(), exp.sourceInfo));\n }\n const func = this.findFunction(exp.id);\n if(Types.VOID.isCompatible(func.returnType)) {\n // TODO: better error message\n return Promise.reject(ProcessorErrorFactory.void_in_expression_full(exp.id, exp.sourceInfo));\n }\n const $newStore = this.runFunction(func, exp.actualParameters, store);\n return $newStore.then( sto => {\n if(sto.mode !== Modes.RETURN) {\n return Promise.reject(new Error(\"The function that was called did not had a return command: \"+exp.id));\n }\n const val = sto.applyStore('$');\n if (val instanceof StoreObjectArray) {\n return Promise.resolve(Object.assign(new StoreObjectArray(null,null,null,null,null), val));\n } else {\n return Promise.resolve(Object.assign(new StoreObject(null,null), val));\n }\n });\n }\n\n evaluateArrayLiteral (store, exp) {\n const errorHelperFunction = (validationResult, exp) => {\n const errorCode = validationResult[0];\n switch(errorCode) {\n case StoreObjectArray.WRONG_COLUMN_NUMBER: {\n const columnValue = validationResult[1];\n return Promise.reject(ProcessorErrorFactory.invalid_array_literal_column_full(arr.columns, columnValue, exp.sourceInfo));\n }\n case StoreObjectArray.WRONG_LINE_NUMBER: {\n const lineValue = validationResult[1];\n return Promise.reject(ProcessorErrorFactory.invalid_array_literal_line_full(arr.lines, lineValue, exp.sourceInfo));\n }\n case StoreObjectArray.WRONG_TYPE: {\n let line = null;\n let strExp = null;\n if (validationResult.length > 2) {\n line = validationResult[1];\n const column = validationResult[2];\n strExp = exp.value[line].value[column].toString()\n } else {\n line = validationResult[1];\n strExp = exp.value[line].toString()\n }\n return Promise.reject(ProcessorErrorFactory.invalid_array_literal_type_full(strExp, exp.sourceInfo)); }\n }\n };\n if(!exp.isVector) {\n const $matrix = this.evaluateMatrix(store, exp.value);\n return $matrix.then(list => {\n const type = new CompoundType(list[0].type.innerType, 2);\n const arr = new StoreObjectArray(type, list.length, list[0].lines, list);\n const checkResult = arr.isValid;\n if(checkResult.length == 0)\n return Promise.resolve(arr);\n else {\n return errorHelperFunction(checkResult, exp);\n }\n });\n } else {\n return this.evaluateVector(store, exp.value).then(list => {\n const type = new CompoundType(list[0].type, 1);\n const stoArray = new StoreObjectArray(type, list.length, null, list);\n const checkResult = stoArray.isValid;\n if(checkResult.length == 0)\n return Promise.resolve(stoArray);\n else {\n return errorHelperFunction(checkResult, exp);\n }\n });\n }\n }\n\n evaluateVector (store, exps) {\n return Promise.all(exps.map( exp => this.evaluateExpression(store, exp)));\n }\n\n evaluateMatrix (store, exps) {\n return Promise.all(exps.map( vector => {\n const $vector = this.evaluateVector(store, vector.value)\n return $vector.then(list => {\n const type = new CompoundType(list[0].type, 1);\n return new StoreObjectArray(type, list.length, null, list)\n });\n } ));\n }\n\n evaluateLiteral (_, exp) {\n return Promise.resolve(new StoreObject(exp.type, exp.value));\n }\n\n evaluateVariableLiteral (store, exp) {\n try {\n const val = store.applyStore(exp.id);\n if (val instanceof StoreObjectArray) {\n return Promise.resolve(Object.assign(new StoreObjectArray(null,null,null,null), val));\n } else {\n return Promise.resolve(Object.assign(new StoreObject(null,null), val));\n }\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n evaluateArrayAccess (store, exp) {\n const mustBeArray = store.applyStore(exp.id);\n if (!(mustBeArray.type instanceof CompoundType)) {\n return Promise.reject(ProcessorErrorFactory.invalid_array_access_full(exp.id, exp.sourceInfo));\n }\n const $line = this.evaluateExpression(store, exp.line);\n const $column = this.evaluateExpression(store, exp.column);\n return Promise.all([$line, $column]).then(values => {\n const lineSO = values[0];\n const columnSO = values[1];\n if(!Types.INTEGER.isCompatible(lineSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(exp.sourceInfo));\n }\n const line = lineSO.number;\n let column = null;\n if(columnSO !== null) {\n if(!Types.INTEGER.isCompatible(columnSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(exp.sourceInfo));\n }\n column = columnSO.number;\n }\n\n if (line >= mustBeArray.lines) {\n if(mustBeArray.isVector) {\n return Promise.reject(ProcessorErrorFactory.vector_line_outbounds_full(exp.id, line, mustBeArray.lines, exp.sourceInfo));\n } else {\n return Promise.reject(ProcessorErrorFactory.matrix_line_outbounds_full(exp.id, line, mustBeArray.lines, exp.sourceInfo));\n }\n } else if (line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(exp.sourceInfo);\n }\n if (column !== null && mustBeArray.columns === null ){\n return Promise.reject(ProcessorErrorFactory.vector_not_matrix_full(exp.id, exp.sourceInfo));\n }\n if(column !== null ) {\n if (column >= mustBeArray.columns) {\n return Promise.reject(ProcessorErrorFactory.matrix_column_outbounds_full(exp.id, column,mustBeArray.columns, exp.sourceInfo));\n } else if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(exp.sourceInfo);\n }\n \n }\n return Promise.resolve(new StoreObjectArrayAddress(mustBeArray.id, line, column, store));\n });\n }\n\n evaluateUnaryApp (store, unaryApp) {\n const $left = this.evaluateExpression(store, unaryApp.left);\n return $left.then( left => {\n const resultType = resultTypeAfterUnaryOp(unaryApp.op, left.type);\n if (Types.UNDEFINED.isCompatible(resultType)) {\n const stringInfo = left.type.stringInfo();\n const info = stringInfo[0];\n return Promise.reject(ProcessorErrorFactory.invalid_unary_op_full(unaryApp.op, info.type, info.dim, unaryApp.sourceInfo));\n }\n switch (unaryApp.op.ord) {\n case Operators.ADD.ord:\n return new StoreObject(resultType, left.value);\n case Operators.SUB.ord:\n return new StoreObject(resultType, left.value.negated());\n case Operators.NOT.ord:\n return new StoreObject(resultType, !left.value);\n default:\n return Promise.reject(new RuntimeError('!!!Critical Invalid UnaryApp '+ unaryApp.op));\n }\n });\n }\n\n evaluateInfixApp (store, infixApp) {\n const $left = this.evaluateExpression(store, infixApp.left);\n const $right = this.evaluateExpression(store, infixApp.right);\n return Promise.all([$left, $right]).then(values => {\n let shouldImplicitCast = false;\n const left = values[0];\n const right = values[1];\n let resultType = resultTypeAfterInfixOp(infixApp.op, left.type, right.type);\n if (Types.UNDEFINED.isCompatible(resultType)) {\n if (Config.enable_type_casting && Store.canImplicitTypeCast(left.type, right.type)) {\n shouldImplicitCast = true;\n } else {\n const stringInfoLeft = left.type.stringInfo();\n const infoLeft = stringInfoLeft[0];\n const stringInfoRight = right.type.stringInfo();\n const infoRight = stringInfoRight[0];\n return Promise.reject(ProcessorErrorFactory.invalid_infix_op_full(infixApp.op, infoLeft.type, infoLeft.dim,\n infoRight.type,infoRight.dim,infixApp.sourceInfo));\n }\n }\n let result = null;\n switch (infixApp.op.ord) {\n case Operators.ADD.ord: {\n if(Types.STRING.isCompatible(left.type)) {\n const rightStr = convertToString(right.value, right.type);\n return new StoreObject(resultType, left.value + rightStr);\n } else if (Types.STRING.isCompatible(right.type)) {\n const leftStr = convertToString(left.value, left.type);\n return new StoreObject(resultType, leftStr + right.value);\n } else {\n return new StoreObject(resultType, left.value.plus(right.value));\n }\n }\n case Operators.SUB.ord:\n return new StoreObject(resultType, left.value.minus(right.value));\n case Operators.MULT.ord: {\n result = left.value.times(right.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n return new StoreObject(resultType, result);\n }\n case Operators.DIV.ord: {\n if (Types.INTEGER.isCompatible(resultType))\n result = left.value.divToInt(right.value);\n else\n result = left.value.div(right.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n return new StoreObject(resultType, result);\n }\n case Operators.MOD.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if(shouldImplicitCast) {\n resultType = Types.INTEGER;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.modulo(rightValue);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n return new StoreObject(resultType, result);\n } \n case Operators.GT.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length > right.value.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.gt(rightValue);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.GE.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length >= right.value.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.gte(rightValue);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.LT.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length < right.value.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.lt(rightValue);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.LE.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length <= right.value.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.lte(rightValue);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.EQ.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.INTEGER.isCompatible(left.type) || Types.REAL.isCompatible(left.type)) {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.eq(rightValue);\n } else {\n result = left.value === right.value;\n }\n return new StoreObject(resultType, result);\n }\n case Operators.NEQ.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.INTEGER.isCompatible(left.type) || Types.REAL.isCompatible(left.type)) {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = !leftValue.eq(rightValue);\n } else {\n result = left.value !== right.value;\n }\n return new StoreObject(resultType, result);\n }\n case Operators.AND.ord:\n return new StoreObject(resultType, left.value && right.value);\n case Operators.OR.ord:\n return new StoreObject(resultType, left.value || right.value);\n default:\n return Promise.reject(new RuntimeError('!!!Critical Invalid InfixApp '+ infixApp.op));\n }\n });\n }\n\n parseStoreObjectValue (vl) {\n let realValue = vl;\n if(vl instanceof StoreObjectArrayAddress) { \n if(vl.type instanceof CompoundType) {\n switch(vl.type.dimensions) {\n case 1: {\n realValue = new StoreObjectArray(vl.type, vl.value);\n break;\n }\n default: {\n throw new RuntimeError(\"Three dimensional array address...\");\n }\n }\n } else {\n realValue = new StoreObject(vl.type, vl.value);\n }\n }\n return realValue;\n }\n\n}","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { Modes } from '../modes';\n\n/**\n * num_elements\n * matrix_lines\n * matrix_columns\n */\n\nexport function createNumElementsFun () {\n const numElementsFun = (sto, _) => {\n const vector = sto.applyStore(\"vector\");\n const temp = new StoreObject(Types.INTEGER, toInt(vector.lines));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(numElementsFun)]);\n const func = new Commands.Function('$numElements', Types.INTEGER,\n [new Commands.FormalParameter(new CompoundType(Types.ALL, 1), 'vector', false)],\n block);\n return func;\n }\n\nexport function createMatrixLinesFun () {\n const matrixLinesFun = (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreObject(Types.INTEGER, toInt(matrix.lines));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(matrixLinesFun)]);\n const func = new Commands.Function('$matrixLines', Types.INTEGER,\n [new Commands.FormalParameter(new CompoundType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n\nexport function createMatrixColumnsFun () {\n const matrixColumnsFun = (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreObject(Types.INTEGER, toInt(matrix.columns));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(matrixColumnsFun)]);\n const func = new Commands.Function('$matrixColumns', Types.INTEGER,\n [new Commands.FormalParameter(new CompoundType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n ","import { StoreObject } from './../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport {toInt, toString, toBool, toReal, convertToString} from './../../typeSystem/parsers';\nimport { Types } from './../../typeSystem/types';\n\nexport function createOutputFun () {\n const writeFunction = function (store, _) {\n const val = store.applyStore('p1');\n this.output.sendOutput(convertToString(val.value, val.type));\n return Promise.resolve(store);\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(writeFunction)]);\n const func = new Commands.Function('$write', Types.VOID,\n [new Commands.FormalParameter(Types.ALL, 'p1', false)],\n block);\n return func;\n}\n\nexport function createInputFun () {\n const readFunction = function (store, _) {\n const request = new Promise((resolve, _) => {\n this.input.requestInput(resolve);\n });\n return request.then(text => {\n const typeToConvert = store.applyStore('p1').type;\n let stoObj = null;\n if (typeToConvert.isCompatible(Types.INTEGER)) {\n const val = toInt(text);\n stoObj = new StoreObject(Types.INTEGER, val.trunc());\n } else if (typeToConvert.isCompatible(Types.REAL)) {\n stoObj = new StoreObject(Types.REAL, toReal(text));\n } else if (typeToConvert.isCompatible(Types.BOOLEAN)) {\n stoObj = new StoreObject(Types.BOOLEAN, toBool(text));\n } else if (typeToConvert.isCompatible(Types.STRING)) {\n stoObj = new StoreObject(Types.STRING, toString(text));\n }\n this.loopTimers.splice(0,this.loopTimers.length)\n store.updateStore('p1', stoObj);\n return Promise.resolve(store);\n });\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(readFunction)]);\n const func = new Commands.Function('$read', Types.VOID,\n [new Commands.FormalParameter(Types.ALL, 'p1', true)],\n block);\n return func;\n}","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toReal, convertToString } from \"./../../typeSystem/parsers\";\nimport { IVProgParser } from '../../ast/ivprogParser';\nimport { RealLiteral, IntLiteral, BoolLiteral } from '../../ast/expressions';\nimport { Modes } from '../modes';\n\n/**\n * \n * is_real\n * is_int\n * is_bool\n * cast_real\n * cast_int\n * cast_bool\n * cast_string\n */\n\nexport function createIsRealFun () {\n const isRealFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.value);\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof RealLiteral) {\n result = true;\n }\n } catch (error) { }\n const temp = new StoreObject(Types.BOOLEAN, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isRealFun)]);\n const func = new Commands.Function('$isReal', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createIsIntFun () {\n const isIntFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.value);\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof IntLiteral) {\n result = true;\n }\n } catch (error) { }\n const temp = new StoreObject(Types.BOOLEAN, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isIntFun)]);\n const func = new Commands.Function('$isInt', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createIsBoolFun () {\n const isBoolFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.value);\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n result = true;\n }\n } catch (error) { }\n const temp = new StoreObject(Types.BOOLEAN, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isBoolFun)]);\n const func = new Commands.Function('$isBool', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createCastRealFun () {\n const castRealFun = (sto, _) => {\n const val = sto.applyStore(\"val\");\n switch (val.type.ord) {\n case Types.INTEGER.ord: {\n const temp = new StoreObject(Types.REAL, toReal(val.number));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n case Types.STRING.ord: {\n const parser = IVProgParser.createParser(val.value);\n try {\n const result = parser.parseTerm();\n if (result instanceof RealLiteral) {\n const temp = new StoreObject(Types.REAL, result.value);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n } catch (error) { \n return Promise.reject(\"cannot convert string to real\");\n }\n }\n }\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castRealFun)]);\n const func = new Commands.Function('$castReal', Types.REAL,\n [new Commands.FormalParameter(Types.ALL, 'val', false)],\n block);\n return func;\n}\n\nexport function createCastIntFun () {\n const castIntFun = (sto, _) => {\n const val = sto.applyStore(\"val\");\n switch (val.type.ord) {\n case Types.REAL.ord: {\n const temp = new StoreObject(Types.INTEGER, Math.floor(val.number));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n case Types.STRING.ord: {\n const parser = IVProgParser.createParser(val.value);\n try {\n const result = parser.parseTerm();\n if (result instanceof IntLiteral) {\n const temp = new StoreObject(Types.INTEGER, result.value);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n } catch (error) { \n return Promise.reject(\"cannot convert string to real\");\n }\n }\n }\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castIntFun)]);\n const func = new Commands.Function('$castInt', Types.INTEGER,\n [new Commands.FormalParameter(Types.ALL, 'val', false)],\n block);\n return func;\n}\n\nexport function createCastBoolFun () {\n const castBoolFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.value);\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n const temp = new StoreObject(Types.BOOLEAN, val.value);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n } catch (error) { }\n return Promise.reject(\"cannot convert \" + str.value + \" to boolean\");\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castBoolFun)]);\n const func = new Commands.Function('$castBool', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createCastStringFun () {\n const castStringFun = function (store, _) {\n const val = store.applyStore('str');\n let result = convertToString(val)\n const temp = new StoreObject(Types.STRING, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castStringFun)]);\n const func = new Commands.Function('$castString', Types.STRING,\n [new Commands.FormalParameter(Types.ALL, 'str', false)],\n block);\n return func;\n}","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toReal } from \"./../../typeSystem/parsers\";\nimport { Decimal } from 'decimal.js';\nimport { MultiType } from '../../typeSystem/multiType';\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { Modes } from '../modes';\nimport { Config } from '../../util/config';\n\n/**\n * sin\n * cos\n * tan\n * sqrt\n * pow\n * log\n * abs\n * negate\n * invert\n * max\n * min\n */\n\nfunction convertToRadians (degrees) {\n return degrees.times(Decimal.acos(-1)).div(180);\n}\n\nexport function createSinFun () {\n const sinFun = (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.value.mod(360);\n let result = null;\n if(angle.eq(90)) {\n result = new Decimal(1);\n } else if (angle.eq(180)) {\n result = new Decimal(0);\n } else if (angle.eq(270)) {\n result = new Decimal(-1);\n } else {\n result = Decimal.sin(convertToRadians(angle));\n }\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sinFun)]);\n const func = new Commands.Function('$sin', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createCosFun () {\n const cosFun = (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.value.mod(360);\n let result = null;\n if(angle.eq(90)) {\n result = new Decimal(0);\n } else if (angle.eq(180)) {\n result = new Decimal(-1);\n } else if (angle.eq(270)) {\n result = new Decimal(0)\n }\n result = Decimal.cos(convertToRadians(angle));\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(cosFun)]);\n const func = new Commands.Function('$cos', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createTanFun () {\n const tanFun = (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.value.mod(360);\n if(angle.eq(90) || angle.eq(270)) {\n return Promise.reject(\"Tangent of \"+x.value.toNumber()+\"° is undefined.\");\n }\n let result = Decimal.tan(convertToRadians(angle));\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(tanFun)]);\n const func = new Commands.Function('$tan', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createSqrtFun () {\n const sqrtFun = (sto, _) => {\n const x = sto.applyStore('x');\n let result = x.value.sqrt();\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sqrtFun)]);\n const func = new Commands.Function('$sqrt', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createPowFun () {\n const powFun = (sto, _) => {\n const x = sto.applyStore('x');\n const y = sto.applyStore('y');\n let result = x.value.pow(y.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(powFun)]);\n const func = new Commands.Function('$pow', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false),\n new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'y', false)],\n block);\n return func;\n}\n\nexport function createLogFun () {\n const logFun = (sto, _) => {\n const x = sto.applyStore('x');\n if (x.value.isNegative()) {\n return Promise.reject(\"the value passed to log function cannot be negative\");\n }\n let result = Decimal.log10(x.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(logFun)]);\n const func = new Commands.Function('$log', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createAbsFun () {\n const absFun = (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.value.abs();\n const temp = new StoreObject(x.type, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(absFun)]);\n const func = new Commands.Function('$abs', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createNegateFun () {\n const negateFun = (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.value.negated();\n const temp = new StoreObject(x.type, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(negateFun)]);\n const func = new Commands.Function('$negate', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createInvertFun () {\n const invertFun = (sto, _) => {\n const x = sto.applyStore('x');\n let result = toReal(1).dividedBy(x.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(invertFun)]);\n const func = new Commands.Function('$invert', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createMaxFun () {\n const maxFun = (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.value.map(stoObj => stoObj.value);\n const result = Decimal.max(...numbers);\n const temp = new StoreObject(x.type.innerType, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n const paramType = new CompoundType(new MultiType([Types.INTEGER, Types.REAL]), 1);\n const block = new Commands.CommandBlock([], [new Commands.SysCall(maxFun)]);\n const func = new Commands.Function('$max', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, 'x', false)],\n block);\n return func;\n}\n\nexport function createMinFun () {\n const minFun = (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.value.map(stoObj => stoObj.value);\n const result = Decimal.min(...numbers);\n const temp = new StoreObject(x.type.innerType, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n const paramType = new CompoundType(new MultiType([Types.INTEGER, Types.REAL]), 1);\n const block = new Commands.CommandBlock([], [new Commands.SysCall(minFun)]);\n const func = new Commands.Function('$min', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, 'x', false)],\n block);\n return func;\n}\n","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { Modes } from '../modes';\n\n/*\n* substring\n* length\n* uppercase\n* lowercase\n* charAt\n**/\n\nexport function createSubstringFun () {\n const substringFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const start = sto.applyStore(\"start\");\n const end = sto.applyStore(\"end\");\n const result = str.value.substring(start.value, end.value);\n const temp = new StoreObject(Types.STRING, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(substringFun)]);\n const func = new Commands.Function('$substring', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false),\n new Commands.FormalParameter(Types.INTEGER, 'start', false),\n new Commands.FormalParameter(Types.INTEGER, 'end', false)],\n block);\n return func;\n}\n\nexport function createLengthFun () {\n const lengthFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreObject(Types.INTEGER, toInt(str.value.length));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(lengthFun)]);\n const func = new Commands.Function('$length', Types.INTEGER,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createUppercaseFun () {\n const uppercaseFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreObject(Types.STRING, str.value.toUpperCase());\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(uppercaseFun)]);\n const func = new Commands.Function('$uppercase', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createLowercaseFun () {\n const lowercaseFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreObject(Types.STRING, str.value.toLowerCase());\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(lowercaseFun)]);\n const func = new Commands.Function('$lowercase', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createrCharAtFun () {\n const charAtFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const idx = sto.applyStore(\"index\");\n if (idx.value.toNumber() < 0 || idx.value.toNumber() >= str.value.length) {\n return Promise.reject(new Error(\"invalid string position\"));\n }\n const temp = new StoreObject(Types.STRING, str.value.charAt(idx.value.toNumber()));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(charAtFun)]);\n const func = new Commands.Function('$charAt', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false),\n new Commands.FormalParameter(Types.INTEGER, 'index', false)],\n block);\n return func;\n}\n","export const Modes = Object.freeze({\n RETURN: Symbol('mode:return'),\n BREAK: Symbol('mode:break'),\n PAUSE: Symbol('mode:pause'),\n RUN: Symbol('mode:run')\n});","import { ProcessorErrorFactory } from './../error/processorErrorFactory';\nimport { LanguageDefinedFunction } from './../definedFunctions';\nimport { LanguageService } from './../../services/languageService';\nimport { ArrayDeclaration, While, For, Switch, Assign, Break, IfThenElse, Return, ArrayIndexAssign } from '../../ast/commands';\nimport { InfixApp, UnaryApp, FunctionCall, IntLiteral, RealLiteral, StringLiteral, BoolLiteral, VariableLiteral, ArrayLiteral, ArrayAccess } from '../../ast/expressions';\nimport { Literal } from '../../ast/expressions/literal';\nimport { resultTypeAfterInfixOp, resultTypeAfterUnaryOp } from '../compatibilityTable';\nimport { Types } from '../../typeSystem/types';\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { MultiType } from '../../typeSystem/multiType';\nimport { Config } from '../../util/config';\nimport { Store } from '../store/store';\n\nexport class SemanticAnalyser {\n\n constructor(ast) {\n this.ast = ast;\n this.lexerClass = LanguageService.getCurrentLexer();\n const lexer = new this.lexerClass(null);\n this.literalNames = lexer.literalNames;\n this.symbolMap = null;\n this.currentFunction = null;\n }\n\n pushMap () {\n if(this.symbolMap === null) {\n this.symbolMap = {map:{}, next: null};\n } else {\n const n = {map:{}, next: this.symbolMap};\n this.symbolMap = n;\n }\n }\n\n popMap () {\n if(this.symbolMap !== null) {\n this.symbolMap = this.symbolMap.next;\n }\n }\n\n insertSymbol (id, typeInfo) {\n this.symbolMap.map[id] = typeInfo;\n }\n\n findSymbol (id, symMap) {\n if(!symMap.map[id]) {\n if(symMap.next) {\n return this.findSymbol(id, symMap.next);\n }\n return null;\n } else {\n return symMap.map[id];\n }\n }\n\n getMainFunction () {\n return this.ast.functions.find(v => v.isMain);\n }\n\n findFunction (name) {\n console.log(name);\n if(name.match(/^\\$.+$/)) {\n const fun = LanguageDefinedFunction.getFunction(name);\n if(!!!fun) {\n throw ProcessorErrorFactory.not_implemented(name);\n }\n return fun;\n } else {\n const val = this.ast.functions.find( v => v.name === name);\n if (!!!val) {\n return null;\n }\n return val;\n }\n }\n\n analyseTree () {\n const globalVars = this.ast.global;\n this.pushMap();\n this.assertDeclarations(globalVars);\n const functions = this.ast.functions;\n const mainFunc = functions.filter((f) => f.name === null);\n if (mainFunc.length <= 0) {\n throw ProcessorErrorFactory.main_missing();\n }\n for (let i = 0; i < functions.length; i++) {\n const fun = functions[i];\n this.assertFunction(fun);\n }\n return this.ast;\n }\n\n assertDeclarations (list) {\n for (let i = 0; i < list.length; i++) {\n this.assertDeclaration(list[i]);\n }\n }\n\n assertDeclaration (declaration) {\n if (declaration instanceof ArrayDeclaration) {\n if(declaration.initial === null) {\n const lineType = this.evaluateExpressionType(declaration.lines);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(declaration.sourceInfo);\n }\n if (declaration.columns !== null) {\n const columnType = this.evaluateExpressionType(declaration.columns);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(declaration.sourceInfo);\n }\n }\n this.insertSymbol(declaration.id, {id: declaration.id, lines: declaration.lines, columns: declaration.columns, type: declaration.type});\n return;\n }\n this.evaluateArrayLiteral(declaration.id, declaration.lines, declaration.columns, declaration.type, declaration.initial);\n this.insertSymbol(declaration.id, {id: declaration.id, lines: declaration.lines, columns: declaration.columns, type: declaration.type});\n\n } else {\n if(declaration.initial === null) {\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type});\n return;\n }\n const resultType = this.evaluateExpressionType(declaration.initial);\n if(resultType instanceof MultiType) {\n if(!resultType.isCompatible(declaration.type)) {\n const stringInfo = declaration.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, declaration.sourceInfo);\n }\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type})\n } else if((!declaration.type.isCompatible(resultType) && !Config.enable_type_casting)\n || (!declaration.type.isCompatible(resultType) && Config.enable_type_casting\n && !Store.canImplicitTypeCast(declaration.type, resultType))) {\n const stringInfo = declaration.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, declaration.sourceInfo);\n } else {\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type});\n }\n }\n }\n\n evaluateExpressionType (expression) {\n if(expression instanceof UnaryApp) {\n const op = expression.op;\n const resultType = this.evaluateExpressionType(expression.left);\n return resultTypeAfterUnaryOp(op, resultType);\n } else if (expression instanceof InfixApp) {\n const op = expression.op;\n const resultTypeLeft = this.evaluateExpressionType(expression.left);\n const resultTypeRight = this.evaluateExpressionType(expression.right);\n return resultTypeAfterInfixOp(op, resultTypeLeft, resultTypeRight);\n } else if (expression instanceof Literal) {\n return this.evaluateLiteralType(expression);\n } else if (expression instanceof FunctionCall) {\n if (expression.isMainCall) {\n throw ProcessorErrorFactory.void_in_expression_full(LanguageDefinedFunction.getMainFunctionName(), expression.sourceInfo);\n }\n const fun = this.findFunction(expression.id);\n if(fun === null) {\n throw ProcessorErrorFactory.function_missing_full(expression.id, expression.sourceInfo);\n }\n if (fun.returnType.isCompatible(Types.VOID)) {\n throw ProcessorErrorFactory.void_in_expression_full(expression.id, expression.sourceInfo);\n }\n this.assertParameters(fun, expression.actualParameters);\n return fun.returnType;\n } else if (expression instanceof ArrayAccess) {\n const arrayTypeInfo = this.findSymbol(expression.id, this.symbolMap);\n if(arrayTypeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(expression.id, expression.sourceInfo);\n }\n if (!(arrayTypeInfo.type instanceof CompoundType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(expression.id, expression.sourceInfo);\n }\n const lineType = this.evaluateExpressionType(expression.line);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(expression.sourceInfo);\n }\n if (expression.column !== null) {\n if (arrayTypeInfo.columns === null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(expression.id, expression.sourceInfo);\n }\n const columnType = this.evaluateExpressionType(expression.column);\n if(!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(expression.sourceInfo);\n }\n }\n const arrType = arrayTypeInfo.type;\n if(expression.column !== null) {\n // indexing matrix\n return arrType.innerType;\n } else {\n if(arrayTypeInfo.columns === null) {\n return arrType.innerType;\n }\n return new CompoundType(arrType.innerType, 1);\n }\n }\n }\n\n evaluateLiteralType (literal) {\n if(literal instanceof IntLiteral) {\n return literal.type;\n } else if (literal instanceof RealLiteral) {\n return literal.type;\n } else if (literal instanceof StringLiteral) {\n return literal.type;\n } else if (literal instanceof BoolLiteral) {\n return literal.type;\n } else if (literal instanceof VariableLiteral) {\n const typeInfo = this.findSymbol(literal.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(literal.id, literal.sourceInfo);\n }\n if (typeInfo.type instanceof CompoundType) {\n return typeInfo.type;\n }\n return typeInfo.type;\n } else {\n console.warn(\"Evaluating type only for an array literal...\");\n let last = null;\n if(literal.value.length === 1) {\n last = this.evaluateExpressionType(literal.value[0]);\n } else {\n for (let i = 0; i < literal.value.length; i++) {\n const e = this.evaluateExpressionType(literal.value[i]);\n if(last === null) {\n last = e;\n } else if(!last.isCompatible(e)) {\n const strInfo = last.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n }\n }\n if(last instanceof CompoundType) {\n return new CompoundType(last.innerType, last.dimensions + 1);\n }\n return new CompoundType(last, 1);\n }\n }\n\n evaluateArrayLiteral (id, lines, columns, type, literal) {\n /* if (literal instanceof ArrayLiteral) {\n const dimType = this.evaluateExpressionType(lines);\n if (!dimType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(literal.sourceInfo);\n }\n if ((lines instanceof IntLiteral)) {\n if (!lines.value.eq(literal.value.length)) {\n if(type.dimensions > 1) {\n throw ProcessorErrorFactory.matrix_line_outbounds_full(id, literal.value.length, lines.value.toNumber(), literal.sourceInfo)\n } else {\n throw ProcessorErrorFactory.vector_line_outbounds_full(id, literal.value.length, lines.value.toNumber(), literal.sourceInfo)\n }\n } else if (lines.value.isNeg()) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(literal.sourceInfo);\n }\n }\n if (columns === null) {\n // it's a vector...\n literal.value.reduce((last, next) => {\n const eType = this.evaluateExpressionType(next);\n if (!last.canAccept(eType)) {\n const strInfo = last.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n return last;\n }, type);\n return true;\n } else {\n const dimType = this.evaluateExpressionType(columns);\n if (!dimType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(literal.sourceInfo);\n }\n if ((columns instanceof IntLiteral)) {\n const columnValue = literal.value[0].value.length;\n if (!columns.value.eq(columnValue)) {\n if(type.dimensions > 1) {\n throw ProcessorErrorFactory.matrix_column_outbounds_full(id, literal.value.length, columns.value.toNumber(), literal.sourceInfo)\n } else {\n throw ProcessorErrorFactory.invalid_matrix_access_full(id, literal.sourceInfo);\n }\n } else if (columns.value.isNeg()) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(literal.sourceInfo);\n }\n for (let i = 0; i < columns; i++) {\n const anotherArray = literal.value[i];\n this.evaluateArrayLiteral(id, columns, null, type, anotherArray)\n }\n }\n }\n\n } else {\n\n const resultType = this.evaluateExpressionType(literal);\n if (!(resultType instanceof CompoundType)) {\n const strInfo = type.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n if (!type.isCompatible(resultType)) {\n const strInfo = type.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n return true;\n } */\n return true;\n }\n\n assertFunction (fun) {\n this.pushMap();\n this.currentFunction = fun;\n fun.formalParameters.forEach(formalParam => {\n if(formalParam.type instanceof CompoundType) {\n if(formalParam.type.dimensions > 1) {\n this.insertSymbol(formalParam.id, {id: formalParam.id, lines: -1, columns: -1, type: formalParam.type});\n } else {\n this.insertSymbol(formalParam.id, {id: formalParam.id, lines: -1, columns: null, type: formalParam.type});\n }\n } else {\n this.insertSymbol(formalParam.id, {id: formalParam.id, type: formalParam.type});\n }\n })\n this.assertDeclarations(fun.variablesDeclarations);\n const optional = fun.returnType.isCompatible(Types.VOID);\n const valid = this.assertReturn(fun, optional);\n if (!valid) {\n throw ProcessorErrorFactory.function_no_return(fun.name);\n }\n this.popMap();\n }\n\n assertReturn (fun, optional) {\n return fun.commands.reduce(\n (last, next) => this.checkCommand(fun.returnType, next, optional) || last, optional\n );\n }\n\n checkCommand (type, cmd, optional) {\n if (cmd instanceof While) {\n const resultType = this.evaluateExpressionType(cmd.expression);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.loop_condition_type_full(cmd.expression.toString(), cmd.sourceInfo);\n }\n this.checkCommands(type, cmd.commands, optional);\n return false;\n } else if (cmd instanceof For) {\n this.checkCommand(type, cmd.assignment, optional);\n const resultType = this.evaluateExpressionType(cmd.condition);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.for_condition_type_full(cmd.condition.toString(), cmd.sourceInfo);\n }\n this.checkCommand(type, cmd.increment, optional);\n this.checkCommands(type, cmd.commands, optional);\n return false;\n } else if (cmd instanceof Switch) {\n const sType = this.evaluateExpressionType(cmd.expression);\n let result = optional;\n let hasDefault = false;\n for (let i = 0; i < cmd.cases.length; i++) {\n const aCase = cmd.cases[i];\n if (aCase.expression !== null) {\n const caseType = this.evaluateExpressionType(aCase.expression);\n if (!sType.isCompatible(caseType)) {\n const strInfo = sType.stringInfo();\n const info = strInfo[0];\n const strExp = aCase.expression.toString();\n throw ProcessorErrorFactory.invalid_case_type_full(strExp, info.type, info.dim, aCase.sourceInfo);\n }\n } else {\n hasDefault = true;\n }\n result = result && this.checkCommands(type, aCase.commands, result); \n }\n return result && hasDefault;\n\n } else if (cmd instanceof ArrayIndexAssign) {\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(cmd.id, cmd.sourceInfo);\n }\n if(!(typeInfo.type instanceof CompoundType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(cmd.id, cmd.sourceInfo);\n }\n const exp = cmd.expression;\n const lineExp = cmd.line;\n const lineType = this.evaluateExpressionType(lineExp);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n const columnExp = cmd.column;\n if (typeInfo.columns === null && columnExp !== null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(cmd.id, cmd.sourceInfo);\n } else if (columnExp !== null) {\n const columnType = this.evaluateExpressionType(columnExp);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n }\n // exp can be a arrayLiteral, a single value exp or an array access\n if(exp instanceof ArrayLiteral) {\n this.evaluateArrayLiteral(cmd.id, typeInfo.lines, (columnExp ? typeInfo.columns : null), typeInfo.type, exp);\n } else {\n // cannot properly evaluate since type system is poorly constructed\n }\n return optional;\n } else if (cmd instanceof Assign) {\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(cmd.id, cmd.sourceInfo);\n }\n const exp = cmd.expression;\n if(exp instanceof ArrayLiteral) {\n if(!(typeInfo.type instanceof CompoundType)) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo);\n }\n this.evaluateArrayLiteral(cmd.id, typeInfo.lines, typeInfo.columns, typeInfo.type, exp);\n } else {\n const resultType = this.evaluateExpressionType(exp);\n if((!resultType.isCompatible(typeInfo.type) && !Config.enable_type_casting)\n || (!resultType.isCompatible(typeInfo.type) && Config.enable_type_casting\n && !Store.canImplicitTypeCast(typeInfo.type, resultType))) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo);\n }\n }\n return optional;\n } else if (cmd instanceof Break) {\n return optional;\n } else if (cmd instanceof IfThenElse) {\n const resultType = this.evaluateExpressionType(cmd.condition);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.if_condition_type_full(cmd.condition.toString(), cmd.sourceInfo);\n }\n if(cmd.ifFalse instanceof IfThenElse) {\n return this.checkCommands(type, cmd.ifTrue.commands, optional) && this.checkCommand(type, cmd.ifFalse, optional);\n } else {\n return this.checkCommands(type, cmd.ifTrue.commands, optional) && this.checkCommands(type, cmd.ifFalse.commands,optional);\n }\n\n } else if (cmd instanceof FunctionCall) {\n let fun = null;\n if (cmd.isMainCall) {\n fun = this.getMainFunction();\n } else {\n fun = this.findFunction(cmd.id);\n }\n if(fun === null) {\n throw ProcessorErrorFactory.function_missing_full(cmd.id, cmd.sourceInfo);\n }\n this.assertParameters(fun, cmd.actualParameters);\n return optional;\n } else if (cmd instanceof Return) {\n const funcName = this.currentFunction.isMain ? LanguageDefinedFunction.getMainFunctionName() : this.currentFunction.name\n if (cmd.expression === null && !type.isCompatible(Types.VOID)) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_void_return_full(funcName, info.type, info.dim, cmd.sourceInfo);\n } else if (cmd.expression !== null) {\n const resultType = this.evaluateExpressionType(cmd.expression);\n if (!type.isCompatible(resultType)) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_return_type_full(funcName, info.type, info.dim, cmd.sourceInfo);\n } else {\n return true;\n }\n } else {\n return true;\n }\n }\n }\n\n checkCommands (type, cmds, optional) {\n return cmds.reduce(\n (last, next) => this.checkCommand(type, next, optional) || last, optional\n );\n }\n\n assertParameters (fun, actualParametersList) {\n if (fun.formalParameters.length !== actualParametersList.length) {\n throw ProcessorErrorFactory.invalid_parameters_size_full(fun.name, actualParametersList.length, fun.formalParameters.length, null);\n }\n for (let i = 0; i < actualParametersList.length; i++) {\n const param = actualParametersList[i];\n const formalParam = fun.formalParameters[i];\n const id = formalParam.id;\n if(formalParam.byRef) {\n if (!(param instanceof VariableLiteral || param instanceof ArrayAccess)) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n }\n const resultType = this.evaluateExpressionType(param);\n if(resultType instanceof MultiType && formalParam.type instanceof MultiType) {\n let shared = 0\n for (let j = 0; j < resultType.types.length; j++) {\n const element = resultType.types[j];\n if(formalParam.type.types.indexOf(element) !== -1) {\n shared++;\n }\n }\n if(shared <= 0) {\n if(Config.enable_type_casting && !formalParam.byRef) {\n if(resultType.isCompatible(Types.INTEGER) || resultType.isCompatible(Types.REAL)) {\n if(formalParam.type.isCompatible(Types.INTEGER) || formalParam.type.isCompatible(Types.REAL)) {\n continue;\n }\n }\n }\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n } else if (resultType instanceof MultiType) {\n if(!resultType.isCompatible(formalParam.type)) {\n if(Config.enable_type_casting && !formalParam.byRef) {\n if(resultType.isCompatible(Types.INTEGER) || resultType.isCompatible(Types.REAL)) {\n if(formalParam.type.isCompatible(Types.INTEGER) || formalParam.type.isCompatible(Types.REAL)) {\n continue;\n }\n }\n }\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n } else if(!formalParam.type.isCompatible(resultType)) {\n if(Config.enable_type_casting && !formalParam.byRef) {\n if (Store.canImplicitTypeCast(formalParam.type, resultType)) {\n continue;\n }\n }\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n\n }\n }\n}\n","import { Modes } from './../modes';\nimport { Types } from \"./../../typeSystem/types\";\nimport { StoreObject } from './storeObject';\n\nexport class Store {\n\n static canImplicitTypeCast (castType, sourceType) {\n if (castType.isCompatible(Types.INTEGER) || castType.isCompatible(Types.REAL)) {\n if (sourceType.isCompatible(Types.INTEGER) || sourceType.isCompatible(Types.REAL)) {\n return true;\n }\n }\n return false;\n }\n\n static doImplicitCasting (castType, stoObj) {\n if(!Store.canImplicitTypeCast(castType, stoObj.type)) {\n throw new Error(\"!!!Critical error: attempted to type cast invalid types\");\n }\n if(Types.INTEGER.isCompatible(castType)) {\n return new StoreObject(castType, stoObj.value.trunc());\n } else {\n return new StoreObject(castType, stoObj.value);\n }\n }\n\n constructor(name) {\n this.name = name;\n this.store = {};\n this.nextStore = null;\n this.mode = Modes.RUN; \n }\n\n extendStore (nextStore) {\n this.nextStore = nextStore;\n }\n\n applyStore (id) {\n if(!this.store[id]) {\n if (this.nextStore !== null) {\n return this.nextStore.applyStore(id);\n } else {\n throw new Error(`Variable ${id} not found.`);\n }\n }\n const val = this.store[id];\n if (val.isRef) {\n return val.getRefObj();\n }\n return this.store[id];\n }\n\n updateStore (id, stoObj) {\n if(!this.store[id]) {\n if(this.nextStore !== null) {\n this.nextStore.updateStore(id, stoObj);\n return this;\n } else {\n // TODO: better error message\n throw new Error(`Variable ${id} not found.`);\n }\n } else {\n const oldObj = this.store[id];\n if(oldObj.readOnly) {\n // TODO: better error message\n throw new Error(\"Cannot change value of a read only variable: \" + id);\n }\n if(oldObj.isRef) {\n oldObj.updateRef(stoObj);\n return this;\n } else if(oldObj.isCompatible(stoObj)) {\n stoObj.setID(id);\n this.store[id] = Object.freeze(stoObj);\n return this;\n } else {\n const oldType = oldObj.type;\n const stoType = stoObj.type;\n // TODO: better error message\n throw new Error(`${oldType} is not compatible with type ${stoType} given`);\n }\n }\n }\n\n //In case of future use of ref, it needs to have a special function to update the storeRefObject\n // and no the StoreObject refferenced by it\n // updateStoreRef(id, stoObjAddress) {...}\n\n insertStore (id, stoObj) {\n if (this.store[id]) {\n // TODO: better error message\n throw new Error(`${id} is already defined`);\n }\n stoObj.setID(id);\n this.store[id] = Object.freeze(stoObj);\n return this;\n }\n}","import Decimal from 'decimal.js';\n\nexport class StoreObject {\n\n constructor (type, value, readOnly = false) {\n this._type = type;\n this._value = value;\n this._readOnly = readOnly;\n this._id = null;\n }\n\n setID (id) {\n this._id = id;\n }\n\n get id () {\n return this._id;\n }\n\n get inStore () {\n return this.id !== null;\n }\n\n get type () {\n return this._type;\n }\n\n get value () {\n return this._value;\n }\n \n get number () {\n if (this._value instanceof Decimal) {\n return this._value.toNumber();\n } else {\n return null;\n }\n }\n\n get readOnly () {\n return this._readOnly;\n }\n\n set readOnly (value) {\n this._readOnly = value;\n }\n\n isCompatible (another) {\n if( another instanceof StoreObject) {\n return this.type.isCompatible(another.type);\n }\n return false;\n }\n}","import { StoreObject } from './storeObject';\n\nexport class StoreObjectArray extends StoreObject {\n\n static get WRONG_LINE_NUMBER () {\n return 1;\n }\n\n static get WRONG_TYPE () {\n return 2;\n }\n\n static get WRONG_COLUMN_NUMBER () {\n return 3;\n }\n\n constructor (type, lines, columns, value = null, readOnly = false) {\n super(type, value, readOnly);\n this._lines = lines;\n this._columns = columns;\n }\n\n get lines () {\n return this._lines;\n }\n\n get columns () {\n return this._columns;\n }\n\n isCompatible (another) {\n if(another instanceof StoreObject) {\n if(((this.lines === -1 && another.lines > 0) ||\n (this.lines === another.lines))) {\n if ((this.columns === -1 && another.columns > 0) ||\n (this.columns === another.columns)) {\n return super.isCompatible(another);\n }\n }\n }\n return false;\n }\n\n get isVector () {\n return this.type.dimensions === 1;\n }\n\n get isValid () {\n if (this.value !== null) {\n if( this.isVector) {\n if(this.value.length !== this.lines) {\n return [StoreObjectArray.WRONG_LINE_NUMBER, this.value.length];;\n }\n const mustBeNull = this.value.find(v => !this.type.canAccept(v.type) );\n if(!!mustBeNull) {\n return [StoreObjectArray.WRONG_TYPE, this.value.indexOf(mustBeNull)];;\n }\n }\n return [];\n } else {\n if(this.lines !== this.value.length) {\n return [StoreObjectArray.WRONG_LINE_NUMBER, this.value.length];\n }\n for (let i = 0; i < this.lines; i++) {\n for (let j = 0; j < this.columns; j++) {\n const arr = this.value[i];\n if(arr.length !== this.columns) {\n return [StoreObjectArray.WRONG_COLUMN_NUMBER, arr.length];\n }\n const mustBeNull = arr.find(v => !this.type.canAccept(v.type) );\n if(!!mustBeNull) {\n return [StoreObjectArray.WRONG_TYPE, i, arr.indexOf(mustBeNull)];\n } \n }\n }\n return [];\n }\n }\n}\n","import { StoreObject } from './storeObject';\nimport { StoreObjectArray } from './storeObjectArray';\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { ProcessorErrorFactory } from '../error/processorErrorFactory';\n\nexport class StoreObjectArrayAddress extends StoreObject {\n\n constructor (refID, line, column, store) {\n super(null, null, false);\n this.refID = refID;\n this.store = store;\n this.line = line;\n this.column = column;\n }\n\n get isRef () {\n return false;\n }\n\n get inStore () {\n return true;\n }\n\n get refValue () {\n const refLine = this.store.applyStore(this.refID).value[this.line];\n if(!refLine) {\n if(this.getArrayObject().isVector) {\n throw ProcessorErrorFactory.vector_line_outbounds(this.refID, this.line, this.getArrayObject().lines);\n } else {\n throw ProcessorErrorFactory.matrix_line_outbounds(this.refID, this.line, this.getArrayObject().lines);\n }\n }\n if (this.column !== null) {\n const refColumn = refLine.value[this.column];\n if(!refColumn) {\n if(this.getArrayObject().isVector) {\n throw ProcessorErrorFactory.vector_not_matrix(this.refID);\n } else {\n throw ProcessorErrorFactory.matrix_column_outbounds(this.refID, this.column, this.getArrayObject().columns);\n }\n }\n return refColumn;\n }\n return refLine;\n }\n\n get value () {\n return this.refValue.value;\n }\n\n get type () {\n return this.refValue.type;\n }\n\n get lines () {\n if(!(this.type instanceof CompoundType)) {\n return null;\n }\n return this.refValue.value.length;\n }\n\n get columns () {\n switch (this.type.dimensions) {\n case 2:\n return this.refValue.value[0].value.length;\n default:\n return null;\n }\n }\n\n getArrayObject () {\n return this.store.applyStore(this.refID);\n }\n\n updateArrayObject (stoObj) {\n const anArray = this.getArrayObject();\n const newArray = Object.assign(new StoreObjectArray(null,null,null), anArray);\n if(!stoObj.type.isCompatible(this.type)) {\n throw new Error(`Invalid operation: cannot assign the value given to ${this.refID}`);\n } else if (this.type instanceof CompoundType && this.type.canAccept(stoObj.type)) {\n throw new Error(`Invalid operation: cannot assign the value given to ${this.refID}`);\n }\n if (this.column !== null) {\n newArray.value[this.line].value[this.column] = stoObj;\n return newArray;\n } else {\n newArray.value[this.line] = stoObj;\n return newArray;\n }\n }\n\n isCompatible (another) {\n if(this.type.isCompatible(another.type)) {\n if(another.type instanceof CompoundType) {\n return this.lines === another.lines && this.columns === another.columns;\n } else {\n this.refValue.isCompatible(another);\n }\n }\n }\n}\n","import { StoreObject } from './storeObject';\nimport Decimal from 'decimal.js';\n\nexport class StoreObjectArrayAddressRef extends StoreObject {\n\n constructor (address) {\n super(null, null, false);\n this.address = address;\n }\n\n get isRef () {\n return true;\n }\n\n get type () {\n return this.address.type;\n }\n\n get value () {\n return this.address.value;\n }\n\n get number () {\n if (this.value instanceof Decimal) {\n return this.value.toNumber();\n } else {\n return null;\n }\n }\n\n getRefObj () {\n return this.address.refValue;\n }\n\n updateRef (stoObj) {\n const newArray = this.address.updateArrayObject(stoObj);\n this.address.store.updateStore(this.address.refID, newArray);\n }\n\n isCompatible (another) {\n return this.address.isCompatible(another);\n }\n}","import { StoreObject } from './storeObject';\nimport Decimal from 'decimal.js';\n\nexport class StoreObjectRef extends StoreObject {\n\n constructor (refID, store) {\n super(null, null, false);\n this.refID = refID;\n this.store = store;\n }\n\n get isRef () {\n return true;\n }\n\n get type () {\n return this.store.applyStore(this.refID).type;\n }\n\n get value () {\n return this.store.applyStore(this.refID).value;\n }\n\n get number () {\n if (this.value instanceof Decimal) {\n return this.value.toNumber();\n } else {\n return null;\n }\n }\n\n getRefObj () {\n return this.store.applyStore(this.refID);\n }\n\n updateRef (stoObj) {\n this.store.updateStore(this.refID, stoObj);\n }\n\n isCompatible (another) {\n return this.store.applyStore(this.refID).isCompatible(another);\n }\n}","import { IVProgParser } from './ast/ivprogParser';\nimport { IVProgProcessor } from './processor/ivprogProcessor';\nimport {DOMConsole} from './io/domConsole';\nimport { LanguageService } from './services/languageService';\nimport { SemanticAnalyser } from './processor/semantic/semanticAnalyser';\n\nexport function runner () {\nconst ivprogLexer = LanguageService.getCurrentLexer();\n\n\n// const lexer = new ivprogLexer(new InputStream(input));\n// const stream = new CommonTokenStream(lexer);\n// stream.fill();\n// let i = 1;\n// let token = null;\n// while ((token = stream.LT(i)).type !== ivprogLexer.EOF && token.type !== ivprogLexer.WHITESPACE) {\n// console.log(`${token.type}-${token.text}`);\n// console.log('\\n')\n// i++;\n// }\n// const anaSin = new IVProgParser(input, ivprogLexer);\nconst editor = new JsonEditor('#json-renderer', {});\nconst domConsole = new DOMConsole(\"#console\");\n// proc.interpretAST().then( sto => {\n// console.log(sto.applyStore('a'));\n// }).catch(e => console.log(e));\ntry {\n $('#btn').click( () => {\n const input = $('#input').val();\n const analiser = new IVProgParser(input, ivprogLexer);\n try {\n const data = analiser.parseTree();\n const semAna = new SemanticAnalyser(data);\n const proc = new IVProgProcessor(semAna.analyseTree());\n proc.registerInput(domConsole);\n domConsole.clear();\n proc.registerOutput(domConsole);\n proc.interpretAST().then(sto => editor.load(sto.store))\n .catch( e => {alert(e); console.log(e)});\n } catch (error) {\n alert(error);\n console.log(error);\n }\n \n });\n} catch(a) {\n console.log(a);\n}\n}\n"," /*\n * # Semantic UI - 2.3.3\n * https://github.com/Semantic-Org/Semantic-UI\n * http://www.semantic-ui.com/\n *\n * Copyright 2014 Contributors\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n!function(e,t,n,i){e.site=e.fn.site=function(o){var a,r,s=(new Date).getTime(),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1),f=e.isPlainObject(o)?e.extend(!0,{},e.site.settings,o):e.extend({},e.site.settings),m=f.namespace,g=f.error,p=\"module-\"+m,h=e(n),v=this,b=h.data(p);return a={initialize:function(){a.instantiate()},instantiate:function(){a.verbose(\"Storing instance of site\",a),b=a,h.data(p,a)},normalize:function(){a.fix.console(),a.fix.requestAnimationFrame()},fix:{console:function(){a.debug(\"Normalizing window.console\"),console!==i&&console.log!==i||(a.verbose(\"Console not available, normalizing events\"),a.disable.console()),void 0!==console.group&&void 0!==console.groupEnd&&void 0!==console.groupCollapsed||(a.verbose(\"Console group not available, normalizing events\"),t.console.group=function(){},t.console.groupEnd=function(){},t.console.groupCollapsed=function(){}),void 0===console.markTimeline&&(a.verbose(\"Mark timeline not available, normalizing events\"),t.console.markTimeline=function(){})},consoleClear:function(){a.debug(\"Disabling programmatic console clearing\"),t.console.clear=function(){}},requestAnimationFrame:function(){a.debug(\"Normalizing requestAnimationFrame\"),t.requestAnimationFrame===i&&(a.debug(\"RequestAnimationFrame not available, normalizing event\"),t.requestAnimationFrame=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)})}},moduleExists:function(t){return e.fn[t]!==i&&e.fn[t].settings!==i},enabled:{modules:function(t){var n=[];return t=t||f.modules,e.each(t,function(e,t){a.moduleExists(t)&&n.push(t)}),n}},disabled:{modules:function(t){var n=[];return t=t||f.modules,e.each(t,function(e,t){a.moduleExists(t)||n.push(t)}),n}},change:{setting:function(t,n,o,r){o=\"string\"==typeof o?\"all\"===o?f.modules:[o]:o||f.modules,r=r===i||r,e.each(o,function(i,o){var s,l=!a.moduleExists(o)||(e.fn[o].settings.namespace||!1);a.moduleExists(o)&&(a.verbose(\"Changing default setting\",t,n,o),e.fn[o].settings[t]=n,r&&l&&(s=e(\":data(module-\"+l+\")\")).length>0&&(a.verbose(\"Modifying existing settings\",s),s[o](\"setting\",t,n)))})},settings:function(t,n,o){n=\"string\"==typeof n?[n]:n||f.modules,o=o===i||o,e.each(n,function(n,i){var r;a.moduleExists(i)&&(a.verbose(\"Changing default setting\",t,i),e.extend(!0,e.fn[i].settings,t),o&&m&&(r=e(\":data(module-\"+m+\")\")).length>0&&(a.verbose(\"Modifying existing settings\",r),r[i](\"setting\",t)))})}},enable:{console:function(){a.console(!0)},debug:function(e,t){e=e||f.modules,a.debug(\"Enabling debug for modules\",e),a.change.setting(\"debug\",!0,e,t)},verbose:function(e,t){e=e||f.modules,a.debug(\"Enabling verbose debug for modules\",e),a.change.setting(\"verbose\",!0,e,t)}},disable:{console:function(){a.console(!1)},debug:function(e,t){e=e||f.modules,a.debug(\"Disabling debug for modules\",e),a.change.setting(\"debug\",!1,e,t)},verbose:function(e,t){e=e||f.modules,a.debug(\"Disabling verbose debug for modules\",e),a.change.setting(\"verbose\",!1,e,t)}},console:function(e){if(e){if(b.cache.console===i)return void a.error(g.console);a.debug(\"Restoring console function\"),t.console=b.cache.console}else a.debug(\"Disabling console function\"),b.cache.console=t.console,t.console={clear:function(){},error:function(){},group:function(){},groupCollapsed:function(){},groupEnd:function(){},info:function(){},log:function(){},markTimeline:function(){},warn:function(){}}},destroy:function(){a.verbose(\"Destroying previous site for\",h),h.removeData(p)},cache:{},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];f[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,a,t);else{if(n===i)return a[t];a[t]=n}},debug:function(){f.debug&&(f.performance?a.performance.log(arguments):(a.debug=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.debug.apply(console,arguments)))},verbose:function(){f.verbose&&f.debug&&(f.performance?a.performance.log(arguments):(a.verbose=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.verbose.apply(console,arguments)))},error:function(){a.error=Function.prototype.bind.call(console.error,console,f.name+\":\"),a.error.apply(console,arguments)},performance:{log:function(e){var t,n;f.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Element:v,Name:e[0],Arguments:[].slice.call(e,1)||\"\",\"Execution Time\":n})),clearTimeout(a.performance.timer),a.performance.timer=setTimeout(a.performance.display,500)},display:function(){var t=f.name+\":\",n=0;s=!1,clearTimeout(a.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,o){var s,l,c,u=b;return n=n||d,o=v||o,\"string\"==typeof t&&u!==i&&(t=t.split(/[\\. ]/),s=t.length-1,e.each(t,function(n,o){var r=n!=s?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(u[r])&&n!=s)u=u[r];else{if(u[r]!==i)return l=u[r],!1;if(!e.isPlainObject(u[o])||n==s)return u[o]!==i?(l=u[o],!1):(a.error(g.method,t),!1);u=u[o]}})),e.isFunction(l)?c=l.apply(o,n):l!==i&&(c=l),e.isArray(r)?r.push(c):r!==i?r=[r,c]:c!==i&&(r=c),l}},u?(b===i&&a.initialize(),a.invoke(c)):(b!==i&&a.destroy(),a.initialize()),r!==i?r:this},e.site.settings={name:\"Site\",namespace:\"site\",error:{console:\"Console cannot be restored, most likely it was overwritten outside of module\",method:\"The method you called is not defined.\"},debug:!1,verbose:!1,performance:!0,modules:[\"accordion\",\"api\",\"checkbox\",\"dimmer\",\"dropdown\",\"embed\",\"form\",\"modal\",\"nag\",\"popup\",\"rating\",\"shape\",\"sidebar\",\"state\",\"sticky\",\"tab\",\"transition\",\"visit\",\"visibility\"],siteNamespace:\"site\",namespaceStub:{cache:{},config:{},sections:{},section:{},utilities:{}}},e.extend(e.expr[\":\"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,i){return!!e.data(t,i[3])}})}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.form=function(t){var o,a=e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments[0],u=arguments[1],d=\"string\"==typeof c,f=[].slice.call(arguments,1);return a.each(function(){var m,g,p,h,v,b,y,x,C,w,S,k,T,A,R,P,E=e(this),F=this,O=[],D=!1;(P={initialize:function(){P.get.settings(),d?(R===i&&P.instantiate(),P.invoke(c)):(R!==i&&R.invoke(\"destroy\"),P.verbose(\"Initializing form validation\",E,v),P.bindEvents(),P.set.defaults(),P.instantiate())},instantiate:function(){P.verbose(\"Storing instance of module\",P),R=P,E.data(T,P)},destroy:function(){P.verbose(\"Destroying previous module\",R),P.removeEvents(),E.removeData(T)},refresh:function(){P.verbose(\"Refreshing selector cache\"),m=E.find(x.field),g=E.find(x.group),p=E.find(x.message),E.find(x.prompt),h=E.find(x.submit),E.find(x.clear),E.find(x.reset)},submit:function(){P.verbose(\"Submitting form\",E),E.submit()},attachEvents:function(t,n){n=n||\"submit\",e(t).on(\"click\"+A,function(e){P[n](),e.preventDefault()})},bindEvents:function(){P.verbose(\"Attaching form events\"),E.on(\"submit\"+A,P.validate.form).on(\"blur\"+A,x.field,P.event.field.blur).on(\"click\"+A,x.submit,P.submit).on(\"click\"+A,x.reset,P.reset).on(\"click\"+A,x.clear,P.clear),v.keyboardShortcuts&&E.on(\"keydown\"+A,x.field,P.event.field.keydown),m.each(function(){var t=e(this),n=t.prop(\"type\"),i=P.get.changeEvent(n,t);e(this).on(i+A,P.event.field.change)})},clear:function(){m.each(function(){var t=e(this),n=t.parent(),i=t.closest(g),o=i.find(x.prompt),a=t.data(y.defaultValue)||\"\",r=n.is(x.uiCheckbox),s=n.is(x.uiDropdown);i.hasClass(C.error)&&(P.verbose(\"Resetting error on field\",i),i.removeClass(C.error),o.remove()),s?(P.verbose(\"Resetting dropdown value\",n,a),n.dropdown(\"clear\")):r?t.prop(\"checked\",!1):(P.verbose(\"Resetting field value\",t,a),t.val(\"\"))})},reset:function(){m.each(function(){var t=e(this),n=t.parent(),o=t.closest(g),a=o.find(x.prompt),r=t.data(y.defaultValue),s=n.is(x.uiCheckbox),l=n.is(x.uiDropdown),c=o.hasClass(C.error);r!==i&&(c&&(P.verbose(\"Resetting error on field\",o),o.removeClass(C.error),a.remove()),l?(P.verbose(\"Resetting dropdown value\",n,r),n.dropdown(\"restore defaults\")):s?(P.verbose(\"Resetting checkbox value\",n,r),t.prop(\"checked\",r)):(P.verbose(\"Resetting field value\",t,r),t.val(r)))})},determine:{isValid:function(){var t=!0;return e.each(b,function(e,n){P.validate.field(n,e,!0)||(t=!1)}),t}},is:{bracketedRule:function(e){return e.type&&e.type.match(v.regExp.bracket)},shorthandFields:function(e){var t=e[Object.keys(e)[0]];return P.is.shorthandRules(t)},shorthandRules:function(t){return\"string\"==typeof t||e.isArray(t)},empty:function(e){return!e||0===e.length||(e.is('input[type=\"checkbox\"]')?!e.is(\":checked\"):P.is.blank(e))},blank:function(t){return\"\"===e.trim(t.val())},valid:function(t){var n=!0;return t?(P.verbose(\"Checking if field is valid\",t),P.validate.field(b[t],t,!1)):(P.verbose(\"Checking if form is valid\"),e.each(b,function(e,t){P.is.valid(e)||(n=!1)}),n)}},removeEvents:function(){E.off(A),m.off(A),h.off(A),m.off(A)},event:{field:{keydown:function(t){var n=e(this),i=t.which,o=n.is(x.input),a=n.is(x.checkbox),r=n.closest(x.uiDropdown).length>0,s=13;i==27&&(P.verbose(\"Escape key pressed blurring field\"),n.blur()),t.ctrlKey||i!=s||!o||r||a||(D||(n.one(\"keyup\"+A,P.event.field.keyup),P.submit(),P.debug(\"Enter pressed on input submitting form\")),D=!0)},keyup:function(){D=!1},blur:function(t){var n=e(this),i=n.closest(g),o=P.get.validation(n);i.hasClass(C.error)?(P.debug(\"Revalidating field\",n,o),o&&P.validate.field(o)):\"blur\"==v.on&&o&&P.validate.field(o)},change:function(t){var n=e(this),i=n.closest(g),o=P.get.validation(n);o&&(\"change\"==v.on||i.hasClass(C.error)&&v.revalidate)&&(clearTimeout(P.timer),P.timer=setTimeout(function(){P.debug(\"Revalidating field\",n,P.get.validation(n)),P.validate.field(o)},v.delay))}}},get:{ancillaryValue:function(e){return!(!e.type||!e.value&&!P.is.bracketedRule(e))&&(e.value!==i?e.value:e.type.match(v.regExp.bracket)[1]+\"\")},ruleName:function(e){return P.is.bracketedRule(e)?e.type.replace(e.type.match(v.regExp.bracket)[0],\"\"):e.type},changeEvent:function(e,t){return\"checkbox\"==e||\"radio\"==e||\"hidden\"==e||t.is(\"select\")?\"change\":P.get.inputEvent()},inputEvent:function(){return n.createElement(\"input\").oninput!==i?\"input\":n.createElement(\"input\").onpropertychange!==i?\"propertychange\":\"keyup\"},fieldsFromShorthand:function(t){var n={};return e.each(t,function(t,i){\"string\"==typeof i&&(i=[i]),n[t]={rules:[]},e.each(i,function(e,i){n[t].rules.push({type:i})})}),n},prompt:function(t,n){var i,o,a=P.get.ruleName(t),r=P.get.ancillaryValue(t),s=P.get.field(n.identifier),l=s.val(),c=e.isFunction(t.prompt)?t.prompt(l):t.prompt||v.prompt[a]||v.text.unspecifiedRule,u=-1!==c.search(\"{value}\"),d=-1!==c.search(\"{name}\");return u&&(c=c.replace(\"{value}\",s.val())),d&&(o=1==(i=s.closest(x.group).find(\"label\").eq(0)).length?i.text():s.prop(\"placeholder\")||v.text.unspecifiedField,c=c.replace(\"{name}\",o)),c=(c=c.replace(\"{identifier}\",n.identifier)).replace(\"{ruleValue}\",r),t.prompt||P.verbose(\"Using default validation prompt for type\",c,a),c},settings:function(){if(e.isPlainObject(t)){var n=Object.keys(t);n.length>0&&(t[n[0]].identifier!==i&&t[n[0]].rules!==i)?(v=e.extend(!0,{},e.fn.form.settings,u),b=e.extend({},e.fn.form.settings.defaults,t),P.error(v.error.oldSyntax,F),P.verbose(\"Extending settings from legacy parameters\",b,v)):(t.fields&&P.is.shorthandFields(t.fields)&&(t.fields=P.get.fieldsFromShorthand(t.fields)),v=e.extend(!0,{},e.fn.form.settings,t),b=e.extend({},e.fn.form.settings.defaults,v.fields),P.verbose(\"Extending settings\",b,v))}else v=e.fn.form.settings,b=e.fn.form.settings.defaults,P.verbose(\"Using default form validation\",b,v);k=v.namespace,y=v.metadata,x=v.selector,C=v.className,w=v.regExp,S=v.error,T=\"module-\"+k,A=\".\"+k,R=E.data(T),P.refresh()},field:function(t){return P.verbose(\"Finding field with identifier\",t),t=P.escape.string(t),m.filter(\"#\"+t).length>0?m.filter(\"#\"+t):m.filter('[name=\"'+t+'\"]').length>0?m.filter('[name=\"'+t+'\"]'):m.filter('[name=\"'+t+'[]\"]').length>0?m.filter('[name=\"'+t+'[]\"]'):m.filter(\"[data-\"+y.validate+'=\"'+t+'\"]').length>0?m.filter(\"[data-\"+y.validate+'=\"'+t+'\"]'):e(\"<input/>\")},fields:function(t){var n=e();return e.each(t,function(e,t){n=n.add(P.get.field(t))}),n},validation:function(t){var n,i;return!!b&&(e.each(b,function(e,o){i=o.identifier||e,P.get.field(i)[0]==t[0]&&(o.identifier=i,n=o)}),n||!1)},value:function(e){var t=[];return t.push(e),P.get.values.call(F,t)[e]},values:function(t){var n={};return(e.isArray(t)?P.get.fields(t):m).each(function(t,o){var a=e(o),r=(a.prop(\"type\"),a.prop(\"name\")),s=a.val(),l=a.is(x.checkbox),c=a.is(x.radio),u=-1!==r.indexOf(\"[]\"),d=!!l&&a.is(\":checked\");r&&(u?(r=r.replace(\"[]\",\"\"),n[r]||(n[r]=[]),l?d?n[r].push(s||!0):n[r].push(!1):n[r].push(s)):c?n[r]!==i&&0!=n[r]||(n[r]=!!d&&(s||!0)):n[r]=l?!!d&&(s||!0):s)}),n}},has:{field:function(e){return P.verbose(\"Checking for existence of a field with identifier\",e),\"string\"!=typeof(e=P.escape.string(e))&&P.error(S.identifier,e),m.filter(\"#\"+e).length>0||(m.filter('[name=\"'+e+'\"]').length>0||m.filter(\"[data-\"+y.validate+'=\"'+e+'\"]').length>0)}},escape:{string:function(e){return(e=String(e)).replace(w.escape,\"\\\\$&\")}},add:{rule:function(e,t){P.add.field(e,t)},field:function(t,n){var i={};P.is.shorthandRules(n)?(n=e.isArray(n)?n:[n],i[t]={rules:[]},e.each(n,function(e,n){i[t].rules.push({type:n})})):i[t]=n,b=e.extend({},b,i),P.debug(\"Adding rules\",i,b)},fields:function(t){var n;n=t&&P.is.shorthandFields(t)?P.get.fieldsFromShorthand(t):t,b=e.extend({},b,n)},prompt:function(t,n){var o=P.get.field(t).closest(g),a=o.children(x.prompt),r=0!==a.length;n=\"string\"==typeof n?[n]:n,P.verbose(\"Adding field error state\",t),o.addClass(C.error),v.inline&&(r||(a=v.templates.prompt(n)).appendTo(o),a.html(n[0]),r?P.verbose(\"Inline errors are disabled, no inline error added\",t):v.transition&&e.fn.transition!==i&&E.transition(\"is supported\")?(P.verbose(\"Displaying error with css transition\",v.transition),a.transition(v.transition+\" in\",v.duration)):(P.verbose(\"Displaying error with fallback javascript animation\"),a.fadeIn(v.duration)))},errors:function(e){P.debug(\"Adding form error messages\",e),P.set.error(),p.html(v.templates.error(e))}},remove:{rule:function(t,n){var o=e.isArray(n)?n:[n];if(n==i)return P.debug(\"Removed all rules\"),void(b[t].rules=[]);b[t]!=i&&e.isArray(b[t].rules)&&e.each(b[t].rules,function(e,n){-1!==o.indexOf(n.type)&&(P.debug(\"Removed rule\",n.type),b[t].rules.splice(e,1))})},field:function(t){var n=e.isArray(t)?t:[t];e.each(n,function(e,t){P.remove.rule(t)})},rules:function(t,n){e.isArray(t)?e.each(fields,function(e,t){P.remove.rule(t,n)}):P.remove.rule(t,n)},fields:function(e){P.remove.field(e)},prompt:function(t){var n=P.get.field(t).closest(g),o=n.children(x.prompt);n.removeClass(C.error),v.inline&&o.is(\":visible\")&&(P.verbose(\"Removing prompt for field\",t),v.transition&&e.fn.transition!==i&&E.transition(\"is supported\")?o.transition(v.transition+\" out\",v.duration,function(){o.remove()}):o.fadeOut(v.duration,function(){o.remove()}))}},set:{success:function(){E.removeClass(C.error).addClass(C.success)},defaults:function(){m.each(function(){var t=e(this),n=t.filter(x.checkbox).length>0?t.is(\":checked\"):t.val();t.data(y.defaultValue,n)})},error:function(){E.removeClass(C.success).addClass(C.error)},value:function(e,t){var n={};return n[e]=t,P.set.values.call(F,n)},values:function(t){e.isEmptyObject(t)||e.each(t,function(t,n){var i,o=P.get.field(t),a=o.parent(),r=e.isArray(n),s=a.is(x.uiCheckbox),l=a.is(x.uiDropdown),c=o.is(x.radio)&&s;o.length>0&&(r&&s?(P.verbose(\"Selecting multiple\",n,o),a.checkbox(\"uncheck\"),e.each(n,function(e,t){i=o.filter('[value=\"'+t+'\"]'),a=i.parent(),i.length>0&&a.checkbox(\"check\")})):c?(P.verbose(\"Selecting radio value\",n,o),o.filter('[value=\"'+n+'\"]').parent(x.uiCheckbox).checkbox(\"check\")):s?(P.verbose(\"Setting checkbox value\",n,a),!0===n?a.checkbox(\"check\"):a.checkbox(\"uncheck\")):l?(P.verbose(\"Setting dropdown value\",n,a),a.dropdown(\"set selected\",n)):(P.verbose(\"Setting field value\",n,o),o.val(n)))})}},validate:{form:function(e,t){var n=P.get.values();if(D)return!1;if(O=[],P.determine.isValid()){if(P.debug(\"Form has no validation errors, submitting\"),P.set.success(),!0!==t)return v.onSuccess.call(F,e,n)}else if(P.debug(\"Form has errors\"),P.set.error(),v.inline||P.add.errors(O),E.data(\"moduleApi\")!==i&&e.stopImmediatePropagation(),!0!==t)return v.onFailure.call(F,O,n)},field:function(t,n,o){o=o===i||o,\"string\"==typeof t&&(P.verbose(\"Validating field\",t),n=t,t=b[t]);var a=t.identifier||n,r=P.get.field(a),s=!!t.depends&&P.get.field(t.depends),l=!0,c=[];return t.identifier||(P.debug(\"Using field name as identifier\",a),t.identifier=a),r.prop(\"disabled\")?(P.debug(\"Field is disabled. Skipping\",a),l=!0):t.optional&&P.is.blank(r)?(P.debug(\"Field is optional and blank. Skipping\",a),l=!0):t.depends&&P.is.empty(s)?(P.debug(\"Field depends on another value that is not present or empty. Skipping\",s),l=!0):t.rules!==i&&e.each(t.rules,function(e,n){P.has.field(a)&&!P.validate.rule(t,n)&&(P.debug(\"Field is invalid\",a,n.type),c.push(P.get.prompt(n,t)),l=!1)}),l?(o&&(P.remove.prompt(a,c),v.onValid.call(r)),!0):(o&&(O=O.concat(c),P.add.prompt(a,c),v.onInvalid.call(r,c)),!1)},rule:function(t,n){var o=P.get.field(t.identifier),a=(n.type,o.val()),r=P.get.ancillaryValue(n),s=P.get.ruleName(n),l=v.rules[s];if(e.isFunction(l))return a=a===i||\"\"===a||null===a?\"\":e.trim(a+\"\"),l.call(o,a,r);P.error(S.noRule,s)}},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,v,t);else{if(n===i)return v[t];v[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,P,t);else{if(n===i)return P[t];P[t]=n}},debug:function(){!v.silent&&v.debug&&(v.performance?P.performance.log(arguments):(P.debug=Function.prototype.bind.call(console.info,console,v.name+\":\"),P.debug.apply(console,arguments)))},verbose:function(){!v.silent&&v.verbose&&v.debug&&(v.performance?P.performance.log(arguments):(P.verbose=Function.prototype.bind.call(console.info,console,v.name+\":\"),P.verbose.apply(console,arguments)))},error:function(){v.silent||(P.error=Function.prototype.bind.call(console.error,console,v.name+\":\"),P.error.apply(console,arguments))},performance:{log:function(e){var t,n;v.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:F,\"Execution Time\":n})),clearTimeout(P.performance.timer),P.performance.timer=setTimeout(P.performance.display,500)},display:function(){var t=v.name+\":\",n=0;s=!1,clearTimeout(P.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),a.length>1&&(t+=\" (\"+a.length+\")\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,a){var r,s,l,c=R;return n=n||f,a=F||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}}).initialize()}),o!==i?o:this},e.fn.form.settings={name:\"Form\",namespace:\"form\",debug:!1,verbose:!1,performance:!0,fields:!1,keyboardShortcuts:!0,on:\"submit\",inline:!1,delay:200,revalidate:!0,transition:\"scale\",duration:200,onValid:function(){},onInvalid:function(){},onSuccess:function(){return!0},onFailure:function(){return!1},metadata:{defaultValue:\"default\",validate:\"validate\"},regExp:{htmlID:/^[a-zA-Z][\\w:.-]*$/g,bracket:/\\[(.*)\\]/i,decimal:/^\\d+\\.?\\d*$/,email:/^[a-z0-9!#$%&'*+\\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,escape:/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,flags:/^\\/(.*)\\/(.*)?/,integer:/^\\-?\\d+$/,number:/^\\-?\\d*(\\.\\d+)?$/,url:/(https?:\\/\\/(?:www\\.|(?!www))[^\\s\\.]+\\.[^\\s]{2,}|www\\.[^\\s]+\\.[^\\s]{2,})/i},text:{unspecifiedRule:\"Please enter a valid value\",unspecifiedField:\"This field\"},prompt:{empty:\"{name} must have a value\",checked:\"{name} must be checked\",email:\"{name} must be a valid e-mail\",url:\"{name} must be a valid url\",regExp:\"{name} is not formatted correctly\",integer:\"{name} must be an integer\",decimal:\"{name} must be a decimal number\",number:\"{name} must be set to a number\",is:'{name} must be \"{ruleValue}\"',isExactly:'{name} must be exactly \"{ruleValue}\"',not:'{name} cannot be set to \"{ruleValue}\"',notExactly:'{name} cannot be set to exactly \"{ruleValue}\"',contain:'{name} must contain \"{ruleValue}\"',containExactly:'{name} must contain exactly \"{ruleValue}\"',doesntContain:'{name} cannot contain \"{ruleValue}\"',doesntContainExactly:'{name} cannot contain exactly \"{ruleValue}\"',minLength:\"{name} must be at least {ruleValue} characters\",length:\"{name} must be at least {ruleValue} characters\",exactLength:\"{name} must be exactly {ruleValue} characters\",maxLength:\"{name} cannot be longer than {ruleValue} characters\",match:\"{name} must match {ruleValue} field\",different:\"{name} must have a different value than {ruleValue} field\",creditCard:\"{name} must be a valid credit card number\",minCount:\"{name} must have at least {ruleValue} choices\",exactCount:\"{name} must have exactly {ruleValue} choices\",maxCount:\"{name} must have {ruleValue} or less choices\"},selector:{checkbox:'input[type=\"checkbox\"], input[type=\"radio\"]',clear:\".clear\",field:\"input, textarea, select\",group:\".field\",input:\"input\",message:\".error.message\",prompt:\".prompt.label\",radio:'input[type=\"radio\"]',reset:'.reset:not([type=\"reset\"])',submit:'.submit:not([type=\"submit\"])',uiCheckbox:\".ui.checkbox\",uiDropdown:\".ui.dropdown\"},className:{error:\"error\",label:\"ui prompt label\",pressed:\"down\",success:\"success\"},error:{identifier:\"You must specify a string identifier for each field\",method:\"The method you called is not defined.\",noRule:\"There is no rule matching the one you specified\",oldSyntax:\"Starting in 2.0 forms now only take a single settings object. Validation settings converted to new syntax automatically.\"},templates:{error:function(t){var n='<ul class=\"list\">';return e.each(t,function(e,t){n+=\"<li>\"+t+\"</li>\"}),e(n+=\"</ul>\")},prompt:function(t){return e(\"<div/>\").addClass(\"ui basic red pointing prompt label\").html(t[0])}},rules:{empty:function(t){return!(t===i||\"\"===t||e.isArray(t)&&0===t.length)},checked:function(){return e(this).filter(\":checked\").length>0},email:function(t){return e.fn.form.settings.regExp.email.test(t)},url:function(t){return e.fn.form.settings.regExp.url.test(t)},regExp:function(t,n){if(n instanceof RegExp)return t.match(n);var i,o=n.match(e.fn.form.settings.regExp.flags);return o&&(n=o.length>=2?o[1]:n,i=o.length>=3?o[2]:\"\"),t.match(new RegExp(n,i))},integer:function(t,n){var o,a,r,s=e.fn.form.settings.regExp.integer;return n&&-1===[\"\",\"..\"].indexOf(n)&&(-1==n.indexOf(\"..\")?s.test(n)&&(o=a=n-0):(r=n.split(\"..\",2),s.test(r[0])&&(o=r[0]-0),s.test(r[1])&&(a=r[1]-0))),s.test(t)&&(o===i||t>=o)&&(a===i||t<=a)},decimal:function(t){return e.fn.form.settings.regExp.decimal.test(t)},number:function(t){return e.fn.form.settings.regExp.number.test(t)},is:function(e,t){return t=\"string\"==typeof t?t.toLowerCase():t,(e=\"string\"==typeof e?e.toLowerCase():e)==t},isExactly:function(e,t){return e==t},not:function(e,t){return(e=\"string\"==typeof e?e.toLowerCase():e)!=(t=\"string\"==typeof t?t.toLowerCase():t)},notExactly:function(e,t){return e!=t},contains:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,\"\\\\$&\"),-1!==t.search(new RegExp(n,\"i\"))},containsExactly:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,\"\\\\$&\"),-1!==t.search(new RegExp(n))},doesntContain:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,\"\\\\$&\"),-1===t.search(new RegExp(n,\"i\"))},doesntContainExactly:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,\"\\\\$&\"),-1===t.search(new RegExp(n))},minLength:function(e,t){return e!==i&&e.length>=t},length:function(e,t){return e!==i&&e.length>=t},exactLength:function(e,t){return e!==i&&e.length==t},maxLength:function(e,t){return e!==i&&e.length<=t},match:function(t,n){var o;e(this);return e('[data-validate=\"'+n+'\"]').length>0?o=e('[data-validate=\"'+n+'\"]').val():e(\"#\"+n).length>0?o=e(\"#\"+n).val():e('[name=\"'+n+'\"]').length>0?o=e('[name=\"'+n+'\"]').val():e('[name=\"'+n+'[]\"]').length>0&&(o=e('[name=\"'+n+'[]\"]')),o!==i&&t.toString()==o.toString()},different:function(t,n){var o;e(this);return e('[data-validate=\"'+n+'\"]').length>0?o=e('[data-validate=\"'+n+'\"]').val():e(\"#\"+n).length>0?o=e(\"#\"+n).val():e('[name=\"'+n+'\"]').length>0?o=e('[name=\"'+n+'\"]').val():e('[name=\"'+n+'[]\"]').length>0&&(o=e('[name=\"'+n+'[]\"]')),o!==i&&t.toString()!==o.toString()},creditCard:function(t,n){var i,o,a={visa:{pattern:/^4/,length:[16]},amex:{pattern:/^3[47]/,length:[15]},mastercard:{pattern:/^5[1-5]/,length:[16]},discover:{pattern:/^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,length:[16]},unionPay:{pattern:/^(62|88)/,length:[16,17,18,19]},jcb:{pattern:/^35(2[89]|[3-8][0-9])/,length:[16]},maestro:{pattern:/^(5018|5020|5038|6304|6759|676[1-3])/,length:[12,13,14,15,16,17,18,19]},dinersClub:{pattern:/^(30[0-5]|^36)/,length:[14]},laser:{pattern:/^(6304|670[69]|6771)/,length:[16,17,18,19]},visaElectron:{pattern:/^(4026|417500|4508|4844|491(3|7))/,length:[16]}},r={},s=!1,l=\"string\"==typeof n&&n.split(\",\");if(\"string\"==typeof t&&0!==t.length){if(t=t.replace(/[\\-]/g,\"\"),l&&(e.each(l,function(n,i){(o=a[i])&&(r={length:-1!==e.inArray(t.length,o.length),pattern:-1!==t.search(o.pattern)}).length&&r.pattern&&(s=!0)}),!s))return!1;if((i={number:-1!==e.inArray(t.length,a.unionPay.length),pattern:-1!==t.search(a.unionPay.pattern)}).number&&i.pattern)return!0;for(var c=t.length,u=0,d=[[0,1,2,3,4,5,6,7,8,9],[0,2,4,6,8,1,3,5,7,9]],f=0;c--;)f+=d[u][parseInt(t.charAt(c),10)],u^=1;return f%10==0&&f>0}},minCount:function(e,t){return 0==t||(1==t?\"\"!==e:e.split(\",\").length>=t)},exactCount:function(e,t){return 0==t?\"\"===e:1==t?\"\"!==e&&-1===e.search(\",\"):e.split(\",\").length==t},maxCount:function(e,t){return 0!=t&&(1==t?-1===e.search(\",\"):e.split(\",\").length<=t)}}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.accordion=function(n){var o,a=e(this),r=(new Date).getTime(),s=[],l=arguments[0],c=\"string\"==typeof l,u=[].slice.call(arguments,1);t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame;return a.each(function(){var d,f,m=e.isPlainObject(n)?e.extend(!0,{},e.fn.accordion.settings,n):e.extend({},e.fn.accordion.settings),g=m.className,p=m.namespace,h=m.selector,v=m.error,b=\".\"+p,y=\"module-\"+p,x=a.selector||\"\",C=e(this),w=C.find(h.title),S=C.find(h.content),k=this,T=C.data(y);f={initialize:function(){f.debug(\"Initializing\",C),f.bind.events(),m.observeChanges&&f.observeChanges(),f.instantiate()},instantiate:function(){T=f,C.data(y,f)},destroy:function(){f.debug(\"Destroying previous instance\",C),C.off(b).removeData(y)},refresh:function(){w=C.find(h.title),S=C.find(h.content)},observeChanges:function(){\"MutationObserver\"in t&&((d=new MutationObserver(function(e){f.debug(\"DOM tree modified, updating selector cache\"),f.refresh()})).observe(k,{childList:!0,subtree:!0}),f.debug(\"Setting up mutation observer\",d))},bind:{events:function(){f.debug(\"Binding delegated events\"),C.on(m.on+b,h.trigger,f.event.click)}},event:{click:function(){f.toggle.call(this)}},toggle:function(t){var n=t!==i?\"number\"==typeof t?w.eq(t):e(t).closest(h.title):e(this).closest(h.title),o=n.next(S),a=o.hasClass(g.animating),r=o.hasClass(g.active),s=r&&!a,l=!r&&a;f.debug(\"Toggling visibility of content\",n),s||l?m.collapsible?f.close.call(n):f.debug(\"Cannot close accordion content collapsing is disabled\"):f.open.call(n)},open:function(t){var n=t!==i?\"number\"==typeof t?w.eq(t):e(t).closest(h.title):e(this).closest(h.title),o=n.next(S),a=o.hasClass(g.animating);o.hasClass(g.active)||a?f.debug(\"Accordion already open, skipping\",o):(f.debug(\"Opening accordion content\",n),m.onOpening.call(o),m.onChanging.call(o),m.exclusive&&f.closeOthers.call(n),n.addClass(g.active),o.stop(!0,!0).addClass(g.animating),m.animateChildren&&(e.fn.transition!==i&&C.transition(\"is supported\")?o.children().transition({animation:\"fade in\",queue:!1,useFailSafe:!0,debug:m.debug,verbose:m.verbose,duration:m.duration}):o.children().stop(!0,!0).animate({opacity:1},m.duration,f.resetOpacity)),o.slideDown(m.duration,m.easing,function(){o.removeClass(g.animating).addClass(g.active),f.reset.display.call(this),m.onOpen.call(this),m.onChange.call(this)}))},close:function(t){var n=t!==i?\"number\"==typeof t?w.eq(t):e(t).closest(h.title):e(this).closest(h.title),o=n.next(S),a=o.hasClass(g.animating),r=o.hasClass(g.active);!r&&!(!r&&a)||r&&a||(f.debug(\"Closing accordion content\",o),m.onClosing.call(o),m.onChanging.call(o),n.removeClass(g.active),o.stop(!0,!0).addClass(g.animating),m.animateChildren&&(e.fn.transition!==i&&C.transition(\"is supported\")?o.children().transition({animation:\"fade out\",queue:!1,useFailSafe:!0,debug:m.debug,verbose:m.verbose,duration:m.duration}):o.children().stop(!0,!0).animate({opacity:0},m.duration,f.resetOpacity)),o.slideUp(m.duration,m.easing,function(){o.removeClass(g.animating).removeClass(g.active),f.reset.display.call(this),m.onClose.call(this),m.onChange.call(this)}))},closeOthers:function(t){var n,o,a,r=t!==i?w.eq(t):e(this).closest(h.title),s=r.parents(h.content).prev(h.title),l=r.closest(h.accordion),c=h.title+\".\"+g.active+\":visible\",u=h.content+\".\"+g.active+\":visible\";m.closeNested?a=(n=l.find(c).not(s)).next(S):(n=l.find(c).not(s),o=l.find(u).find(c).not(s),a=(n=n.not(o)).next(S)),n.length>0&&(f.debug(\"Exclusive enabled, closing other content\",n),n.removeClass(g.active),a.removeClass(g.animating).stop(!0,!0),m.animateChildren&&(e.fn.transition!==i&&C.transition(\"is supported\")?a.children().transition({animation:\"fade out\",useFailSafe:!0,debug:m.debug,verbose:m.verbose,duration:m.duration}):a.children().stop(!0,!0).animate({opacity:0},m.duration,f.resetOpacity)),a.slideUp(m.duration,m.easing,function(){e(this).removeClass(g.active),f.reset.display.call(this)}))},reset:{display:function(){f.verbose(\"Removing inline display from element\",this),e(this).css(\"display\",\"\"),\"\"===e(this).attr(\"style\")&&e(this).attr(\"style\",\"\").removeAttr(\"style\")},opacity:function(){f.verbose(\"Removing inline opacity from element\",this),e(this).css(\"opacity\",\"\"),\"\"===e(this).attr(\"style\")&&e(this).attr(\"style\",\"\").removeAttr(\"style\")}},setting:function(t,n){if(f.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];e.isPlainObject(m[t])?e.extend(!0,m[t],n):m[t]=n}},internal:function(t,n){if(f.debug(\"Changing internal\",t,n),n===i)return f[t];e.isPlainObject(t)?e.extend(!0,f,t):f[t]=n},debug:function(){!m.silent&&m.debug&&(m.performance?f.performance.log(arguments):(f.debug=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?f.performance.log(arguments):(f.verbose=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.verbose.apply(console,arguments)))},error:function(){m.silent||(f.error=Function.prototype.bind.call(console.error,console,m.name+\":\"),f.error.apply(console,arguments))},performance:{log:function(e){var t,n;m.performance&&(n=(t=(new Date).getTime())-(r||t),r=t,s.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:k,\"Execution Time\":n})),clearTimeout(f.performance.timer),f.performance.timer=setTimeout(f.performance.display,500)},display:function(){var t=m.name+\":\",n=0;r=!1,clearTimeout(f.performance.timer),e.each(s,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",x&&(t+=\" '\"+x+\"'\"),(console.group!==i||console.table!==i)&&s.length>0&&(console.groupCollapsed(t),console.table?console.table(s):e.each(s,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),s=[]}},invoke:function(t,n,a){var r,s,l,c=T;return n=n||u,a=k||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(f.error(v.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}},c?(T===i&&f.initialize(),f.invoke(l)):(T!==i&&T.invoke(\"destroy\"),f.initialize())}),o!==i?o:this},e.fn.accordion.settings={name:\"Accordion\",namespace:\"accordion\",silent:!1,debug:!1,verbose:!1,performance:!0,on:\"click\",observeChanges:!0,exclusive:!0,collapsible:!0,closeNested:!1,animateChildren:!0,duration:350,easing:\"easeOutQuad\",onOpening:function(){},onClosing:function(){},onChanging:function(){},onOpen:function(){},onClose:function(){},onChange:function(){},error:{method:\"The method you called is not defined\"},className:{active:\"active\",animating:\"animating\"},selector:{accordion:\".accordion\",title:\".title\",trigger:\".title\",content:\".content\"}},e.extend(e.easing,{easeOutQuad:function(e,t,n,i,o){return-i*(t/=o)*(t-2)+n}})}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.checkbox=function(o){var a,r=e(this),s=r.selector||\"\",l=(new Date).getTime(),c=[],u=arguments[0],d=\"string\"==typeof u,f=[].slice.call(arguments,1);return r.each(function(){var r,m,g=e.extend(!0,{},e.fn.checkbox.settings,o),p=g.className,h=g.namespace,v=g.selector,b=g.error,y=\".\"+h,x=\"module-\"+h,C=e(this),w=e(this).children(v.label),S=e(this).children(v.input),k=S[0],T=!1,A=!1,R=C.data(x),P=this;m={initialize:function(){m.verbose(\"Initializing checkbox\",g),m.create.label(),m.bind.events(),m.set.tabbable(),m.hide.input(),m.observeChanges(),m.instantiate(),m.setup()},instantiate:function(){m.verbose(\"Storing instance of module\",m),R=m,C.data(x,m)},destroy:function(){m.verbose(\"Destroying module\"),m.unbind.events(),m.show.input(),C.removeData(x)},fix:{reference:function(){C.is(v.input)&&(m.debug(\"Behavior called on <input> adjusting invoked element\"),C=C.closest(v.checkbox),m.refresh())}},setup:function(){m.set.initialLoad(),m.is.indeterminate()?(m.debug(\"Initial value is indeterminate\"),m.indeterminate()):m.is.checked()?(m.debug(\"Initial value is checked\"),m.check()):(m.debug(\"Initial value is unchecked\"),m.uncheck()),m.remove.initialLoad()},refresh:function(){w=C.children(v.label),S=C.children(v.input),k=S[0]},hide:{input:function(){m.verbose(\"Modifying <input> z-index to be unselectable\"),S.addClass(p.hidden)}},show:{input:function(){m.verbose(\"Modifying <input> z-index to be selectable\"),S.removeClass(p.hidden)}},observeChanges:function(){\"MutationObserver\"in t&&((r=new MutationObserver(function(e){m.debug(\"DOM tree modified, updating selector cache\"),m.refresh()})).observe(P,{childList:!0,subtree:!0}),m.debug(\"Setting up mutation observer\",r))},attachEvents:function(t,n){var i=e(t);n=e.isFunction(m[n])?m[n]:m.toggle,i.length>0?(m.debug(\"Attaching checkbox events to element\",t,n),i.on(\"click\"+y,n)):m.error(b.notFound)},event:{click:function(t){var n=e(t.target);n.is(v.input)?m.verbose(\"Using default check action on initialized checkbox\"):n.is(v.link)?m.debug(\"Clicking link inside checkbox, skipping toggle\"):(m.toggle(),S.focus(),t.preventDefault())},keydown:function(e){var t=e.which,n=13,i=32;t==27?(m.verbose(\"Escape key pressed blurring field\"),S.blur(),A=!0):e.ctrlKey||t!=i&&t!=n?A=!1:(m.verbose(\"Enter/space key pressed, toggling checkbox\"),m.toggle(),A=!0)},keyup:function(e){A&&e.preventDefault()}},check:function(){m.should.allowCheck()&&(m.debug(\"Checking checkbox\",S),m.set.checked(),m.should.ignoreCallbacks()||(g.onChecked.call(k),g.onChange.call(k)))},uncheck:function(){m.should.allowUncheck()&&(m.debug(\"Unchecking checkbox\"),m.set.unchecked(),m.should.ignoreCallbacks()||(g.onUnchecked.call(k),g.onChange.call(k)))},indeterminate:function(){m.should.allowIndeterminate()?m.debug(\"Checkbox is already indeterminate\"):(m.debug(\"Making checkbox indeterminate\"),m.set.indeterminate(),m.should.ignoreCallbacks()||(g.onIndeterminate.call(k),g.onChange.call(k)))},determinate:function(){m.should.allowDeterminate()?m.debug(\"Checkbox is already determinate\"):(m.debug(\"Making checkbox determinate\"),m.set.determinate(),m.should.ignoreCallbacks()||(g.onDeterminate.call(k),g.onChange.call(k)))},enable:function(){m.is.enabled()?m.debug(\"Checkbox is already enabled\"):(m.debug(\"Enabling checkbox\"),m.set.enabled(),g.onEnable.call(k),g.onEnabled.call(k))},disable:function(){m.is.disabled()?m.debug(\"Checkbox is already disabled\"):(m.debug(\"Disabling checkbox\"),m.set.disabled(),g.onDisable.call(k),g.onDisabled.call(k))},get:{radios:function(){var t=m.get.name();return e('input[name=\"'+t+'\"]').closest(v.checkbox)},otherRadios:function(){return m.get.radios().not(C)},name:function(){return S.attr(\"name\")}},is:{initialLoad:function(){return T},radio:function(){return S.hasClass(p.radio)||\"radio\"==S.attr(\"type\")},indeterminate:function(){return S.prop(\"indeterminate\")!==i&&S.prop(\"indeterminate\")},checked:function(){return S.prop(\"checked\")!==i&&S.prop(\"checked\")},disabled:function(){return S.prop(\"disabled\")!==i&&S.prop(\"disabled\")},enabled:function(){return!m.is.disabled()},determinate:function(){return!m.is.indeterminate()},unchecked:function(){return!m.is.checked()}},should:{allowCheck:function(){return m.is.determinate()&&m.is.checked()&&!m.should.forceCallbacks()?(m.debug(\"Should not allow check, checkbox is already checked\"),!1):!1!==g.beforeChecked.apply(k)||(m.debug(\"Should not allow check, beforeChecked cancelled\"),!1)},allowUncheck:function(){return m.is.determinate()&&m.is.unchecked()&&!m.should.forceCallbacks()?(m.debug(\"Should not allow uncheck, checkbox is already unchecked\"),!1):!1!==g.beforeUnchecked.apply(k)||(m.debug(\"Should not allow uncheck, beforeUnchecked cancelled\"),!1)},allowIndeterminate:function(){return m.is.indeterminate()&&!m.should.forceCallbacks()?(m.debug(\"Should not allow indeterminate, checkbox is already indeterminate\"),!1):!1!==g.beforeIndeterminate.apply(k)||(m.debug(\"Should not allow indeterminate, beforeIndeterminate cancelled\"),!1)},allowDeterminate:function(){return m.is.determinate()&&!m.should.forceCallbacks()?(m.debug(\"Should not allow determinate, checkbox is already determinate\"),!1):!1!==g.beforeDeterminate.apply(k)||(m.debug(\"Should not allow determinate, beforeDeterminate cancelled\"),!1)},forceCallbacks:function(){return m.is.initialLoad()&&g.fireOnInit},ignoreCallbacks:function(){return T&&!g.fireOnInit}},can:{change:function(){return!(C.hasClass(p.disabled)||C.hasClass(p.readOnly)||S.prop(\"disabled\")||S.prop(\"readonly\"))},uncheck:function(){return\"boolean\"==typeof g.uncheckable?g.uncheckable:!m.is.radio()}},set:{initialLoad:function(){T=!0},checked:function(){m.verbose(\"Setting class to checked\"),C.removeClass(p.indeterminate).addClass(p.checked),m.is.radio()&&m.uncheckOthers(),m.is.indeterminate()||!m.is.checked()?(m.verbose(\"Setting state to checked\",k),S.prop(\"indeterminate\",!1).prop(\"checked\",!0),m.trigger.change()):m.debug(\"Input is already checked, skipping input property change\")},unchecked:function(){m.verbose(\"Removing checked class\"),C.removeClass(p.indeterminate).removeClass(p.checked),m.is.indeterminate()||!m.is.unchecked()?(m.debug(\"Setting state to unchecked\"),S.prop(\"indeterminate\",!1).prop(\"checked\",!1),m.trigger.change()):m.debug(\"Input is already unchecked\")},indeterminate:function(){m.verbose(\"Setting class to indeterminate\"),C.addClass(p.indeterminate),m.is.indeterminate()?m.debug(\"Input is already indeterminate, skipping input property change\"):(m.debug(\"Setting state to indeterminate\"),S.prop(\"indeterminate\",!0),m.trigger.change())},determinate:function(){m.verbose(\"Removing indeterminate class\"),C.removeClass(p.indeterminate),m.is.determinate()?m.debug(\"Input is already determinate, skipping input property change\"):(m.debug(\"Setting state to determinate\"),S.prop(\"indeterminate\",!1))},disabled:function(){m.verbose(\"Setting class to disabled\"),C.addClass(p.disabled),m.is.disabled()?m.debug(\"Input is already disabled, skipping input property change\"):(m.debug(\"Setting state to disabled\"),S.prop(\"disabled\",\"disabled\"),m.trigger.change())},enabled:function(){m.verbose(\"Removing disabled class\"),C.removeClass(p.disabled),m.is.enabled()?m.debug(\"Input is already enabled, skipping input property change\"):(m.debug(\"Setting state to enabled\"),S.prop(\"disabled\",!1),m.trigger.change())},tabbable:function(){m.verbose(\"Adding tabindex to checkbox\"),S.attr(\"tabindex\")===i&&S.attr(\"tabindex\",0)}},remove:{initialLoad:function(){T=!1}},trigger:{change:function(){var e=n.createEvent(\"HTMLEvents\"),t=S[0];t&&(m.verbose(\"Triggering native change event\"),e.initEvent(\"change\",!0,!1),t.dispatchEvent(e))}},create:{label:function(){S.prevAll(v.label).length>0?(S.prev(v.label).detach().insertAfter(S),m.debug(\"Moving existing label\",w)):m.has.label()||(w=e(\"<label>\").insertAfter(S),m.debug(\"Creating label\",w))}},has:{label:function(){return w.length>0}},bind:{events:function(){m.verbose(\"Attaching checkbox events\"),C.on(\"click\"+y,m.event.click).on(\"keydown\"+y,v.input,m.event.keydown).on(\"keyup\"+y,v.input,m.event.keyup)}},unbind:{events:function(){m.debug(\"Removing events\"),C.off(y)}},uncheckOthers:function(){var e=m.get.otherRadios();m.debug(\"Unchecking other radios\",e),e.removeClass(p.checked)},toggle:function(){m.can.change()?m.is.indeterminate()||m.is.unchecked()?(m.debug(\"Currently unchecked\"),m.check()):m.is.checked()&&m.can.uncheck()&&(m.debug(\"Currently checked\"),m.uncheck()):m.is.radio()||m.debug(\"Checkbox is read-only or disabled, ignoring toggle\")},setting:function(t,n){if(m.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,g,t);else{if(n===i)return g[t];e.isPlainObject(g[t])?e.extend(!0,g[t],n):g[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];m[t]=n}},debug:function(){!g.silent&&g.debug&&(g.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.debug.apply(console,arguments)))},verbose:function(){!g.silent&&g.verbose&&g.debug&&(g.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.verbose.apply(console,arguments)))},error:function(){g.silent||(m.error=Function.prototype.bind.call(console.error,console,g.name+\":\"),m.error.apply(console,arguments))},performance:{log:function(e){var t,n;g.performance&&(n=(t=(new Date).getTime())-(l||t),l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:P,\"Execution Time\":n})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,500)},display:function(){var t=g.name+\":\",n=0;l=!1,clearTimeout(m.performance.timer),e.each(c,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",s&&(t+=\" '\"+s+\"'\"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=R;return n=n||f,o=P||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(m.error(b.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(R===i&&m.initialize(),m.invoke(u)):(R!==i&&R.invoke(\"destroy\"),m.initialize())}),a!==i?a:this},e.fn.checkbox.settings={name:\"Checkbox\",namespace:\"checkbox\",silent:!1,debug:!1,verbose:!0,performance:!0,uncheckable:\"auto\",fireOnInit:!1,onChange:function(){},beforeChecked:function(){},beforeUnchecked:function(){},beforeDeterminate:function(){},beforeIndeterminate:function(){},onChecked:function(){},onUnchecked:function(){},onDeterminate:function(){},onIndeterminate:function(){},onEnable:function(){},onDisable:function(){},onEnabled:function(){},onDisabled:function(){},className:{checked:\"checked\",indeterminate:\"indeterminate\",disabled:\"disabled\",hidden:\"hidden\",radio:\"radio\",readOnly:\"read-only\"},error:{method:\"The method you called is not defined\"},selector:{checkbox:\".ui.checkbox\",label:\"label, .box\",input:'input[type=\"checkbox\"], input[type=\"radio\"]',link:\"a[href]\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.dimmer=function(t){var o,a=e(this),r=(new Date).getTime(),s=[],l=arguments[0],c=\"string\"==typeof l,u=[].slice.call(arguments,1);return a.each(function(){var d,f,m,g=e.isPlainObject(t)?e.extend(!0,{},e.fn.dimmer.settings,t):e.extend({},e.fn.dimmer.settings),p=g.selector,h=g.namespace,v=g.className,b=g.error,y=\".\"+h,x=\"module-\"+h,C=a.selector||\"\",w=\"ontouchstart\"in n.documentElement?\"touchstart\":\"click\",S=e(this),k=this,T=S.data(x);(m={preinitialize:function(){m.is.dimmer()?(f=S.parent(),d=S):(f=S,d=m.has.dimmer()?g.dimmerName?f.find(p.dimmer).filter(\".\"+g.dimmerName):f.find(p.dimmer):m.create(),m.set.variation())},initialize:function(){m.debug(\"Initializing dimmer\",g),m.bind.events(),m.set.dimmable(),m.instantiate()},instantiate:function(){m.verbose(\"Storing instance of module\",m),T=m,S.data(x,T)},destroy:function(){m.verbose(\"Destroying previous module\",d),m.unbind.events(),m.remove.variation(),f.off(y)},bind:{events:function(){m.is.page()&&f.get(0).addEventListener(\"touchmove\",m.event.preventScroll,{passive:!1}),\"hover\"==g.on?f.on(\"mouseenter\"+y,m.show).on(\"mouseleave\"+y,m.hide):\"click\"==g.on&&f.on(w+y,m.toggle),m.is.page()&&(m.debug(\"Setting as a page dimmer\",f),m.set.pageDimmer()),m.is.closable()&&(m.verbose(\"Adding dimmer close event\",d),f.on(w+y,p.dimmer,m.event.click))}},unbind:{events:function(){m.is.page()&&f.get(0).removeEventListener(\"touchmove\",m.event.preventScroll,{passive:!1}),S.removeData(x),f.off(y)}},event:{click:function(t){m.verbose(\"Determining if event occured on dimmer\",t),(0===d.find(t.target).length||e(t.target).is(p.content))&&(m.hide(),t.stopImmediatePropagation())},preventScroll:function(e){e.preventDefault()}},addContent:function(t){var n=e(t);m.debug(\"Add content to dimmer\",n),n.parent()[0]!==d[0]&&n.detach().appendTo(d)},create:function(){var t=e(g.template.dimmer());return g.dimmerName&&(m.debug(\"Creating named dimmer\",g.dimmerName),t.addClass(g.dimmerName)),t.appendTo(f),t},show:function(t){t=e.isFunction(t)?t:function(){},m.debug(\"Showing dimmer\",d,g),m.is.dimmed()&&!m.is.animating()||!m.is.enabled()?m.debug(\"Dimmer is already shown or disabled\"):(m.animate.show(t),g.onShow.call(k),g.onChange.call(k))},hide:function(t){t=e.isFunction(t)?t:function(){},m.is.dimmed()||m.is.animating()?(m.debug(\"Hiding dimmer\",d),m.animate.hide(t),g.onHide.call(k),g.onChange.call(k)):m.debug(\"Dimmer is not visible\")},toggle:function(){m.verbose(\"Toggling dimmer visibility\",d),m.is.dimmed()?m.hide():m.show()},animate:{show:function(t){t=e.isFunction(t)?t:function(){},g.useCSS&&e.fn.transition!==i&&d.transition(\"is supported\")?(\"auto\"!==g.opacity&&m.set.opacity(),d.transition({displayType:\"flex\",animation:g.transition+\" in\",queue:!1,duration:m.get.duration(),useFailSafe:!0,onStart:function(){m.set.dimmed()},onComplete:function(){m.set.active(),t()}})):(m.verbose(\"Showing dimmer animation with javascript\"),m.set.dimmed(),\"auto\"==g.opacity&&(g.opacity=.8),d.stop().css({opacity:0,width:\"100%\",height:\"100%\"}).fadeTo(m.get.duration(),g.opacity,function(){d.removeAttr(\"style\"),m.set.active(),t()}))},hide:function(t){t=e.isFunction(t)?t:function(){},g.useCSS&&e.fn.transition!==i&&d.transition(\"is supported\")?(m.verbose(\"Hiding dimmer with css\"),d.transition({displayType:\"flex\",animation:g.transition+\" out\",queue:!1,duration:m.get.duration(),useFailSafe:!0,onStart:function(){m.remove.dimmed()},onComplete:function(){m.remove.active(),t()}})):(m.verbose(\"Hiding dimmer with javascript\"),m.remove.dimmed(),d.stop().fadeOut(m.get.duration(),function(){m.remove.active(),d.removeAttr(\"style\"),t()}))}},get:{dimmer:function(){return d},duration:function(){return\"object\"==typeof g.duration?m.is.active()?g.duration.hide:g.duration.show:g.duration}},has:{dimmer:function(){return g.dimmerName?S.find(p.dimmer).filter(\".\"+g.dimmerName).length>0:S.find(p.dimmer).length>0}},is:{active:function(){return d.hasClass(v.active)},animating:function(){return d.is(\":animated\")||d.hasClass(v.animating)},closable:function(){return\"auto\"==g.closable?\"hover\"!=g.on:g.closable},dimmer:function(){return S.hasClass(v.dimmer)},dimmable:function(){return S.hasClass(v.dimmable)},dimmed:function(){return f.hasClass(v.dimmed)},disabled:function(){return f.hasClass(v.disabled)},enabled:function(){return!m.is.disabled()},page:function(){return f.is(\"body\")},pageDimmer:function(){return d.hasClass(v.pageDimmer)}},can:{show:function(){return!d.hasClass(v.disabled)}},set:{opacity:function(e){var t=d.css(\"background-color\"),n=t.split(\",\"),i=n&&3==n.length,o=n&&4==n.length;e=0===g.opacity?0:g.opacity||e,i||o?(n[3]=e+\")\",t=n.join(\",\")):t=\"rgba(0, 0, 0, \"+e+\")\",m.debug(\"Setting opacity to\",e),d.css(\"background-color\",t)},active:function(){d.addClass(v.active)},dimmable:function(){f.addClass(v.dimmable)},dimmed:function(){f.addClass(v.dimmed)},pageDimmer:function(){d.addClass(v.pageDimmer)},disabled:function(){d.addClass(v.disabled)},variation:function(e){(e=e||g.variation)&&d.addClass(e)}},remove:{active:function(){d.removeClass(v.active)},dimmed:function(){f.removeClass(v.dimmed)},disabled:function(){d.removeClass(v.disabled)},variation:function(e){(e=e||g.variation)&&d.removeClass(e)}},setting:function(t,n){if(m.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,g,t);else{if(n===i)return g[t];e.isPlainObject(g[t])?e.extend(!0,g[t],n):g[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];m[t]=n}},debug:function(){!g.silent&&g.debug&&(g.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.debug.apply(console,arguments)))},verbose:function(){!g.silent&&g.verbose&&g.debug&&(g.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.verbose.apply(console,arguments)))},error:function(){g.silent||(m.error=Function.prototype.bind.call(console.error,console,g.name+\":\"),m.error.apply(console,arguments))},performance:{log:function(e){var t,n;g.performance&&(n=(t=(new Date).getTime())-(r||t),r=t,s.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:k,\"Execution Time\":n})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,500)},display:function(){var t=g.name+\":\",n=0;r=!1,clearTimeout(m.performance.timer),e.each(s,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",C&&(t+=\" '\"+C+\"'\"),a.length>1&&(t+=\" (\"+a.length+\")\"),(console.group!==i||console.table!==i)&&s.length>0&&(console.groupCollapsed(t),console.table?console.table(s):e.each(s,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),s=[]}},invoke:function(t,n,a){var r,s,l,c=T;return n=n||u,a=k||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(m.error(b.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}}).preinitialize(),c?(T===i&&m.initialize(),m.invoke(l)):(T!==i&&T.invoke(\"destroy\"),m.initialize())}),o!==i?o:this},e.fn.dimmer.settings={name:\"Dimmer\",namespace:\"dimmer\",silent:!1,debug:!1,verbose:!1,performance:!0,dimmerName:!1,variation:!1,closable:\"auto\",useCSS:!0,transition:\"fade\",on:!1,opacity:\"auto\",duration:{show:500,hide:500},onChange:function(){},onShow:function(){},onHide:function(){},error:{method:\"The method you called is not defined.\"},className:{active:\"active\",animating:\"animating\",dimmable:\"dimmable\",dimmed:\"dimmed\",dimmer:\"dimmer\",disabled:\"disabled\",hide:\"hide\",pageDimmer:\"page\",show:\"show\"},selector:{dimmer:\"> .ui.dimmer\",content:\".ui.dimmer > .content, .ui.dimmer > .content > .center\"},template:{dimmer:function(){return e(\"<div />\").attr(\"class\",\"ui dimmer\")}}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.dropdown=function(o){var a,r=e(this),s=e(n),l=r.selector||\"\",c=\"ontouchstart\"in n.documentElement,u=(new Date).getTime(),d=[],f=arguments[0],m=\"string\"==typeof f,g=[].slice.call(arguments,1);return r.each(function(p){var h,v,b,y,x,C,w,S,k=e.isPlainObject(o)?e.extend(!0,{},e.fn.dropdown.settings,o):e.extend({},e.fn.dropdown.settings),T=k.className,A=k.message,R=k.fields,P=k.keys,E=k.metadata,F=k.namespace,O=k.regExp,D=k.selector,q=k.error,j=k.templates,z=\".\"+F,I=\"module-\"+F,M=e(this),L=e(k.context),V=M.find(D.text),N=M.find(D.search),H=M.find(D.sizer),U=M.find(D.input),W=M.find(D.icon),B=M.prev().find(D.text).length>0?M.prev().find(D.text):M.prev(),Q=M.children(D.menu),X=Q.find(D.item),$=!1,Y=!1,Z=!1,K=this,J=M.data(I);S={initialize:function(){S.debug(\"Initializing dropdown\",k),S.is.alreadySetup()?S.setup.reference():(S.setup.layout(),k.values&&S.change.values(k.values),S.refreshData(),S.save.defaults(),S.restore.selected(),S.create.id(),S.bind.events(),S.observeChanges(),S.instantiate())},instantiate:function(){S.verbose(\"Storing instance of dropdown\",S),J=S,M.data(I,S)},destroy:function(){S.verbose(\"Destroying previous dropdown\",M),S.remove.tabbable(),M.off(z).removeData(I),Q.off(z),s.off(y),S.disconnect.menuObserver(),S.disconnect.selectObserver()},observeChanges:function(){\"MutationObserver\"in t&&(C=new MutationObserver(S.event.select.mutation),w=new MutationObserver(S.event.menu.mutation),S.debug(\"Setting up mutation observer\",C,w),S.observe.select(),S.observe.menu())},disconnect:{menuObserver:function(){w&&w.disconnect()},selectObserver:function(){C&&C.disconnect()}},observe:{select:function(){S.has.input()&&C.observe(M[0],{childList:!0,subtree:!0})},menu:function(){S.has.menu()&&w.observe(Q[0],{childList:!0,subtree:!0})}},create:{id:function(){x=(Math.random().toString(16)+\"000000000\").substr(2,8),y=\".\"+x,S.verbose(\"Creating unique id for element\",x)},userChoice:function(t){var n,o,a;return!!(t=t||S.get.userValues())&&(t=e.isArray(t)?t:[t],e.each(t,function(t,r){!1===S.get.item(r)&&(a=k.templates.addition(S.add.variables(A.addResult,r)),o=e(\"<div />\").html(a).attr(\"data-\"+E.value,r).attr(\"data-\"+E.text,r).addClass(T.addition).addClass(T.item),k.hideAdditions&&o.addClass(T.hidden),n=n===i?o:n.add(o),S.verbose(\"Creating user choices for value\",r,o))}),n)},userLabels:function(t){var n=S.get.userValues();n&&(S.debug(\"Adding user labels\",n),e.each(n,function(e,t){S.verbose(\"Adding custom user value\"),S.add.label(t,t)}))},menu:function(){Q=e(\"<div />\").addClass(T.menu).appendTo(M)},sizer:function(){H=e(\"<span />\").addClass(T.sizer).insertAfter(N)}},search:function(e){e=e!==i?e:S.get.query(),S.verbose(\"Searching for query\",e),S.has.minCharacters(e)?S.filter(e):S.hide()},select:{firstUnfiltered:function(){S.verbose(\"Selecting first non-filtered element\"),S.remove.selectedItem(),X.not(D.unselectable).not(D.addition+D.hidden).eq(0).addClass(T.selected)},nextAvailable:function(e){var t=(e=e.eq(0)).nextAll(D.item).not(D.unselectable).eq(0),n=e.prevAll(D.item).not(D.unselectable).eq(0);t.length>0?(S.verbose(\"Moving selection to\",t),t.addClass(T.selected)):(S.verbose(\"Moving selection to\",n),n.addClass(T.selected))}},setup:{api:function(){var e={debug:k.debug,urlData:{value:S.get.value(),query:S.get.query()},on:!1};S.verbose(\"First request, initializing API\"),M.api(e)},layout:function(){M.is(\"select\")&&(S.setup.select(),S.setup.returnedObject()),S.has.menu()||S.create.menu(),S.is.search()&&!S.has.search()&&(S.verbose(\"Adding search input\"),N=e(\"<input />\").addClass(T.search).prop(\"autocomplete\",\"off\").insertBefore(V)),S.is.multiple()&&S.is.searchSelection()&&!S.has.sizer()&&S.create.sizer(),k.allowTab&&S.set.tabbable()},select:function(){var t=S.get.selectValues();S.debug(\"Dropdown initialized on a select\",t),M.is(\"select\")&&(U=M),U.parent(D.dropdown).length>0?(S.debug(\"UI dropdown already exists. Creating dropdown menu only\"),M=U.closest(D.dropdown),S.has.menu()||S.create.menu(),Q=M.children(D.menu),S.setup.menu(t)):(S.debug(\"Creating entire dropdown from select\"),M=e(\"<div />\").attr(\"class\",U.attr(\"class\")).addClass(T.selection).addClass(T.dropdown).html(j.dropdown(t)).insertBefore(U),U.hasClass(T.multiple)&&!1===U.prop(\"multiple\")&&(S.error(q.missingMultiple),U.prop(\"multiple\",!0)),U.is(\"[multiple]\")&&S.set.multiple(),U.prop(\"disabled\")&&(S.debug(\"Disabling dropdown\"),M.addClass(T.disabled)),U.removeAttr(\"class\").detach().prependTo(M)),S.refresh()},menu:function(e){Q.html(j.menu(e,R)),X=Q.find(D.item)},reference:function(){S.debug(\"Dropdown behavior was called on select, replacing with closest dropdown\"),M=M.parent(D.dropdown),J=M.data(I),K=M.get(0),S.refresh(),S.setup.returnedObject()},returnedObject:function(){var e=r.slice(0,p),t=r.slice(p+1);r=e.add(M).add(t)}},refresh:function(){S.refreshSelectors(),S.refreshData()},refreshItems:function(){X=Q.find(D.item)},refreshSelectors:function(){S.verbose(\"Refreshing selector cache\"),V=M.find(D.text),N=M.find(D.search),U=M.find(D.input),W=M.find(D.icon),B=M.prev().find(D.text).length>0?M.prev().find(D.text):M.prev(),Q=M.children(D.menu),X=Q.find(D.item)},refreshData:function(){S.verbose(\"Refreshing cached metadata\"),X.removeData(E.text).removeData(E.value)},clearData:function(){S.verbose(\"Clearing metadata\"),X.removeData(E.text).removeData(E.value),M.removeData(E.defaultText).removeData(E.defaultValue).removeData(E.placeholderText)},toggle:function(){S.verbose(\"Toggling menu visibility\"),S.is.active()?S.hide():S.show()},show:function(t){if(t=e.isFunction(t)?t:function(){},!S.can.show()&&S.is.remote()&&(S.debug(\"No API results retrieved, searching before show\"),S.queryRemote(S.get.query(),S.show)),S.can.show()&&!S.is.active()){if(S.debug(\"Showing dropdown\"),!S.has.message()||S.has.maxSelections()||S.has.allResultsFiltered()||S.remove.message(),S.is.allFiltered())return!0;!1!==k.onShow.call(K)&&S.animate.show(function(){S.can.click()&&S.bind.intent(),S.has.menuSearch()&&S.focusSearch(),S.set.visible(),t.call(K)})}},hide:function(t){t=e.isFunction(t)?t:function(){},S.is.active()&&!S.is.animatingOutward()&&(S.debug(\"Hiding dropdown\"),!1!==k.onHide.call(K)&&S.animate.hide(function(){S.remove.visible(),t.call(K)}))},hideOthers:function(){S.verbose(\"Finding other dropdowns to hide\"),r.not(M).has(D.menu+\".\"+T.visible).dropdown(\"hide\")},hideMenu:function(){S.verbose(\"Hiding menu instantaneously\"),S.remove.active(),S.remove.visible(),Q.transition(\"hide\")},hideSubMenus:function(){var e=Q.children(D.item).find(D.menu);S.verbose(\"Hiding sub menus\",e),e.transition(\"hide\")},bind:{events:function(){c&&S.bind.touchEvents(),S.bind.keyboardEvents(),S.bind.inputEvents(),S.bind.mouseEvents()},touchEvents:function(){S.debug(\"Touch device detected binding additional touch events\"),S.is.searchSelection()||S.is.single()&&M.on(\"touchstart\"+z,S.event.test.toggle),Q.on(\"touchstart\"+z,D.item,S.event.item.mouseenter)},keyboardEvents:function(){S.verbose(\"Binding keyboard events\"),M.on(\"keydown\"+z,S.event.keydown),S.has.search()&&M.on(S.get.inputEvent()+z,D.search,S.event.input),S.is.multiple()&&s.on(\"keydown\"+y,S.event.document.keydown)},inputEvents:function(){S.verbose(\"Binding input change events\"),M.on(\"change\"+z,D.input,S.event.change)},mouseEvents:function(){S.verbose(\"Binding mouse events\"),S.is.multiple()&&M.on(\"click\"+z,D.label,S.event.label.click).on(\"click\"+z,D.remove,S.event.remove.click),S.is.searchSelection()?(M.on(\"mousedown\"+z,S.event.mousedown).on(\"mouseup\"+z,S.event.mouseup).on(\"mousedown\"+z,D.menu,S.event.menu.mousedown).on(\"mouseup\"+z,D.menu,S.event.menu.mouseup).on(\"click\"+z,D.icon,S.event.icon.click).on(\"focus\"+z,D.search,S.event.search.focus).on(\"click\"+z,D.search,S.event.search.focus).on(\"blur\"+z,D.search,S.event.search.blur).on(\"click\"+z,D.text,S.event.text.focus),S.is.multiple()&&M.on(\"click\"+z,S.event.click)):(\"click\"==k.on?M.on(\"click\"+z,D.icon,S.event.icon.click).on(\"click\"+z,S.event.test.toggle):\"hover\"==k.on?M.on(\"mouseenter\"+z,S.delay.show).on(\"mouseleave\"+z,S.delay.hide):M.on(k.on+z,S.toggle),M.on(\"mousedown\"+z,S.event.mousedown).on(\"mouseup\"+z,S.event.mouseup).on(\"focus\"+z,S.event.focus),S.has.menuSearch()?M.on(\"blur\"+z,D.search,S.event.search.blur):M.on(\"blur\"+z,S.event.blur)),Q.on(\"mouseenter\"+z,D.item,S.event.item.mouseenter).on(\"mouseleave\"+z,D.item,S.event.item.mouseleave).on(\"click\"+z,D.item,S.event.item.click)},intent:function(){S.verbose(\"Binding hide intent event to document\"),c&&s.on(\"touchstart\"+y,S.event.test.touch).on(\"touchmove\"+y,S.event.test.touch),s.on(\"click\"+y,S.event.test.hide)}},unbind:{intent:function(){S.verbose(\"Removing hide intent event from document\"),c&&s.off(\"touchstart\"+y).off(\"touchmove\"+y),s.off(\"click\"+y)}},filter:function(e){var t=e!==i?e:S.get.query(),n=function(){S.is.multiple()&&S.filterActive(),(e||!e&&0==S.get.activeItem().length)&&S.select.firstUnfiltered(),S.has.allResultsFiltered()?k.onNoResults.call(K,t)?k.allowAdditions?k.hideAdditions&&(S.verbose(\"User addition with no menu, setting empty style\"),S.set.empty(),S.hideMenu()):(S.verbose(\"All items filtered, showing message\",t),S.add.message(A.noResults)):(S.verbose(\"All items filtered, hiding dropdown\",t),S.hideMenu()):(S.remove.empty(),S.remove.message()),k.allowAdditions&&S.add.userSuggestion(e),S.is.searchSelection()&&S.can.show()&&S.is.focusedOnSearch()&&S.show()};k.useLabels&&S.has.maxSelections()||(k.apiSettings?S.can.useAPI()?S.queryRemote(t,function(){k.filterRemoteData&&S.filterItems(t),n()}):S.error(q.noAPI):(S.filterItems(t),n()))},queryRemote:function(t,n){var i={errorDuration:!1,cache:\"local\",throttle:k.throttle,urlData:{query:t},onError:function(){S.add.message(A.serverError),n()},onFailure:function(){S.add.message(A.serverError),n()},onSuccess:function(t){var i=t[R.remoteValues];e.isArray(i)&&i.length>0?(S.remove.message(),S.setup.menu({values:t[R.remoteValues]})):S.add.message(A.noResults),n()}};M.api(\"get request\")||S.setup.api(),i=e.extend(!0,{},i,k.apiSettings),M.api(\"setting\",i).api(\"query\")},filterItems:function(t){var n=t!==i?t:S.get.query(),o=null,a=S.escape.string(n),r=new RegExp(\"^\"+a,\"igm\");S.has.query()&&(o=[],S.verbose(\"Searching for matching values\",n),X.each(function(){var t,i,a=e(this);if(\"both\"==k.match||\"text\"==k.match){if(-1!==(t=String(S.get.choiceText(a,!1))).search(r))return o.push(this),!0;if(\"exact\"===k.fullTextSearch&&S.exactSearch(n,t))return o.push(this),!0;if(!0===k.fullTextSearch&&S.fuzzySearch(n,t))return o.push(this),!0}if(\"both\"==k.match||\"value\"==k.match){if(-1!==(i=String(S.get.choiceValue(a,t))).search(r))return o.push(this),!0;if(\"exact\"===k.fullTextSearch&&S.exactSearch(n,i))return o.push(this),!0;if(!0===k.fullTextSearch&&S.fuzzySearch(n,i))return o.push(this),!0}})),S.debug(\"Showing only matched items\",n),S.remove.filteredItem(),o&&X.not(o).addClass(T.filtered)},fuzzySearch:function(e,t){var n=t.length,i=e.length;if(e=e.toLowerCase(),t=t.toLowerCase(),i>n)return!1;if(i===n)return e===t;e:for(var o=0,a=0;o<i;o++){for(var r=e.charCodeAt(o);a<n;)if(t.charCodeAt(a++)===r)continue e;return!1}return!0},exactSearch:function(e,t){return e=e.toLowerCase(),(t=t.toLowerCase()).indexOf(e)>-1},filterActive:function(){k.useLabels&&X.filter(\".\"+T.active).addClass(T.filtered)},focusSearch:function(e){S.has.search()&&!S.is.focusedOnSearch()&&(e?(M.off(\"focus\"+z,D.search),N.focus(),M.on(\"focus\"+z,D.search,S.event.search.focus)):N.focus())},forceSelection:function(){var e=X.not(T.filtered).filter(\".\"+T.selected).eq(0),t=X.not(T.filtered).filter(\".\"+T.active).eq(0),n=e.length>0?e:t;if(n.length>0&&!S.is.multiple())return S.debug(\"Forcing partial selection to selected item\",n),void S.event.item.click.call(n,{},!0);k.allowAdditions?(S.set.selected(S.get.query()),S.remove.searchTerm()):S.remove.searchTerm()},change:{values:function(t){k.allowAdditions||S.clear(),S.debug(\"Creating dropdown with specified values\",t),S.setup.menu({values:t}),e.each(t,function(e,t){if(1==t.selected)return S.debug(\"Setting initial selection to\",t.value),S.set.selected(t.value),!0})}},event:{change:function(){Z||(S.debug(\"Input changed, updating selection\"),S.set.selected())},focus:function(){k.showOnFocus&&!$&&S.is.hidden()&&!v&&S.show()},blur:function(e){v=n.activeElement===this,$||v||(S.remove.activeLabel(),S.hide())},mousedown:function(){S.is.searchSelection()?b=!0:$=!0},mouseup:function(){S.is.searchSelection()?b=!1:$=!1},click:function(t){e(t.target).is(M)&&(S.is.focusedOnSearch()?S.show():S.focusSearch())},search:{focus:function(){$=!0,S.is.multiple()&&S.remove.activeLabel(),k.showOnFocus&&S.search()},blur:function(e){v=n.activeElement===this,S.is.searchSelection()&&!b&&(Y||v||(k.forceSelection&&S.forceSelection(),S.hide())),b=!1}},icon:{click:function(e){S.toggle()}},text:{focus:function(e){$=!0,S.focusSearch()}},input:function(e){(S.is.multiple()||S.is.searchSelection())&&S.set.filtered(),clearTimeout(S.timer),S.timer=setTimeout(S.search,k.delay.search)},label:{click:function(t){var n=e(this),i=M.find(D.label),o=i.filter(\".\"+T.active),a=n.nextAll(\".\"+T.active),r=n.prevAll(\".\"+T.active),s=a.length>0?n.nextUntil(a).add(o).add(n):n.prevUntil(r).add(o).add(n);t.shiftKey?(o.removeClass(T.active),s.addClass(T.active)):t.ctrlKey?n.toggleClass(T.active):(o.removeClass(T.active),n.addClass(T.active)),k.onLabelSelect.apply(this,i.filter(\".\"+T.active))}},remove:{click:function(){var t=e(this).parent();t.hasClass(T.active)?S.remove.activeLabels():S.remove.activeLabels(t)}},test:{toggle:function(e){var t=S.is.multiple()?S.show:S.toggle;S.is.bubbledLabelClick(e)||S.is.bubbledIconClick(e)||S.determine.eventOnElement(e,t)&&e.preventDefault()},touch:function(e){S.determine.eventOnElement(e,function(){\"touchstart\"==e.type?S.timer=setTimeout(function(){S.hide()},k.delay.touch):\"touchmove\"==e.type&&clearTimeout(S.timer)}),e.stopPropagation()},hide:function(e){S.determine.eventInModule(e,S.hide)}},select:{mutation:function(t){S.debug(\"<select> modified, recreating menu\");var n=!1;e.each(t,function(t,i){if(e(i.target).is(\"select\")||e(i.addedNodes).is(\"select\"))return n=!0,!0}),n&&(S.disconnect.selectObserver(),S.refresh(),S.setup.select(),S.set.selected(),S.observe.select())}},menu:{mutation:function(t){var n=t[0],i=n.addedNodes?e(n.addedNodes[0]):e(!1),o=n.removedNodes?e(n.removedNodes[0]):e(!1),a=i.add(o),r=a.is(D.addition)||a.closest(D.addition).length>0,s=a.is(D.message)||a.closest(D.message).length>0;r||s?(S.debug(\"Updating item selector cache\"),S.refreshItems()):(S.debug(\"Menu modified, updating selector cache\"),S.refresh())},mousedown:function(){Y=!0},mouseup:function(){Y=!1}},item:{mouseenter:function(t){var n=e(t.target),i=e(this),o=i.children(D.menu),a=i.siblings(D.item).children(D.menu),r=o.length>0;!(o.find(n).length>0)&&r&&(clearTimeout(S.itemTimer),S.itemTimer=setTimeout(function(){S.verbose(\"Showing sub-menu\",o),e.each(a,function(){S.animate.hide(!1,e(this))}),S.animate.show(!1,o)},k.delay.show),t.preventDefault())},mouseleave:function(t){var n=e(this).children(D.menu);n.length>0&&(clearTimeout(S.itemTimer),S.itemTimer=setTimeout(function(){S.verbose(\"Hiding sub-menu\",n),S.animate.hide(!1,n)},k.delay.hide))},click:function(t,i){var o=e(this),a=e(t?t.target:\"\"),r=o.find(D.menu),s=S.get.choiceText(o),l=S.get.choiceValue(o,s),c=r.length>0,u=r.find(a).length>0;S.has.menuSearch()&&e(n.activeElement).blur(),u||c&&!k.allowCategorySelection||(S.is.searchSelection()&&(k.allowAdditions&&S.remove.userAddition(),S.remove.searchTerm(),S.is.focusedOnSearch()||1==i||S.focusSearch(!0)),k.useLabels||(S.remove.filteredItem(),S.set.scrollPosition(o)),S.determine.selectAction.call(this,s,l))}},document:{keydown:function(e){var t=e.which;if(S.is.inObject(t,P)){var n=M.find(D.label),i=n.filter(\".\"+T.active),o=(i.data(E.value),n.index(i)),a=n.length,r=i.length>0,s=i.length>1,l=0===o,c=o+1==a,u=S.is.searchSelection(),d=S.is.focusedOnSearch(),f=S.is.focused(),m=d&&0===S.get.caretPosition();if(u&&!r&&!d)return;t==P.leftArrow?!f&&!m||r?r&&(e.shiftKey?S.verbose(\"Adding previous label to selection\"):(S.verbose(\"Selecting previous label\"),n.removeClass(T.active)),l&&!s?i.addClass(T.active):i.prev(D.siblingLabel).addClass(T.active).end(),e.preventDefault()):(S.verbose(\"Selecting previous label\"),n.last().addClass(T.active)):t==P.rightArrow?(f&&!r&&n.first().addClass(T.active),r&&(e.shiftKey?S.verbose(\"Adding next label to selection\"):(S.verbose(\"Selecting next label\"),n.removeClass(T.active)),c?u?d?n.removeClass(T.active):S.focusSearch():s?i.next(D.siblingLabel).addClass(T.active):i.addClass(T.active):i.next(D.siblingLabel).addClass(T.active),e.preventDefault())):t==P.deleteKey||t==P.backspace?r?(S.verbose(\"Removing active labels\"),c&&u&&!d&&S.focusSearch(),i.last().next(D.siblingLabel).addClass(T.active),S.remove.activeLabels(i),e.preventDefault()):m&&!r&&t==P.backspace&&(S.verbose(\"Removing last label on input backspace\"),i=n.last().addClass(T.active),S.remove.activeLabels(i)):i.removeClass(T.active)}}},keydown:function(e){var t=e.which;if(S.is.inObject(t,P)){var n,i=X.not(D.unselectable).filter(\".\"+T.selected).eq(0),o=Q.children(\".\"+T.active).eq(0),a=i.length>0?i:o,r=a.length>0?a.siblings(\":not(.\"+T.filtered+\")\").addBack():Q.children(\":not(.\"+T.filtered+\")\"),s=a.children(D.menu),l=a.closest(D.menu),c=l.hasClass(T.visible)||l.hasClass(T.animating)||l.parent(D.menu).length>0,u=s.length>0,d=a.length>0,f=a.not(D.unselectable).length>0,m=t==P.delimiter&&k.allowAdditions&&S.is.multiple();if(k.allowAdditions&&k.hideAdditions&&(t==P.enter||m)&&f&&(S.verbose(\"Selecting item from keyboard shortcut\",a),S.event.item.click.call(a,e),S.is.searchSelection()&&S.remove.searchTerm()),S.is.visible()){if((t==P.enter||m)&&(t==P.enter&&d&&u&&!k.allowCategorySelection?(S.verbose(\"Pressed enter on unselectable category, opening sub menu\"),t=P.rightArrow):f&&(S.verbose(\"Selecting item from keyboard shortcut\",a),S.event.item.click.call(a,e),S.is.searchSelection()&&S.remove.searchTerm()),e.preventDefault()),d&&(t==P.leftArrow&&l[0]!==Q[0]&&(S.verbose(\"Left key pressed, closing sub-menu\"),S.animate.hide(!1,l),a.removeClass(T.selected),l.closest(D.item).addClass(T.selected),e.preventDefault()),t==P.rightArrow&&u&&(S.verbose(\"Right key pressed, opening sub-menu\"),S.animate.show(!1,s),a.removeClass(T.selected),s.find(D.item).eq(0).addClass(T.selected),e.preventDefault())),t==P.upArrow){if(n=d&&c?a.prevAll(D.item+\":not(\"+D.unselectable+\")\").eq(0):X.eq(0),r.index(n)<0)return S.verbose(\"Up key pressed but reached top of current menu\"),void e.preventDefault();S.verbose(\"Up key pressed, changing active item\"),a.removeClass(T.selected),n.addClass(T.selected),S.set.scrollPosition(n),k.selectOnKeydown&&S.is.single()&&S.set.selectedItem(n),e.preventDefault()}if(t==P.downArrow){if(0===(n=d&&c?n=a.nextAll(D.item+\":not(\"+D.unselectable+\")\").eq(0):X.eq(0)).length)return S.verbose(\"Down key pressed but reached bottom of current menu\"),void e.preventDefault();S.verbose(\"Down key pressed, changing active item\"),X.removeClass(T.selected),n.addClass(T.selected),S.set.scrollPosition(n),k.selectOnKeydown&&S.is.single()&&S.set.selectedItem(n),e.preventDefault()}t==P.pageUp&&(S.scrollPage(\"up\"),e.preventDefault()),t==P.pageDown&&(S.scrollPage(\"down\"),e.preventDefault()),t==P.escape&&(S.verbose(\"Escape key pressed, closing dropdown\"),S.hide())}else m&&e.preventDefault(),t!=P.downArrow||S.is.visible()||(S.verbose(\"Down key pressed, showing dropdown\"),S.show(),e.preventDefault())}else S.has.search()||S.set.selectedLetter(String.fromCharCode(t))}},trigger:{change:function(){var e=n.createEvent(\"HTMLEvents\"),t=U[0];t&&(S.verbose(\"Triggering native change event\"),e.initEvent(\"change\",!0,!1),t.dispatchEvent(e))}},determine:{selectAction:function(t,n){S.verbose(\"Determining action\",k.action),e.isFunction(S.action[k.action])?(S.verbose(\"Triggering preset action\",k.action,t,n),S.action[k.action].call(K,t,n,this)):e.isFunction(k.action)?(S.verbose(\"Triggering user action\",k.action,t,n),k.action.call(K,t,n,this)):S.error(q.action,k.action)},eventInModule:function(t,i){var o=e(t.target),a=o.closest(n.documentElement).length>0,r=o.closest(M).length>0;return i=e.isFunction(i)?i:function(){},a&&!r?(S.verbose(\"Triggering event\",i),i(),!0):(S.verbose(\"Event occurred in dropdown, canceling callback\"),!1)},eventOnElement:function(t,i){var o=e(t.target),a=o.closest(D.siblingLabel),r=n.body.contains(t.target),s=0===M.find(a).length,l=0===o.closest(Q).length;return i=e.isFunction(i)?i:function(){},r&&s&&l?(S.verbose(\"Triggering event\",i),i(),!0):(S.verbose(\"Event occurred in dropdown menu, canceling callback\"),!1)}},action:{nothing:function(){},activate:function(t,n,o){if(n=n!==i?n:t,S.can.activate(e(o))){if(S.set.selected(n,e(o)),S.is.multiple()&&!S.is.allFiltered())return;S.hideAndClear()}},select:function(t,n,o){if(n=n!==i?n:t,S.can.activate(e(o))){if(S.set.value(n,t,e(o)),S.is.multiple()&&!S.is.allFiltered())return;S.hideAndClear()}},combo:function(t,n,o){n=n!==i?n:t,S.set.selected(n,e(o)),S.hideAndClear()},hide:function(e,t,n){S.set.value(t,e),S.hideAndClear()}},get:{id:function(){return x},defaultText:function(){return M.data(E.defaultText)},defaultValue:function(){return M.data(E.defaultValue)},placeholderText:function(){return\"auto\"!=k.placeholder&&\"string\"==typeof k.placeholder?k.placeholder:M.data(E.placeholderText)||\"\"},text:function(){return V.text()},query:function(){return e.trim(N.val())},searchWidth:function(e){return e=e!==i?e:N.val(),H.text(e),Math.ceil(H.width()+1)},selectionCount:function(){var t=S.get.values();return S.is.multiple()?e.isArray(t)?t.length:0:\"\"!==S.get.value()?1:0},transition:function(e){return\"auto\"==k.transition?S.is.upward(e)?\"slide up\":\"slide down\":k.transition},userValues:function(){var t=S.get.values();return!!t&&(t=e.isArray(t)?t:[t],e.grep(t,function(e){return!1===S.get.item(e)}))},uniqueArray:function(t){return e.grep(t,function(n,i){return e.inArray(n,t)===i})},caretPosition:function(){var e,t,i=N.get(0);return\"selectionStart\"in i?i.selectionStart:n.selection?(i.focus(),t=(e=n.selection.createRange()).text.length,e.moveStart(\"character\",-i.value.length),e.text.length-t):void 0},value:function(){var t=U.length>0?U.val():M.data(E.value),n=e.isArray(t)&&1===t.length&&\"\"===t[0];return t===i||n?\"\":t},values:function(){var e=S.get.value();return\"\"===e?\"\":!S.has.selectInput()&&S.is.multiple()?\"string\"==typeof e?e.split(k.delimiter):\"\":e},remoteValues:function(){var t=S.get.values(),n=!1;return t&&(\"string\"==typeof t&&(t=[t]),e.each(t,function(e,t){var i=S.read.remoteData(t);S.verbose(\"Restoring value from session data\",i,t),i&&(n||(n={}),n[t]=i)})),n},choiceText:function(t,n){if(n=n!==i?n:k.preserveHTML,t)return t.find(D.menu).length>0&&(S.verbose(\"Retrieving text of element with sub-menu\"),(t=t.clone()).find(D.menu).remove(),t.find(D.menuIcon).remove()),t.data(E.text)!==i?t.data(E.text):n?e.trim(t.html()):e.trim(t.text())},choiceValue:function(t,n){return n=n||S.get.choiceText(t),!!t&&(t.data(E.value)!==i?String(t.data(E.value)):\"string\"==typeof n?e.trim(n.toLowerCase()):String(n))},inputEvent:function(){var e=N[0];return!!e&&(e.oninput!==i?\"input\":e.onpropertychange!==i?\"propertychange\":\"keyup\")},selectValues:function(){var t={values:[]};return M.find(\"option\").each(function(){var n=e(this),o=n.html(),a=n.attr(\"disabled\"),r=n.attr(\"value\")!==i?n.attr(\"value\"):o;\"auto\"===k.placeholder&&\"\"===r?t.placeholder=o:t.values.push({name:o,value:r,disabled:a})}),k.placeholder&&\"auto\"!==k.placeholder&&(S.debug(\"Setting placeholder value to\",k.placeholder),t.placeholder=k.placeholder),k.sortSelect?(t.values.sort(function(e,t){return e.name>t.name?1:-1}),S.debug(\"Retrieved and sorted values from select\",t)):S.debug(\"Retrieved values from select\",t),t},activeItem:function(){return X.filter(\".\"+T.active)},selectedItem:function(){var e=X.not(D.unselectable).filter(\".\"+T.selected);return e.length>0?e:X.eq(0)},itemWithAdditions:function(e){var t=S.get.item(e),n=S.create.userChoice(e);return n&&n.length>0&&(t=t.length>0?t.add(n):n),t},item:function(t,n){var o,a,r=!1;return t=t!==i?t:S.get.values()!==i?S.get.values():S.get.text(),o=a?t.length>0:t!==i&&null!==t,a=S.is.multiple()&&e.isArray(t),n=\"\"===t||0===t||(n||!1),o&&X.each(function(){var o=e(this),s=S.get.choiceText(o),l=S.get.choiceValue(o,s);if(null!==l&&l!==i)if(a)-1===e.inArray(String(l),t)&&-1===e.inArray(s,t)||(r=r?r.add(o):o);else if(n){if(S.verbose(\"Ambiguous dropdown value using strict type check\",o,t),l===t||s===t)return r=o,!0}else if(String(l)==String(t)||s==t)return S.verbose(\"Found select item by value\",l,t),r=o,!0}),r}},check:{maxSelections:function(e){return!k.maxSelections||((e=e!==i?e:S.get.selectionCount())>=k.maxSelections?(S.debug(\"Maximum selection count reached\"),k.useLabels&&(X.addClass(T.filtered),S.add.message(A.maxSelections)),!0):(S.verbose(\"No longer at maximum selection count\"),S.remove.message(),S.remove.filteredItem(),S.is.searchSelection()&&S.filterItems(),!1))}},restore:{defaults:function(){S.clear(),S.restore.defaultText(),S.restore.defaultValue()},defaultText:function(){var e=S.get.defaultText();e===S.get.placeholderText?(S.debug(\"Restoring default placeholder text\",e),S.set.placeholderText(e)):(S.debug(\"Restoring default text\",e),S.set.text(e))},placeholderText:function(){S.set.placeholderText()},defaultValue:function(){var e=S.get.defaultValue();e!==i&&(S.debug(\"Restoring default value\",e),\"\"!==e?(S.set.value(e),S.set.selected()):(S.remove.activeItem(),S.remove.selectedItem()))},labels:function(){k.allowAdditions&&(k.useLabels||(S.error(q.labels),k.useLabels=!0),S.debug(\"Restoring selected values\"),S.create.userLabels()),S.check.maxSelections()},selected:function(){S.restore.values(),S.is.multiple()?(S.debug(\"Restoring previously selected values and labels\"),S.restore.labels()):S.debug(\"Restoring previously selected values\")},values:function(){S.set.initialLoad(),k.apiSettings&&k.saveRemoteData&&S.get.remoteValues()?S.restore.remoteValues():S.set.selected(),S.remove.initialLoad()},remoteValues:function(){var t=S.get.remoteValues();S.debug(\"Recreating selected from session data\",t),t&&(S.is.single()?e.each(t,function(e,t){S.set.text(t)}):e.each(t,function(e,t){S.add.label(e,t)}))}},read:{remoteData:function(e){var n;if(t.Storage!==i)return(n=sessionStorage.getItem(e))!==i&&n;S.error(q.noStorage)}},save:{defaults:function(){S.save.defaultText(),S.save.placeholderText(),S.save.defaultValue()},defaultValue:function(){var e=S.get.value();S.verbose(\"Saving default value as\",e),M.data(E.defaultValue,e)},defaultText:function(){var e=S.get.text();S.verbose(\"Saving default text as\",e),M.data(E.defaultText,e)},placeholderText:function(){var e;!1!==k.placeholder&&V.hasClass(T.placeholder)&&(e=S.get.text(),S.verbose(\"Saving placeholder text as\",e),M.data(E.placeholderText,e))},remoteData:function(e,n){t.Storage!==i?(S.verbose(\"Saving remote data to session storage\",n,e),sessionStorage.setItem(n,e)):S.error(q.noStorage)}},clear:function(){S.is.multiple()&&k.useLabels?S.remove.labels():(S.remove.activeItem(),S.remove.selectedItem()),S.set.placeholderText(),S.clearValue()},clearValue:function(){S.set.value(\"\")},scrollPage:function(e,t){var n,i,o=t||S.get.selectedItem(),a=o.closest(D.menu),r=a.outerHeight(),s=a.scrollTop(),l=X.eq(0).outerHeight(),c=Math.floor(r/l),u=(a.prop(\"scrollHeight\"),\"up\"==e?s-l*c:s+l*c),d=X.not(D.unselectable);i=\"up\"==e?d.index(o)-c:d.index(o)+c,(n=(\"up\"==e?i>=0:i<d.length)?d.eq(i):\"up\"==e?d.first():d.last()).length>0&&(S.debug(\"Scrolling page\",e,n),o.removeClass(T.selected),n.addClass(T.selected),k.selectOnKeydown&&S.is.single()&&S.set.selectedItem(n),a.scrollTop(u))},set:{filtered:function(){var e=S.is.multiple(),t=S.is.searchSelection(),n=e&&t,i=t?S.get.query():\"\",o=\"string\"==typeof i&&i.length>0,a=S.get.searchWidth(),r=\"\"!==i;e&&o&&(S.verbose(\"Adjusting input width\",a,k.glyphWidth),N.css(\"width\",a)),o||n&&r?(S.verbose(\"Hiding placeholder text\"),V.addClass(T.filtered)):(!e||n&&!r)&&(S.verbose(\"Showing placeholder text\"),V.removeClass(T.filtered))},empty:function(){M.addClass(T.empty)},loading:function(){M.addClass(T.loading)},placeholderText:function(e){e=e||S.get.placeholderText(),S.debug(\"Setting placeholder text\",e),S.set.text(e),V.addClass(T.placeholder)},tabbable:function(){S.is.searchSelection()?(S.debug(\"Added tabindex to searchable dropdown\"),N.val(\"\").attr(\"tabindex\",0),Q.attr(\"tabindex\",-1)):(S.debug(\"Added tabindex to dropdown\"),M.attr(\"tabindex\")===i&&(M.attr(\"tabindex\",0),Q.attr(\"tabindex\",-1)))},initialLoad:function(){S.verbose(\"Setting initial load\"),h=!0},activeItem:function(e){k.allowAdditions&&e.filter(D.addition).length>0?e.addClass(T.filtered):e.addClass(T.active)},partialSearch:function(e){var t=S.get.query().length;N.val(e.substr(0,t))},scrollPosition:function(e,t){var n,o,a,r,s,l;n=(e=e||S.get.selectedItem()).closest(D.menu),o=e&&e.length>0,t=t!==i&&t,e&&n.length>0&&o&&(e.position().top,n.addClass(T.loading),a=(r=n.scrollTop())-n.offset().top+e.offset().top,t||(l=r+n.height()<a+5,s=a-5<r),S.debug(\"Scrolling to active item\",a),(t||s||l)&&n.scrollTop(a),n.removeClass(T.loading))},text:function(e){\"select\"!==k.action&&(\"combo\"==k.action?(S.debug(\"Changing combo button text\",e,B),k.preserveHTML?B.html(e):B.text(e)):(e!==S.get.placeholderText()&&V.removeClass(T.placeholder),S.debug(\"Changing text\",e,V),V.removeClass(T.filtered),k.preserveHTML?V.html(e):V.text(e)))},selectedItem:function(e){var t=S.get.choiceValue(e),n=S.get.choiceText(e,!1),i=S.get.choiceText(e,!0);S.debug(\"Setting user selection to item\",e),S.remove.activeItem(),S.set.partialSearch(n),S.set.activeItem(e),S.set.selected(t,e),S.set.text(i)},selectedLetter:function(t){var n,i=X.filter(\".\"+T.selected),o=!1;i.length>0&&S.has.firstLetter(i,t)&&(n=i.nextAll(X).eq(0),S.has.firstLetter(n,t)&&(o=n)),o||X.each(function(){if(S.has.firstLetter(e(this),t))return o=e(this),!1}),o&&(S.verbose(\"Scrolling to next value with letter\",t),S.set.scrollPosition(o),i.removeClass(T.selected),o.addClass(T.selected),k.selectOnKeydown&&S.is.single()&&S.set.selectedItem(o))},direction:function(e){\"auto\"==k.direction?(S.remove.upward(),S.can.openDownward(e)?S.remove.upward(e):S.set.upward(e),S.is.leftward(e)||S.can.openRightward(e)||S.set.leftward(e)):\"upward\"==k.direction&&S.set.upward(e)},upward:function(e){(e||M).addClass(T.upward)},leftward:function(e){(e||Q).addClass(T.leftward)},value:function(e,t,n){var o=S.escape.value(e),a=U.length>0,r=S.get.values(),s=e!==i?String(e):e;if(a){if(!k.allowReselection&&s==r&&(S.verbose(\"Skipping value update already same value\",e,r),!S.is.initialLoad()))return;S.is.single()&&S.has.selectInput()&&S.can.extendSelect()&&(S.debug(\"Adding user option\",e),S.add.optionValue(e)),S.debug(\"Updating input value\",o,r),Z=!0,U.val(o),!1===k.fireOnInit&&S.is.initialLoad()?S.debug(\"Input native change event ignored on initial load\"):S.trigger.change(),Z=!1}else S.verbose(\"Storing value in metadata\",o,U),o!==r&&M.data(E.value,s);!1===k.fireOnInit&&S.is.initialLoad()?S.verbose(\"No callback on initial load\",k.onChange):k.onChange.call(K,e,t,n)},active:function(){M.addClass(T.active)},multiple:function(){M.addClass(T.multiple)},visible:function(){M.addClass(T.visible)},exactly:function(e,t){S.debug(\"Setting selected to exact values\"),S.clear(),S.set.selected(e,t)},selected:function(t,n){var i=S.is.multiple();(n=k.allowAdditions?n||S.get.itemWithAdditions(t):n||S.get.item(t))&&(S.debug(\"Setting selected menu item to\",n),S.is.multiple()&&S.remove.searchWidth(),S.is.single()?(S.remove.activeItem(),S.remove.selectedItem()):k.useLabels&&S.remove.selectedItem(),n.each(function(){var t=e(this),o=S.get.choiceText(t),a=S.get.choiceValue(t,o),r=t.hasClass(T.filtered),s=t.hasClass(T.active),l=t.hasClass(T.addition),c=i&&1==n.length;i?!s||l?(k.apiSettings&&k.saveRemoteData&&S.save.remoteData(o,a),k.useLabels?(S.add.label(a,o,c),S.add.value(a,o,t),S.set.activeItem(t),S.filterActive(),S.select.nextAvailable(n)):(S.add.value(a,o,t),S.set.text(S.add.variables(A.count)),S.set.activeItem(t))):r||(S.debug(\"Selected active value, removing label\"),S.remove.selected(a)):(k.apiSettings&&k.saveRemoteData&&S.save.remoteData(o,a),S.set.text(o),S.set.value(a,o,t),t.addClass(T.active).addClass(T.selected))}))}},add:{label:function(t,n,i){var o,a=S.is.searchSelection()?N:V,r=S.escape.value(t);k.ignoreCase&&(r=r.toLowerCase()),o=e(\"<a />\").addClass(T.label).attr(\"data-\"+E.value,r).html(j.label(r,n)),o=k.onLabelCreate.call(o,r,n),S.has.label(t)?S.debug(\"User selection already exists, skipping\",r):(k.label.variation&&o.addClass(k.label.variation),!0===i?(S.debug(\"Animating in label\",o),o.addClass(T.hidden).insertBefore(a).transition(k.label.transition,k.label.duration)):(S.debug(\"Adding selection label\",o),o.insertBefore(a)))},message:function(t){var n=Q.children(D.message),i=k.templates.message(S.add.variables(t));n.length>0?n.html(i):n=e(\"<div/>\").html(i).addClass(T.message).appendTo(Q)},optionValue:function(t){var n=S.escape.value(t);U.find('option[value=\"'+S.escape.string(n)+'\"]').length>0||(S.disconnect.selectObserver(),S.is.single()&&(S.verbose(\"Removing previous user addition\"),U.find(\"option.\"+T.addition).remove()),e(\"<option/>\").prop(\"value\",n).addClass(T.addition).html(t).appendTo(U),S.verbose(\"Adding user addition as an <option>\",t),S.observe.select())},userSuggestion:function(e){var t,n=Q.children(D.addition),i=S.get.item(e),o=i&&i.not(D.addition).length,a=n.length>0;k.useLabels&&S.has.maxSelections()||(\"\"===e||o?n.remove():(a?(n.data(E.value,e).data(E.text,e).attr(\"data-\"+E.value,e).attr(\"data-\"+E.text,e).removeClass(T.filtered),k.hideAdditions||(t=k.templates.addition(S.add.variables(A.addResult,e)),n.html(t)),S.verbose(\"Replacing user suggestion with new value\",n)):((n=S.create.userChoice(e)).prependTo(Q),S.verbose(\"Adding item choice to menu corresponding with user choice addition\",n)),k.hideAdditions&&!S.is.allFiltered()||n.addClass(T.selected).siblings().removeClass(T.selected),S.refreshItems()))},variables:function(e,t){var n,i,o=-1!==e.search(\"{count}\"),a=-1!==e.search(\"{maxCount}\"),r=-1!==e.search(\"{term}\");return S.verbose(\"Adding templated variables to message\",e),o&&(n=S.get.selectionCount(),e=e.replace(\"{count}\",n)),a&&(n=S.get.selectionCount(),e=e.replace(\"{maxCount}\",k.maxSelections)),r&&(i=t||S.get.query(),e=e.replace(\"{term}\",i)),e},value:function(t,n,i){var o,a=S.get.values();S.has.value(t)?S.debug(\"Value already selected\"):\"\"!==t?(e.isArray(a)?(o=a.concat([t]),o=S.get.uniqueArray(o)):o=[t],S.has.selectInput()?S.can.extendSelect()&&(S.debug(\"Adding value to select\",t,o,U),S.add.optionValue(t)):(o=o.join(k.delimiter),S.debug(\"Setting hidden input to delimited value\",o,U)),!1===k.fireOnInit&&S.is.initialLoad()?S.verbose(\"Skipping onadd callback on initial load\",k.onAdd):k.onAdd.call(K,t,n,i),S.set.value(o,t,n,i),S.check.maxSelections()):S.debug(\"Cannot select blank values from multiselect\")}},remove:{active:function(){M.removeClass(T.active)},activeLabel:function(){M.find(D.label).removeClass(T.active)},empty:function(){M.removeClass(T.empty)},loading:function(){M.removeClass(T.loading)},initialLoad:function(){h=!1},upward:function(e){(e||M).removeClass(T.upward)},leftward:function(e){(e||Q).removeClass(T.leftward)},visible:function(){M.removeClass(T.visible)},activeItem:function(){X.removeClass(T.active)},filteredItem:function(){k.useLabels&&S.has.maxSelections()||(k.useLabels&&S.is.multiple()?X.not(\".\"+T.active).removeClass(T.filtered):X.removeClass(T.filtered),S.remove.empty())},optionValue:function(e){var t=S.escape.value(e),n=U.find('option[value=\"'+S.escape.string(t)+'\"]');n.length>0&&n.hasClass(T.addition)&&(C&&(C.disconnect(),S.verbose(\"Temporarily disconnecting mutation observer\")),n.remove(),S.verbose(\"Removing user addition as an <option>\",t),C&&C.observe(U[0],{childList:!0,subtree:!0}))},message:function(){Q.children(D.message).remove()},searchWidth:function(){N.css(\"width\",\"\")},searchTerm:function(){S.verbose(\"Cleared search term\"),N.val(\"\"),S.set.filtered()},userAddition:function(){X.filter(D.addition).remove()},selected:function(t,n){if(!(n=k.allowAdditions?n||S.get.itemWithAdditions(t):n||S.get.item(t)))return!1;n.each(function(){var t=e(this),n=S.get.choiceText(t),i=S.get.choiceValue(t,n);S.is.multiple()?k.useLabels?(S.remove.value(i,n,t),S.remove.label(i)):(S.remove.value(i,n,t),0===S.get.selectionCount()?S.set.placeholderText():S.set.text(S.add.variables(A.count))):S.remove.value(i,n,t),t.removeClass(T.filtered).removeClass(T.active),k.useLabels&&t.removeClass(T.selected)})},selectedItem:function(){X.removeClass(T.selected)},value:function(e,t,n){var i,o=S.get.values();S.has.selectInput()?(S.verbose(\"Input is <select> removing selected option\",e),i=S.remove.arrayValue(e,o),S.remove.optionValue(e)):(S.verbose(\"Removing from delimited values\",e),i=(i=S.remove.arrayValue(e,o)).join(k.delimiter)),!1===k.fireOnInit&&S.is.initialLoad()?S.verbose(\"No callback on initial load\",k.onRemove):k.onRemove.call(K,e,t,n),S.set.value(i,t,n),S.check.maxSelections()},arrayValue:function(t,n){return e.isArray(n)||(n=[n]),n=e.grep(n,function(e){return t!=e}),S.verbose(\"Removed value from delimited string\",t,n),n},label:function(e,t){var n=M.find(D.label).filter(\"[data-\"+E.value+'=\"'+S.escape.string(e)+'\"]');S.verbose(\"Removing label\",n),n.remove()},activeLabels:function(e){e=e||M.find(D.label).filter(\".\"+T.active),S.verbose(\"Removing active label selections\",e),S.remove.labels(e)},labels:function(t){t=t||M.find(D.label),S.verbose(\"Removing labels\",t),t.each(function(){var t=e(this),n=t.data(E.value),o=n!==i?String(n):n,a=S.is.userValue(o);!1!==k.onLabelRemove.call(t,n)?(S.remove.message(),a?(S.remove.value(o),S.remove.label(o)):S.remove.selected(o)):S.debug(\"Label remove callback cancelled removal\")})},tabbable:function(){S.is.searchSelection()?(S.debug(\"Searchable dropdown initialized\"),N.removeAttr(\"tabindex\"),Q.removeAttr(\"tabindex\")):(S.debug(\"Simple selection dropdown initialized\"),M.removeAttr(\"tabindex\"),Q.removeAttr(\"tabindex\"))}},has:{menuSearch:function(){return S.has.search()&&N.closest(Q).length>0},search:function(){return N.length>0},sizer:function(){return H.length>0},selectInput:function(){return U.is(\"select\")},minCharacters:function(e){return!k.minCharacters||(e=e!==i?String(e):String(S.get.query())).length>=k.minCharacters},firstLetter:function(e,t){var n;return!(!e||0===e.length||\"string\"!=typeof t)&&(n=S.get.choiceText(e,!1),(t=t.toLowerCase())==String(n).charAt(0).toLowerCase())},input:function(){return U.length>0},items:function(){return X.length>0},menu:function(){return Q.length>0},message:function(){return 0!==Q.children(D.message).length},label:function(e){var t=S.escape.value(e),n=M.find(D.label);return k.ignoreCase&&(t=t.toLowerCase()),n.filter(\"[data-\"+E.value+'=\"'+S.escape.string(t)+'\"]').length>0},maxSelections:function(){return k.maxSelections&&S.get.selectionCount()>=k.maxSelections},allResultsFiltered:function(){var e=X.not(D.addition);return e.filter(D.unselectable).length===e.length},userSuggestion:function(){return Q.children(D.addition).length>0},query:function(){return\"\"!==S.get.query()},value:function(e){return k.ignoreCase?S.has.valueIgnoringCase(e):S.has.valueMatchingCase(e)},valueMatchingCase:function(t){var n=S.get.values();return!!(e.isArray(n)?n&&-1!==e.inArray(t,n):n==t)},valueIgnoringCase:function(t){var n=S.get.values(),i=!1;return e.isArray(n)||(n=[n]),e.each(n,function(e,n){if(String(t).toLowerCase()==String(n).toLowerCase())return i=!0,!1}),i}},is:{active:function(){return M.hasClass(T.active)},animatingInward:function(){return Q.transition(\"is inward\")},animatingOutward:function(){return Q.transition(\"is outward\")},bubbledLabelClick:function(t){return e(t.target).is(\"select, input\")&&M.closest(\"label\").length>0},bubbledIconClick:function(t){return e(t.target).closest(W).length>0},alreadySetup:function(){return M.is(\"select\")&&M.parent(D.dropdown).data(I)!==i&&0===M.prev().length},animating:function(e){return e?e.transition&&e.transition(\"is animating\"):Q.transition&&Q.transition(\"is animating\")},leftward:function(e){return(e||Q).hasClass(T.leftward)},disabled:function(){return M.hasClass(T.disabled)},focused:function(){return n.activeElement===M[0]},focusedOnSearch:function(){return n.activeElement===N[0]},allFiltered:function(){return(S.is.multiple()||S.has.search())&&!(0==k.hideAdditions&&S.has.userSuggestion())&&!S.has.message()&&S.has.allResultsFiltered()},hidden:function(e){return!S.is.visible(e)},initialLoad:function(){return h},inObject:function(t,n){var i=!1;return e.each(n,function(e,n){if(n==t)return i=!0,!0}),i},multiple:function(){return M.hasClass(T.multiple)},remote:function(){return k.apiSettings&&S.can.useAPI()},single:function(){return!S.is.multiple()},selectMutation:function(t){var n=!1;return e.each(t,function(t,i){if(i.target&&e(i.target).is(\"select\"))return n=!0,!0}),n},search:function(){return M.hasClass(T.search)},searchSelection:function(){return S.has.search()&&1===N.parent(D.dropdown).length},selection:function(){return M.hasClass(T.selection)},userValue:function(t){return-1!==e.inArray(t,S.get.userValues())},upward:function(e){return(e||M).hasClass(T.upward)},visible:function(e){return e?e.hasClass(T.visible):Q.hasClass(T.visible)},verticallyScrollableContext:function(){var e=L.get(0)!==t&&L.css(\"overflow-y\");return\"auto\"==e||\"scroll\"==e},horizontallyScrollableContext:function(){var e=L.get(0)!==t&&L.css(\"overflow-X\");return\"auto\"==e||\"scroll\"==e}},can:{activate:function(e){return!!k.useLabels||(!S.has.maxSelections()||!(!S.has.maxSelections()||!e.hasClass(T.active)))},openDownward:function(e){var n,i,o=e||Q,a=!0;return o.addClass(T.loading),i={context:{offset:L.get(0)===t?{top:0,left:0}:L.offset(),scrollTop:L.scrollTop(),height:L.outerHeight()},menu:{offset:o.offset(),height:o.outerHeight()}},S.is.verticallyScrollableContext()&&(i.menu.offset.top+=i.context.scrollTop),(n={above:i.context.scrollTop<=i.menu.offset.top-i.context.offset.top-i.menu.height,below:i.context.scrollTop+i.context.height>=i.menu.offset.top-i.context.offset.top+i.menu.height}).below?(S.verbose(\"Dropdown can fit in context downward\",n),a=!0):n.below||n.above?(S.verbose(\"Dropdown cannot fit below, opening upward\",n),a=!1):(S.verbose(\"Dropdown cannot fit in either direction, favoring downward\",n),a=!0),o.removeClass(T.loading),a},openRightward:function(e){var n,i,o=e||Q,a=!0;return o.addClass(T.loading),i={context:{offset:L.get(0)===t?{top:0,left:0}:L.offset(),scrollLeft:L.scrollLeft(),width:L.outerWidth()},menu:{offset:o.offset(),width:o.outerWidth()}},S.is.horizontallyScrollableContext()&&(i.menu.offset.left+=i.context.scrollLeft),(n=i.menu.offset.left-i.context.offset.left+i.menu.width>=i.context.scrollLeft+i.context.width)&&(S.verbose(\"Dropdown cannot fit in context rightward\",n),a=!1),o.removeClass(T.loading),a},click:function(){return c||\"click\"==k.on},extendSelect:function(){return k.allowAdditions||k.apiSettings},show:function(){return!S.is.disabled()&&(S.has.items()||S.has.message())},useAPI:function(){return e.fn.api!==i}},animate:{show:function(t,n){var o,a=n||Q,r=n?function(){}:function(){S.hideSubMenus(),S.hideOthers(),S.set.active()};t=e.isFunction(t)?t:function(){},S.verbose(\"Doing menu show animation\",a),S.set.direction(n),o=S.get.transition(n),S.is.selection()&&S.set.scrollPosition(S.get.selectedItem(),!0),(S.is.hidden(a)||S.is.animating(a))&&(\"none\"==o?(r(),a.transition(\"show\"),t.call(K)):e.fn.transition!==i&&M.transition(\"is supported\")?a.transition({animation:o+\" in\",debug:k.debug,verbose:k.verbose,duration:k.duration,queue:!0,onStart:r,onComplete:function(){t.call(K)}}):S.error(q.noTransition,o))},hide:function(t,n){var o=n||Q,a=(n?k.duration:k.duration,n?function(){}:function(){S.can.click()&&S.unbind.intent(),S.remove.active()}),r=S.get.transition(n);t=e.isFunction(t)?t:function(){},(S.is.visible(o)||S.is.animating(o))&&(S.verbose(\"Doing menu hide animation\",o),\"none\"==r?(a(),o.transition(\"hide\"),t.call(K)):e.fn.transition!==i&&M.transition(\"is supported\")?o.transition({animation:r+\" out\",duration:k.duration,debug:k.debug,verbose:k.verbose,queue:!1,onStart:a,onComplete:function(){t.call(K)}}):S.error(q.transition))}},hideAndClear:function(){S.remove.searchTerm(),S.has.maxSelections()||(S.has.search()?S.hide(function(){S.remove.filteredItem()}):S.hide())},delay:{show:function(){S.verbose(\"Delaying show event to ensure user intent\"),clearTimeout(S.timer),S.timer=setTimeout(S.show,k.delay.show)},hide:function(){S.verbose(\"Delaying hide event to ensure user intent\"),clearTimeout(S.timer),S.timer=setTimeout(S.hide,k.delay.hide)}},escape:{value:function(t){var n=e.isArray(t),i=\"string\"==typeof t,o=!i&&!n,a=i&&-1!==t.search(O.quote),r=[];return o||!a?t:(S.debug(\"Encoding quote values for use in select\",t),n?(e.each(t,function(e,t){r.push(t.replace(O.quote,\""\"))}),r):t.replace(O.quote,\""\"))},string:function(e){return(e=String(e)).replace(O.escape,\"\\\\$&\")}},setting:function(t,n){if(S.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,k,t);else{if(n===i)return k[t];e.isPlainObject(k[t])?e.extend(!0,k[t],n):k[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,S,t);else{if(n===i)return S[t];S[t]=n}},debug:function(){!k.silent&&k.debug&&(k.performance?S.performance.log(arguments):(S.debug=Function.prototype.bind.call(console.info,console,k.name+\":\"),S.debug.apply(console,arguments)))},verbose:function(){!k.silent&&k.verbose&&k.debug&&(k.performance?S.performance.log(arguments):(S.verbose=Function.prototype.bind.call(console.info,console,k.name+\":\"),S.verbose.apply(console,arguments)))},error:function(){k.silent||(S.error=Function.prototype.bind.call(console.error,console,k.name+\":\"),S.error.apply(console,arguments))},performance:{log:function(e){var t,n;k.performance&&(n=(t=(new Date).getTime())-(u||t),u=t,d.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:K,\"Execution Time\":n})),clearTimeout(S.performance.timer),S.performance.timer=setTimeout(S.performance.display,500)},display:function(){var t=k.name+\":\",n=0;u=!1,clearTimeout(S.performance.timer),e.each(d,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",l&&(t+=\" '\"+l+\"'\"),(console.group!==i||console.table!==i)&&d.length>0&&(console.groupCollapsed(t),console.table?console.table(d):e.each(d,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),d=[]}},invoke:function(t,n,o){var r,s,l,c=J;return n=n||g,o=K||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(S.error(q.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},m?(J===i&&S.initialize(),S.invoke(f)):(J!==i&&J.invoke(\"destroy\"),S.initialize())}),a!==i?a:r},e.fn.dropdown.settings={silent:!1,debug:!1,verbose:!1,performance:!0,on:\"click\",action:\"activate\",values:!1,apiSettings:!1,selectOnKeydown:!0,minCharacters:0,filterRemoteData:!1,saveRemoteData:!0,throttle:200,context:t,direction:\"auto\",keepOnScreen:!0,match:\"both\",fullTextSearch:!1,placeholder:\"auto\",preserveHTML:!0,sortSelect:!1,forceSelection:!0,allowAdditions:!1,ignoreCase:!1,hideAdditions:!0,maxSelections:!1,useLabels:!0,delimiter:\",\",showOnFocus:!0,allowReselection:!1,allowTab:!0,allowCategorySelection:!1,fireOnInit:!1,transition:\"auto\",duration:200,glyphWidth:1.037,label:{transition:\"scale\",duration:200,variation:!1},delay:{hide:300,show:200,search:20,touch:50},onChange:function(e,t,n){},onAdd:function(e,t,n){},onRemove:function(e,t,n){},onLabelSelect:function(e){},onLabelCreate:function(t,n){return e(this)},onLabelRemove:function(e){return!0},onNoResults:function(e){return!0},onShow:function(){},onHide:function(){},name:\"Dropdown\",namespace:\"dropdown\",message:{addResult:\"Add <b>{term}</b>\",count:\"{count} selected\",maxSelections:\"Max {maxCount} selections\",noResults:\"No results found.\",serverError:\"There was an error contacting the server\"},error:{action:\"You called a dropdown action that was not defined\",alreadySetup:\"Once a select has been initialized behaviors must be called on the created ui dropdown\",labels:\"Allowing user additions currently requires the use of labels.\",missingMultiple:\"<select> requires multiple property to be set to correctly preserve multiple values\",method:\"The method you called is not defined.\",noAPI:\"The API module is required to load resources remotely\",noStorage:\"Saving remote data requires session storage\",noTransition:\"This module requires ui transitions <https://github.com/Semantic-Org/UI-Transition>\"},regExp:{escape:/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,quote:/\"/g},metadata:{defaultText:\"defaultText\",defaultValue:\"defaultValue\",placeholderText:\"placeholder\",text:\"text\",value:\"value\"},fields:{remoteValues:\"results\",values:\"values\",disabled:\"disabled\",name:\"name\",value:\"value\",text:\"text\"},keys:{backspace:8,delimiter:188,deleteKey:46,enter:13,escape:27,pageUp:33,pageDown:34,leftArrow:37,upArrow:38,rightArrow:39,downArrow:40},selector:{addition:\".addition\",dropdown:\".ui.dropdown\",hidden:\".hidden\",icon:\"> .dropdown.icon\",input:'> input[type=\"hidden\"], > select',item:\".item\",label:\"> .label\",remove:\"> .label > .delete.icon\",siblingLabel:\".label\",menu:\".menu\",message:\".message\",menuIcon:\".dropdown.icon\",search:\"input.search, .menu > .search > input, .menu input.search\",sizer:\"> input.sizer\",text:\"> .text:not(.icon)\",unselectable:\".disabled, .filtered\"},className:{active:\"active\",addition:\"addition\",animating:\"animating\",disabled:\"disabled\",empty:\"empty\",dropdown:\"ui dropdown\",filtered:\"filtered\",hidden:\"hidden transition\",item:\"item\",label:\"ui label\",loading:\"loading\",menu:\"menu\",message:\"message\",multiple:\"multiple\",placeholder:\"default\",sizer:\"sizer\",search:\"search\",selected:\"selected\",selection:\"selection\",upward:\"upward\",leftward:\"left\",visible:\"visible\"}},e.fn.dropdown.settings.templates={dropdown:function(t){var n=t.placeholder||!1,i=(t.values,\"\");return i+='<i class=\"dropdown icon\"></i>',t.placeholder?i+='<div class=\"default text\">'+n+\"</div>\":i+='<div class=\"text\"></div>',i+='<div class=\"menu\">',e.each(t.values,function(e,t){i+=t.disabled?'<div class=\"disabled item\" data-value=\"'+t.value+'\">'+t.name+\"</div>\":'<div class=\"item\" data-value=\"'+t.value+'\">'+t.name+\"</div>\"}),i+=\"</div>\"},menu:function(t,n){var i=t[n.values]||{},o=\"\";return e.each(i,function(e,t){var i=t[n.text]?'data-text=\"'+t[n.text]+'\"':\"\",a=t[n.disabled]?\"disabled \":\"\";o+='<div class=\"'+a+'item\" data-value=\"'+t[n.value]+'\"'+i+\">\",o+=t[n.name],o+=\"</div>\"}),o},label:function(e,t){return t+'<i class=\"delete icon\"></i>'},message:function(e){return e},addition:function(e){return e}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.embed=function(n){var o,a=e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var f,m=e.isPlainObject(n)?e.extend(!0,{},e.fn.embed.settings,n):e.extend({},e.fn.embed.settings),g=m.selector,p=m.className,h=m.sources,v=m.error,b=m.metadata,y=m.namespace,x=m.templates,C=\".\"+y,w=\"module-\"+y,S=(e(t),e(this)),k=(S.find(g.placeholder),S.find(g.icon),S.find(g.embed)),T=this,A=S.data(w);f={initialize:function(){f.debug(\"Initializing embed\"),f.determine.autoplay(),f.create(),f.bind.events(),f.instantiate()},instantiate:function(){f.verbose(\"Storing instance of module\",f),A=f,S.data(w,f)},destroy:function(){f.verbose(\"Destroying previous instance of embed\"),f.reset(),S.removeData(w).off(C)},refresh:function(){f.verbose(\"Refreshing selector cache\"),S.find(g.placeholder),S.find(g.icon),k=S.find(g.embed)},bind:{events:function(){f.has.placeholder()&&(f.debug(\"Adding placeholder events\"),S.on(\"click\"+C,g.placeholder,f.createAndShow).on(\"click\"+C,g.icon,f.createAndShow))}},create:function(){f.get.placeholder()?f.createPlaceholder():f.createAndShow()},createPlaceholder:function(e){var t=f.get.icon(),n=f.get.url();f.generate.embed(n);e=e||f.get.placeholder(),S.html(x.placeholder(e,t)),f.debug(\"Creating placeholder for embed\",e,t)},createEmbed:function(t){f.refresh(),t=t||f.get.url(),k=e(\"<div/>\").addClass(p.embed).html(f.generate.embed(t)).appendTo(S),m.onCreate.call(T,t),f.debug(\"Creating embed object\",k)},changeEmbed:function(e){k.html(f.generate.embed(e))},createAndShow:function(){f.createEmbed(),f.show()},change:function(e,t,n){f.debug(\"Changing video to \",e,t,n),S.data(b.source,e).data(b.id,t),n?S.data(b.url,n):S.removeData(b.url),f.has.embed()?f.changeEmbed():f.create()},reset:function(){f.debug(\"Clearing embed and showing placeholder\"),f.remove.active(),f.remove.embed(),f.showPlaceholder(),m.onReset.call(T)},show:function(){f.debug(\"Showing embed\"),f.set.active(),m.onDisplay.call(T)},hide:function(){f.debug(\"Hiding embed\"),f.showPlaceholder()},showPlaceholder:function(){f.debug(\"Showing placeholder image\"),f.remove.active(),m.onPlaceholderDisplay.call(T)},get:{id:function(){return m.id||S.data(b.id)},placeholder:function(){return m.placeholder||S.data(b.placeholder)},icon:function(){return m.icon?m.icon:S.data(b.icon)!==i?S.data(b.icon):f.determine.icon()},source:function(e){return m.source?m.source:S.data(b.source)!==i?S.data(b.source):f.determine.source()},type:function(){var e=f.get.source();return h[e]!==i&&h[e].type},url:function(){return m.url?m.url:S.data(b.url)!==i?S.data(b.url):f.determine.url()}},determine:{autoplay:function(){f.should.autoplay()&&(m.autoplay=!0)},source:function(t){var n=!1;return(t=t||f.get.url())&&e.each(h,function(e,i){if(-1!==t.search(i.domain))return n=e,!1}),n},icon:function(){var e=f.get.source();return h[e]!==i&&h[e].icon},url:function(){var e,t=m.id||S.data(b.id),n=m.source||S.data(b.source);return(e=h[n]!==i&&h[n].url.replace(\"{id}\",t))&&S.data(b.url,e),e}},set:{active:function(){S.addClass(p.active)}},remove:{active:function(){S.removeClass(p.active)},embed:function(){k.empty()}},encode:{parameters:function(e){var t,n=[];for(t in e)n.push(encodeURIComponent(t)+\"=\"+encodeURIComponent(e[t]));return n.join(\"&\")}},generate:{embed:function(e){f.debug(\"Generating embed html\");var t,n,i=f.get.source();return(e=f.get.url(e))?(n=f.generate.parameters(i),t=x.iframe(e,n)):f.error(v.noURL,S),t},parameters:function(t,n){var o=h[t]&&h[t].parameters!==i?h[t].parameters(m):{};return(n=n||m.parameters)&&(o=e.extend({},o,n)),o=m.onEmbed(o),f.encode.parameters(o)}},has:{embed:function(){return k.length>0},placeholder:function(){return m.placeholder||S.data(b.placeholder)}},should:{autoplay:function(){return\"auto\"===m.autoplay?m.placeholder||S.data(b.placeholder)!==i:m.autoplay}},is:{video:function(){return\"video\"==f.get.type()}},setting:function(t,n){if(f.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];e.isPlainObject(m[t])?e.extend(!0,m[t],n):m[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];f[t]=n}},debug:function(){!m.silent&&m.debug&&(m.performance?f.performance.log(arguments):(f.debug=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?f.performance.log(arguments):(f.verbose=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.verbose.apply(console,arguments)))},error:function(){m.silent||(f.error=Function.prototype.bind.call(console.error,console,m.name+\":\"),f.error.apply(console,arguments))},performance:{log:function(e){var t,n;m.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:T,\"Execution Time\":n})),clearTimeout(f.performance.timer),f.performance.timer=setTimeout(f.performance.display,500)},display:function(){var t=m.name+\":\",n=0;s=!1,clearTimeout(f.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),a.length>1&&(t+=\" (\"+a.length+\")\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,a){var r,s,l,c=A;return n=n||d,a=T||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(f.error(v.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}},u?(A===i&&f.initialize(),f.invoke(c)):(A!==i&&A.invoke(\"destroy\"),f.initialize())}),o!==i?o:this},e.fn.embed.settings={name:\"Embed\",namespace:\"embed\",silent:!1,debug:!1,verbose:!1,performance:!0,icon:!1,source:!1,url:!1,id:!1,autoplay:\"auto\",color:\"#444444\",hd:!0,brandedUI:!1,parameters:!1,onDisplay:function(){},onPlaceholderDisplay:function(){},onReset:function(){},onCreate:function(e){},onEmbed:function(e){return e},metadata:{id:\"id\",icon:\"icon\",placeholder:\"placeholder\",source:\"source\",url:\"url\"},error:{noURL:\"No URL specified\",method:\"The method you called is not defined\"},className:{active:\"active\",embed:\"embed\"},selector:{embed:\".embed\",placeholder:\".placeholder\",icon:\".icon\"},sources:{youtube:{name:\"youtube\",type:\"video\",icon:\"video play\",domain:\"youtube.com\",url:\"//www.youtube.com/embed/{id}\",parameters:function(e){return{autohide:!e.brandedUI,autoplay:e.autoplay,color:e.color||i,hq:e.hd,jsapi:e.api,modestbranding:!e.brandedUI}}},vimeo:{name:\"vimeo\",type:\"video\",icon:\"video play\",domain:\"vimeo.com\",url:\"//player.vimeo.com/video/{id}\",parameters:function(e){return{api:e.api,autoplay:e.autoplay,byline:e.brandedUI,color:e.color||i,portrait:e.brandedUI,title:e.brandedUI}}}},templates:{iframe:function(e,t){var n=e;return t&&(n+=\"?\"+t),'<iframe src=\"'+n+'\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'},placeholder:function(e,t){var n=\"\";return t&&(n+='<i class=\"'+t+' icon\"></i>'),e&&(n+='<img class=\"placeholder\" src=\"'+e+'\">'),n}},api:!1,onPause:function(){},onPlay:function(){},onStop:function(){}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.modal=function(o){var a,r=e(this),s=e(t),l=e(n),c=e(\"body\"),u=r.selector||\"\",d=(new Date).getTime(),f=[],m=arguments[0],g=\"string\"==typeof m,p=[].slice.call(arguments,1),h=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return r.each(function(){var r,v,b,y,x,C,w,S,k,T=e.isPlainObject(o)?e.extend(!0,{},e.fn.modal.settings,o):e.extend({},e.fn.modal.settings),A=T.selector,R=T.className,P=T.namespace,E=T.error,F=\".\"+P,O=\"module-\"+P,D=e(this),q=e(T.context),j=D.find(A.close),z=this,I=D.data(O),M=!1;k={initialize:function(){k.verbose(\"Initializing dimmer\",q),k.create.id(),k.create.dimmer(),k.refreshModals(),k.bind.events(),T.observeChanges&&k.observeChanges(),k.instantiate()},instantiate:function(){k.verbose(\"Storing instance of modal\"),I=k,D.data(O,I)},create:{dimmer:function(){var t={debug:T.debug,variation:!T.centered&&\"top aligned\",dimmerName:\"modals\"},n=e.extend(!0,t,T.dimmerSettings);e.fn.dimmer!==i?(k.debug(\"Creating dimmer\"),y=q.dimmer(n),T.detachable?(k.verbose(\"Modal is detachable, moving content into dimmer\"),y.dimmer(\"add content\",D)):k.set.undetached(),x=y.dimmer(\"get dimmer\")):k.error(E.dimmer)},id:function(){w=(Math.random().toString(16)+\"000000000\").substr(2,8),C=\".\"+w,k.verbose(\"Creating unique id for element\",w)}},destroy:function(){k.verbose(\"Destroying previous modal\"),D.removeData(O).off(F),s.off(C),x.off(C),j.off(F),q.dimmer(\"destroy\")},observeChanges:function(){\"MutationObserver\"in t&&((S=new MutationObserver(function(e){k.debug(\"DOM tree modified, refreshing\"),k.refresh()})).observe(z,{childList:!0,subtree:!0}),k.debug(\"Setting up mutation observer\",S))},refresh:function(){k.remove.scrolling(),k.cacheSizes(),k.set.screenHeight(),k.set.type()},refreshModals:function(){v=D.siblings(A.modal),r=v.add(D)},attachEvents:function(t,n){var i=e(t);n=e.isFunction(k[n])?k[n]:k.toggle,i.length>0?(k.debug(\"Attaching modal events to element\",t,n),i.off(F).on(\"click\"+F,n)):k.error(E.notFound,t)},bind:{events:function(){k.verbose(\"Attaching events\"),D.on(\"click\"+F,A.close,k.event.close).on(\"click\"+F,A.approve,k.event.approve).on(\"click\"+F,A.deny,k.event.deny),s.on(\"resize\"+C,k.event.resize)}},get:{id:function(){return(Math.random().toString(16)+\"000000000\").substr(2,8)}},event:{approve:function(){M||!1===T.onApprove.call(z,e(this))?k.verbose(\"Approve callback returned false cancelling hide\"):(M=!0,k.hide(function(){M=!1}))},deny:function(){M||!1===T.onDeny.call(z,e(this))?k.verbose(\"Deny callback returned false cancelling hide\"):(M=!0,k.hide(function(){M=!1}))},close:function(){k.hide()},click:function(t){if(T.closable){var i=e(t.target).closest(A.modal).length>0,o=e.contains(n.documentElement,t.target);!i&&o&&k.is.active()&&(k.debug(\"Dimmer clicked, hiding all modals\"),k.remove.clickaway(),T.allowMultiple?k.hide():k.hideAll())}else k.verbose(\"Dimmer clicked but closable setting is disabled\")},debounce:function(e,t){clearTimeout(k.timer),k.timer=setTimeout(e,t)},keyboard:function(e){27==e.which&&(T.closable?(k.debug(\"Escape key pressed hiding modal\"),k.hide()):k.debug(\"Escape key pressed, but closable is set to false\"),e.preventDefault())},resize:function(){y.dimmer(\"is active\")&&(k.is.animating()||k.is.active())&&h(k.refresh)}},toggle:function(){k.is.active()||k.is.animating()?k.hide():k.show()},show:function(t){t=e.isFunction(t)?t:function(){},k.refreshModals(),k.set.dimmerSettings(),k.showModal(t)},hide:function(t){t=e.isFunction(t)?t:function(){},k.refreshModals(),k.hideModal(t)},showModal:function(t){t=e.isFunction(t)?t:function(){},k.is.animating()||!k.is.active()?(k.showDimmer(),k.cacheSizes(),k.set.screenHeight(),k.set.type(),k.set.clickaway(),!T.allowMultiple&&k.others.active()?k.hideOthers(k.showModal):(T.allowMultiple&&T.detachable&&D.detach().appendTo(x),T.onShow.call(z),T.transition&&e.fn.transition!==i&&D.transition(\"is supported\")?(k.debug(\"Showing modal with css animations\"),D.transition({debug:T.debug,animation:T.transition+\" in\",queue:T.queue,duration:T.duration,useFailSafe:!0,onComplete:function(){T.onVisible.apply(z),T.keyboardShortcuts&&k.add.keyboardShortcuts(),k.save.focus(),k.set.active(),T.autofocus&&k.set.autofocus(),t()}})):k.error(E.noTransition))):k.debug(\"Modal is already visible\")},hideModal:function(t,n){t=e.isFunction(t)?t:function(){},k.debug(\"Hiding modal\"),!1!==T.onHide.call(z,e(this))?(k.is.animating()||k.is.active())&&(T.transition&&e.fn.transition!==i&&D.transition(\"is supported\")?(k.remove.active(),D.transition({debug:T.debug,animation:T.transition+\" out\",queue:T.queue,duration:T.duration,useFailSafe:!0,onStart:function(){k.others.active()||n||k.hideDimmer(),T.keyboardShortcuts&&k.remove.keyboardShortcuts()},onComplete:function(){T.onHidden.call(z),k.restore.focus(),t()}})):k.error(E.noTransition)):k.verbose(\"Hide callback returned false cancelling hide\")},showDimmer:function(){y.dimmer(\"is animating\")||!y.dimmer(\"is active\")?(k.debug(\"Showing dimmer\"),y.dimmer(\"show\")):k.debug(\"Dimmer already visible\")},hideDimmer:function(){y.dimmer(\"is animating\")||y.dimmer(\"is active\")?y.dimmer(\"hide\",function(){k.remove.clickaway(),k.remove.screenHeight()}):k.debug(\"Dimmer is not visible cannot hide\")},hideAll:function(t){var n=r.filter(\".\"+R.active+\", .\"+R.animating);t=e.isFunction(t)?t:function(){},n.length>0&&(k.debug(\"Hiding all visible modals\"),k.hideDimmer(),n.modal(\"hide modal\",t))},hideOthers:function(t){var n=v.filter(\".\"+R.active+\", .\"+R.animating);t=e.isFunction(t)?t:function(){},n.length>0&&(k.debug(\"Hiding other modals\",v),n.modal(\"hide modal\",t,!0))},others:{active:function(){return v.filter(\".\"+R.active).length>0},animating:function(){return v.filter(\".\"+R.animating).length>0}},add:{keyboardShortcuts:function(){k.verbose(\"Adding keyboard shortcuts\"),l.on(\"keyup\"+F,k.event.keyboard)}},save:{focus:function(){e(n.activeElement).closest(D).length>0||(b=e(n.activeElement).blur())}},restore:{focus:function(){b&&b.length>0&&b.focus()}},remove:{active:function(){D.removeClass(R.active)},clickaway:function(){x.off(\"click\"+C)},bodyStyle:function(){\"\"===c.attr(\"style\")&&(k.verbose(\"Removing style attribute\"),c.removeAttr(\"style\"))},screenHeight:function(){k.debug(\"Removing page height\"),c.css(\"height\",\"\")},keyboardShortcuts:function(){k.verbose(\"Removing keyboard shortcuts\"),l.off(\"keyup\"+F)},scrolling:function(){y.removeClass(R.scrolling),D.removeClass(R.scrolling)}},cacheSizes:function(){D.addClass(R.loading);var o=D.prop(\"scrollHeight\"),a=D.outerHeight();k.cache!==i&&0===a||(k.cache={pageHeight:e(n).outerHeight(),height:a+T.offset,scrollHeight:o+T.offset,contextHeight:\"body\"==T.context?e(t).height():y.height()},k.cache.topOffset=-k.cache.height/2),D.removeClass(R.loading),k.debug(\"Caching modal and container sizes\",k.cache)},can:{fit:function(){var e=k.cache.contextHeight,t=k.cache.contextHeight/2,n=k.cache.topOffset,i=k.cache.scrollHeight,o=k.cache.height,a=T.padding;return i>o?t+n+i+a<e:o+2*a<e}},is:{active:function(){return D.hasClass(R.active)},animating:function(){return D.transition(\"is supported\")?D.transition(\"is animating\"):D.is(\":visible\")},scrolling:function(){return y.hasClass(R.scrolling)},modernBrowser:function(){return!(t.ActiveXObject||\"ActiveXObject\"in t)}},set:{autofocus:function(){var e=D.find(\"[tabindex], :input\").filter(\":visible\"),t=e.filter(\"[autofocus]\"),n=t.length>0?t.first():e.first();n.length>0&&n.focus()},clickaway:function(){x.on(\"click\"+C,k.event.click)},dimmerSettings:function(){if(e.fn.dimmer!==i){var t={debug:T.debug,dimmerName:\"modals\",closable:\"auto\",variation:!T.centered&&\"top aligned\",duration:{show:T.duration,hide:T.duration}},n=e.extend(!0,t,T.dimmerSettings);T.inverted?(n.variation=n.variation!==i?n.variation+\" inverted\":\"inverted\",x.addClass(R.inverted)):x.removeClass(R.inverted),T.blurring?y.addClass(R.blurring):y.removeClass(R.blurring),q.dimmer(\"setting\",n)}else k.error(E.dimmer)},screenHeight:function(){k.can.fit()?c.css(\"height\",\"\"):(k.debug(\"Modal is taller than page content, resizing page height\"),c.css(\"height\",k.cache.height+2*T.padding))},active:function(){D.addClass(R.active)},scrolling:function(){y.addClass(R.scrolling),D.addClass(R.scrolling)},type:function(){k.can.fit()?(k.verbose(\"Modal fits on screen\"),k.others.active()||k.others.animating()||k.remove.scrolling()):(k.verbose(\"Modal cannot fit on screen setting to scrolling\"),k.set.scrolling())},undetached:function(){y.addClass(R.undetached)}},setting:function(t,n){if(k.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,T,t);else{if(n===i)return T[t];e.isPlainObject(T[t])?e.extend(!0,T[t],n):T[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,k,t);else{if(n===i)return k[t];k[t]=n}},debug:function(){!T.silent&&T.debug&&(T.performance?k.performance.log(arguments):(k.debug=Function.prototype.bind.call(console.info,console,T.name+\":\"),k.debug.apply(console,arguments)))},verbose:function(){!T.silent&&T.verbose&&T.debug&&(T.performance?k.performance.log(arguments):(k.verbose=Function.prototype.bind.call(console.info,console,T.name+\":\"),k.verbose.apply(console,arguments)))},error:function(){T.silent||(k.error=Function.prototype.bind.call(console.error,console,T.name+\":\"),k.error.apply(console,arguments))},performance:{log:function(e){var t,n;T.performance&&(n=(t=(new Date).getTime())-(d||t),d=t,f.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:z,\"Execution Time\":n})),clearTimeout(k.performance.timer),k.performance.timer=setTimeout(k.performance.display,500)},display:function(){var t=T.name+\":\",n=0;d=!1,clearTimeout(k.performance.timer),e.each(f,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",u&&(t+=\" '\"+u+\"'\"),(console.group!==i||console.table!==i)&&f.length>0&&(console.groupCollapsed(t),console.table?console.table(f):e.each(f,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),f=[]}},invoke:function(t,n,o){var r,s,l,c=I;return n=n||p,o=z||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},g?(I===i&&k.initialize(),k.invoke(m)):(I!==i&&I.invoke(\"destroy\"),k.initialize())}),a!==i?a:this},e.fn.modal.settings={name:\"Modal\",namespace:\"modal\",silent:!1,debug:!1,verbose:!1,performance:!0,observeChanges:!1,allowMultiple:!1,detachable:!0,closable:!0,autofocus:!0,inverted:!1,blurring:!1,centered:!0,dimmerSettings:{closable:!1,useCSS:!0},keyboardShortcuts:!0,context:\"body\",queue:!1,duration:500,offset:0,transition:\"scale\",padding:50,onShow:function(){},onVisible:function(){},onHide:function(){return!0},onHidden:function(){},onApprove:function(){return!0},onDeny:function(){return!0},selector:{close:\"> .close\",approve:\".actions .positive, .actions .approve, .actions .ok\",deny:\".actions .negative, .actions .deny, .actions .cancel\",modal:\".ui.modal\"},error:{dimmer:\"UI Dimmer, a required component is not included in this page\",method:\"The method you called is not defined.\",notFound:\"The element you specified could not be found\"},className:{active:\"active\",animating:\"animating\",blurring:\"blurring\",inverted:\"inverted\",loading:\"loading\",scrolling:\"scrolling\",undetached:\"undetached\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.nag=function(n){var o,a=e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var a,f=e.isPlainObject(n)?e.extend(!0,{},e.fn.nag.settings,n):e.extend({},e.fn.nag.settings),m=(f.className,f.selector),g=f.error,p=f.namespace,h=\".\"+p,v=p+\"-module\",b=e(this),y=(b.find(m.close),f.context?e(f.context):e(\"body\")),x=this,C=b.data(v);t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame;a={initialize:function(){a.verbose(\"Initializing element\"),b.on(\"click\"+h,m.close,a.dismiss).data(v,a),f.detachable&&b.parent()[0]!==y[0]&&b.detach().prependTo(y),f.displayTime>0&&setTimeout(a.hide,f.displayTime),a.show()},destroy:function(){a.verbose(\"Destroying instance\"),b.removeData(v).off(h)},show:function(){a.should.show()&&!b.is(\":visible\")&&(a.debug(\"Showing nag\",f.animation.show),\"fade\"==f.animation.show?b.fadeIn(f.duration,f.easing):b.slideDown(f.duration,f.easing))},hide:function(){a.debug(\"Showing nag\",f.animation.hide),\"fade\"==f.animation.show?b.fadeIn(f.duration,f.easing):b.slideUp(f.duration,f.easing)},onHide:function(){a.debug(\"Removing nag\",f.animation.hide),b.remove(),f.onHide&&f.onHide()},dismiss:function(e){f.storageMethod&&a.storage.set(f.key,f.value),a.hide(),e.stopImmediatePropagation(),e.preventDefault()},should:{show:function(){return f.persist?(a.debug(\"Persistent nag is set, can show nag\"),!0):a.storage.get(f.key)!=f.value.toString()?(a.debug(\"Stored value is not set, can show nag\",a.storage.get(f.key)),!0):(a.debug(\"Stored value is set, cannot show nag\",a.storage.get(f.key)),!1)}},get:{storageOptions:function(){var e={};return f.expires&&(e.expires=f.expires),f.domain&&(e.domain=f.domain),f.path&&(e.path=f.path),e}},clear:function(){a.storage.remove(f.key)},storage:{set:function(n,o){var r=a.get.storageOptions();if(\"localstorage\"==f.storageMethod&&t.localStorage!==i)t.localStorage.setItem(n,o),a.debug(\"Value stored using local storage\",n,o);else if(\"sessionstorage\"==f.storageMethod&&t.sessionStorage!==i)t.sessionStorage.setItem(n,o),a.debug(\"Value stored using session storage\",n,o);else{if(e.cookie===i)return void a.error(g.noCookieStorage);e.cookie(n,o,r),a.debug(\"Value stored using cookie\",n,o,r)}},get:function(n,o){var r;return\"localstorage\"==f.storageMethod&&t.localStorage!==i?r=t.localStorage.getItem(n):\"sessionstorage\"==f.storageMethod&&t.sessionStorage!==i?r=t.sessionStorage.getItem(n):e.cookie!==i?r=e.cookie(n):a.error(g.noCookieStorage),\"undefined\"!=r&&\"null\"!=r&&r!==i&&null!==r||(r=i),r},remove:function(n){var o=a.get.storageOptions();\"localstorage\"==f.storageMethod&&t.localStorage!==i?t.localStorage.removeItem(n):\"sessionstorage\"==f.storageMethod&&t.sessionStorage!==i?t.sessionStorage.removeItem(n):e.cookie!==i?e.removeCookie(n,o):a.error(g.noStorage)}},setting:function(t,n){if(a.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];e.isPlainObject(f[t])?e.extend(!0,f[t],n):f[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,a,t);else{if(n===i)return a[t];a[t]=n}},debug:function(){!f.silent&&f.debug&&(f.performance?a.performance.log(arguments):(a.debug=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.debug.apply(console,arguments)))},verbose:function(){!f.silent&&f.verbose&&f.debug&&(f.performance?a.performance.log(arguments):(a.verbose=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.verbose.apply(console,arguments)))},error:function(){f.silent||(a.error=Function.prototype.bind.call(console.error,console,f.name+\":\"),a.error.apply(console,arguments))},performance:{log:function(e){var t,n;f.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:x,\"Execution Time\":n})),clearTimeout(a.performance.timer),a.performance.timer=setTimeout(a.performance.display,500)},display:function(){var t=f.name+\":\",n=0;s=!1,clearTimeout(a.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,r){var s,l,c,u=C;return n=n||d,r=x||r,\"string\"==typeof t&&u!==i&&(t=t.split(/[\\. ]/),s=t.length-1,e.each(t,function(n,o){var r=n!=s?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(u[r])&&n!=s)u=u[r];else{if(u[r]!==i)return l=u[r],!1;if(!e.isPlainObject(u[o])||n==s)return u[o]!==i?(l=u[o],!1):(a.error(g.method,t),!1);u=u[o]}})),e.isFunction(l)?c=l.apply(r,n):l!==i&&(c=l),e.isArray(o)?o.push(c):o!==i?o=[o,c]:c!==i&&(o=c),l}},u?(C===i&&a.initialize(),a.invoke(c)):(C!==i&&C.invoke(\"destroy\"),a.initialize())}),o!==i?o:this},e.fn.nag.settings={name:\"Nag\",silent:!1,debug:!1,verbose:!1,performance:!0,namespace:\"Nag\",persist:!1,displayTime:0,animation:{show:\"slide\",hide:\"slide\"},context:!1,detachable:!1,expires:30,domain:!1,path:\"/\",storageMethod:\"cookie\",key:\"nag\",value:\"dismiss\",error:{noCookieStorage:\"$.cookie is not included. A storage solution is required.\",noStorage:\"Neither $.cookie or store is defined. A storage solution is required for storing state\",method:\"The method you called is not defined.\"},className:{bottom:\"bottom\",fixed:\"fixed\"},selector:{close:\".close.icon\"},speed:500,easing:\"easeOutQuad\",onHide:function(){}},e.extend(e.easing,{easeOutQuad:function(e,t,n,i,o){return-i*(t/=o)*(t-2)+n}})}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.popup=function(o){var a,r=e(this),s=e(n),l=e(t),c=e(\"body\"),u=r.selector||\"\",d=(new Date).getTime(),f=[],m=arguments[0],g=\"string\"==typeof m,p=[].slice.call(arguments,1);return r.each(function(){var r,h,v,b,y,x,C=e.isPlainObject(o)?e.extend(!0,{},e.fn.popup.settings,o):e.extend({},e.fn.popup.settings),w=C.selector,S=C.className,k=C.error,T=C.metadata,A=C.namespace,R=\".\"+C.namespace,P=\"module-\"+A,E=e(this),F=e(C.context),O=e(C.scrollContext),D=e(C.boundary),q=C.target?e(C.target):E,j=0,z=!1,I=!1,M=this,L=E.data(P);x={initialize:function(){x.debug(\"Initializing\",E),x.createID(),x.bind.events(),!x.exists()&&C.preserve&&x.create(),C.observeChanges&&x.observeChanges(),x.instantiate()},instantiate:function(){x.verbose(\"Storing instance\",x),L=x,E.data(P,L)},observeChanges:function(){\"MutationObserver\"in t&&((v=new MutationObserver(x.event.documentChanged)).observe(n,{childList:!0,subtree:!0}),x.debug(\"Setting up mutation observer\",v))},refresh:function(){C.popup?r=e(C.popup).eq(0):C.inline&&(r=q.nextAll(w.popup).eq(0),C.popup=r),C.popup?(r.addClass(S.loading),h=x.get.offsetParent(),r.removeClass(S.loading),C.movePopup&&x.has.popup()&&x.get.offsetParent(r)[0]!==h[0]&&(x.debug(\"Moving popup to the same offset parent as target\"),r.detach().appendTo(h))):h=C.inline?x.get.offsetParent(q):x.has.popup()?x.get.offsetParent(r):c,h.is(\"html\")&&h[0]!==c[0]&&(x.debug(\"Setting page as offset parent\"),h=c),x.get.variation()&&x.set.variation()},reposition:function(){x.refresh(),x.set.position()},destroy:function(){x.debug(\"Destroying previous module\"),v&&v.disconnect(),r&&!C.preserve&&x.removePopup(),clearTimeout(x.hideTimer),clearTimeout(x.showTimer),x.unbind.close(),x.unbind.events(),E.removeData(P)},event:{start:function(t){var n=e.isPlainObject(C.delay)?C.delay.show:C.delay;clearTimeout(x.hideTimer),I||(x.showTimer=setTimeout(x.show,n))},end:function(){var t=e.isPlainObject(C.delay)?C.delay.hide:C.delay;clearTimeout(x.showTimer),x.hideTimer=setTimeout(x.hide,t)},touchstart:function(e){I=!0,x.show()},resize:function(){x.is.visible()&&x.set.position()},documentChanged:function(t){[].forEach.call(t,function(t){t.removedNodes&&[].forEach.call(t.removedNodes,function(t){(t==M||e(t).find(M).length>0)&&(x.debug(\"Element removed from DOM, tearing down events\"),x.destroy())})})},hideGracefully:function(t){var i=e(t.target),o=e.contains(n.documentElement,t.target),a=i.closest(w.popup).length>0;t&&!a&&o?(x.debug(\"Click occurred outside popup hiding popup\"),x.hide()):x.debug(\"Click was inside popup, keeping popup open\")}},create:function(){var t=x.get.html(),n=x.get.title(),i=x.get.content();t||i||n?(x.debug(\"Creating pop-up html\"),t||(t=C.templates.popup({title:n,content:i})),r=e(\"<div/>\").addClass(S.popup).data(T.activator,E).html(t),C.inline?(x.verbose(\"Inserting popup element inline\",r),r.insertAfter(E)):(x.verbose(\"Appending popup element to body\",r),r.appendTo(F)),x.refresh(),x.set.variation(),C.hoverable&&x.bind.popup(),C.onCreate.call(r,M)):0!==q.next(w.popup).length?(x.verbose(\"Pre-existing popup found\"),C.inline=!0,C.popup=q.next(w.popup).data(T.activator,E),x.refresh(),C.hoverable&&x.bind.popup()):C.popup?(e(C.popup).data(T.activator,E),x.verbose(\"Used popup specified in settings\"),x.refresh(),C.hoverable&&x.bind.popup()):x.debug(\"No content specified skipping display\",M)},createID:function(){y=(Math.random().toString(16)+\"000000000\").substr(2,8),b=\".\"+y,x.verbose(\"Creating unique id for element\",y)},toggle:function(){x.debug(\"Toggling pop-up\"),x.is.hidden()?(x.debug(\"Popup is hidden, showing pop-up\"),x.unbind.close(),x.show()):(x.debug(\"Popup is visible, hiding pop-up\"),x.hide())},show:function(e){if(e=e||function(){},x.debug(\"Showing pop-up\",C.transition),x.is.hidden()&&(!x.is.active()||!x.is.dropdown())){if(x.exists()||x.create(),!1===C.onShow.call(r,M))return void x.debug(\"onShow callback returned false, cancelling popup animation\");C.preserve||C.popup||x.refresh(),r&&x.set.position()&&(x.save.conditions(),C.exclusive&&x.hideAll(),x.animate.show(e))}},hide:function(e){if(e=e||function(){},x.is.visible()||x.is.animating()){if(!1===C.onHide.call(r,M))return void x.debug(\"onHide callback returned false, cancelling popup animation\");x.remove.visible(),x.unbind.close(),x.restore.conditions(),x.animate.hide(e)}},hideAll:function(){e(w.popup).filter(\".\"+S.popupVisible).each(function(){e(this).data(T.activator).popup(\"hide\")})},exists:function(){return!!r&&(C.inline||C.popup?x.has.popup():r.closest(F).length>=1)},removePopup:function(){x.has.popup()&&!C.popup&&(x.debug(\"Removing popup\",r),r.remove(),r=i,C.onRemove.call(r,M))},save:{conditions:function(){x.cache={title:E.attr(\"title\")},x.cache.title&&E.removeAttr(\"title\"),x.verbose(\"Saving original attributes\",x.cache.title)}},restore:{conditions:function(){return x.cache&&x.cache.title&&(E.attr(\"title\",x.cache.title),x.verbose(\"Restoring original attributes\",x.cache.title)),!0}},supports:{svg:function(){return\"undefined\"==typeof SVGGraphicsElement}},animate:{show:function(t){t=e.isFunction(t)?t:function(){},C.transition&&e.fn.transition!==i&&E.transition(\"is supported\")?(x.set.visible(),r.transition({animation:C.transition+\" in\",queue:!1,debug:C.debug,verbose:C.verbose,duration:C.duration,onComplete:function(){x.bind.close(),t.call(r,M),C.onVisible.call(r,M)}})):x.error(k.noTransition)},hide:function(t){t=e.isFunction(t)?t:function(){},x.debug(\"Hiding pop-up\"),!1!==C.onHide.call(r,M)?C.transition&&e.fn.transition!==i&&E.transition(\"is supported\")?r.transition({animation:C.transition+\" out\",queue:!1,duration:C.duration,debug:C.debug,verbose:C.verbose,onComplete:function(){x.reset(),t.call(r,M),C.onHidden.call(r,M)}}):x.error(k.noTransition):x.debug(\"onHide callback returned false, cancelling popup animation\")}},change:{content:function(e){r.html(e)}},get:{html:function(){return E.removeData(T.html),E.data(T.html)||C.html},title:function(){return E.removeData(T.title),E.data(T.title)||C.title},content:function(){return E.removeData(T.content),E.data(T.content)||C.content||E.attr(\"title\")},variation:function(){return E.removeData(T.variation),E.data(T.variation)||C.variation},popup:function(){return r},popupOffset:function(){return r.offset()},calculations:function(){var e,n=x.get.offsetParent(r),i=q[0],o=D[0]==t,a=C.inline||C.popup&&C.movePopup?q.position():q.offset(),s=o?{top:0,left:0}:D.offset(),c={},u=o?{top:l.scrollTop(),left:l.scrollLeft()}:{top:0,left:0};if(c={target:{element:q[0],width:q.outerWidth(),height:q.outerHeight(),top:a.top,left:a.left,margin:{}},popup:{width:r.outerWidth(),height:r.outerHeight()},parent:{width:h.outerWidth(),height:h.outerHeight()},screen:{top:s.top,left:s.left,scroll:{top:u.top,left:u.left},width:D.width(),height:D.height()}},n.get(0)!==h.get(0)){var d=n.offset();c.target.top-=d.top,c.target.left-=d.left,c.parent.width=n.outerWidth(),c.parent.height=n.outerHeight()}return C.setFluidWidth&&x.is.fluid()&&(c.container={width:r.parent().outerWidth()},c.popup.width=c.container.width),c.target.margin.top=C.inline?parseInt(t.getComputedStyle(i).getPropertyValue(\"margin-top\"),10):0,c.target.margin.left=C.inline?x.is.rtl()?parseInt(t.getComputedStyle(i).getPropertyValue(\"margin-right\"),10):parseInt(t.getComputedStyle(i).getPropertyValue(\"margin-left\"),10):0,e=c.screen,c.boundary={top:e.top+e.scroll.top,bottom:e.top+e.scroll.top+e.height,left:e.left+e.scroll.left,right:e.left+e.scroll.left+e.width},c},id:function(){return y},startEvent:function(){return\"hover\"==C.on?\"mouseenter\":\"focus\"==C.on&&\"focus\"},scrollEvent:function(){return\"scroll\"},endEvent:function(){return\"hover\"==C.on?\"mouseleave\":\"focus\"==C.on&&\"blur\"},distanceFromBoundary:function(e,t){var n,i,o={};return n=(t=t||x.get.calculations()).popup,i=t.boundary,e&&(o={top:e.top-i.top,left:e.left-i.left,right:i.right-(e.left+n.width),bottom:i.bottom-(e.top+n.height)},x.verbose(\"Distance from boundaries determined\",e,o)),o},offsetParent:function(t){var n=(t!==i?t[0]:q[0]).parentNode,o=e(n);if(n)for(var a=\"none\"===o.css(\"transform\"),r=\"static\"===o.css(\"position\"),s=o.is(\"body\");n&&!s&&r&&a;)n=n.parentNode,a=\"none\"===(o=e(n)).css(\"transform\"),r=\"static\"===o.css(\"position\"),s=o.is(\"body\");return o&&o.length>0?o:e()},positions:function(){return{\"top left\":!1,\"top center\":!1,\"top right\":!1,\"bottom left\":!1,\"bottom center\":!1,\"bottom right\":!1,\"left center\":!1,\"right center\":!1}},nextPosition:function(e){var t=e.split(\" \"),n=t[0],i=t[1],o=\"top\"==n||\"bottom\"==n,a=!1,r=!1,s=!1;return z||(x.verbose(\"All available positions available\"),z=x.get.positions()),x.debug(\"Recording last position tried\",e),z[e]=!0,\"opposite\"===C.prefer&&(s=(s=[{top:\"bottom\",bottom:\"top\",left:\"right\",right:\"left\"}[n],i]).join(\" \"),a=!0===z[s],x.debug(\"Trying opposite strategy\",s)),\"adjacent\"===C.prefer&&o&&(s=(s=[n,{left:\"center\",center:\"right\",right:\"left\"}[i]]).join(\" \"),r=!0===z[s],x.debug(\"Trying adjacent strategy\",s)),(r||a)&&(x.debug(\"Using backup position\",s),s={\"top left\":\"top center\",\"top center\":\"top right\",\"top right\":\"right center\",\"right center\":\"bottom right\",\"bottom right\":\"bottom center\",\"bottom center\":\"bottom left\",\"bottom left\":\"left center\",\"left center\":\"top left\"}[e]),s}},set:{position:function(e,t){if(0!==q.length&&0!==r.length){var n,o,a,s,l,c,u,d;if(t=t||x.get.calculations(),e=e||E.data(T.position)||C.position,n=E.data(T.offset)||C.offset,o=C.distanceAway,a=t.target,s=t.popup,l=t.parent,x.should.centerArrow(t)&&(x.verbose(\"Adjusting offset to center arrow on small target element\"),\"top left\"!=e&&\"bottom left\"!=e||(n+=a.width/2,n-=C.arrowPixelsFromEdge),\"top right\"!=e&&\"bottom right\"!=e||(n-=a.width/2,n+=C.arrowPixelsFromEdge)),0===a.width&&0===a.height&&!x.is.svg(a.element))return x.debug(\"Popup target is hidden, no action taken\"),!1;switch(C.inline&&(x.debug(\"Adding margin to calculation\",a.margin),\"left center\"==e||\"right center\"==e?(n+=a.margin.top,o+=-a.margin.left):\"top left\"==e||\"top center\"==e||\"top right\"==e?(n+=a.margin.left,o-=a.margin.top):(n+=a.margin.left,o+=a.margin.top)),x.debug(\"Determining popup position from calculations\",e,t),x.is.rtl()&&(e=e.replace(/left|right/g,function(e){return\"left\"==e?\"right\":\"left\"}),x.debug(\"RTL: Popup position updated\",e)),j==C.maxSearchDepth&&\"string\"==typeof C.lastResort&&(e=C.lastResort),e){case\"top left\":c={top:\"auto\",bottom:l.height-a.top+o,left:a.left+n,right:\"auto\"};break;case\"top center\":c={bottom:l.height-a.top+o,left:a.left+a.width/2-s.width/2+n,top:\"auto\",right:\"auto\"};break;case\"top right\":c={bottom:l.height-a.top+o,right:l.width-a.left-a.width-n,top:\"auto\",left:\"auto\"};break;case\"left center\":c={top:a.top+a.height/2-s.height/2+n,right:l.width-a.left+o,left:\"auto\",bottom:\"auto\"};break;case\"right center\":c={top:a.top+a.height/2-s.height/2+n,left:a.left+a.width+o,bottom:\"auto\",right:\"auto\"};break;case\"bottom left\":c={top:a.top+a.height+o,left:a.left+n,bottom:\"auto\",right:\"auto\"};break;case\"bottom center\":c={top:a.top+a.height+o,left:a.left+a.width/2-s.width/2+n,bottom:\"auto\",right:\"auto\"};break;case\"bottom right\":c={top:a.top+a.height+o,right:l.width-a.left-a.width-n,left:\"auto\",bottom:\"auto\"}}if(c===i&&x.error(k.invalidPosition,e),x.debug(\"Calculated popup positioning values\",c),r.css(c).removeClass(S.position).addClass(e).addClass(S.loading),u=x.get.popupOffset(),d=x.get.distanceFromBoundary(u,t),x.is.offstage(d,e)){if(x.debug(\"Position is outside viewport\",e),j<C.maxSearchDepth)return j++,e=x.get.nextPosition(e),x.debug(\"Trying new position\",e),!!r&&x.set.position(e,t);if(!C.lastResort)return x.debug(\"Popup could not find a position to display\",r),x.error(k.cannotPlace,M),x.remove.attempts(),x.remove.loading(),x.reset(),C.onUnplaceable.call(r,M),!1;x.debug(\"No position found, showing with last position\")}return x.debug(\"Position is on stage\",e),x.remove.attempts(),x.remove.loading(),C.setFluidWidth&&x.is.fluid()&&x.set.fluidWidth(t),!0}x.error(k.notFound)},fluidWidth:function(e){e=e||x.get.calculations(),x.debug(\"Automatically setting element width to parent width\",e.parent.width),r.css(\"width\",e.container.width)},variation:function(e){(e=e||x.get.variation())&&x.has.popup()&&(x.verbose(\"Adding variation to popup\",e),r.addClass(e))},visible:function(){E.addClass(S.visible)}},remove:{loading:function(){r.removeClass(S.loading)},variation:function(e){(e=e||x.get.variation())&&(x.verbose(\"Removing variation\",e),r.removeClass(e))},visible:function(){E.removeClass(S.visible)},attempts:function(){x.verbose(\"Resetting all searched positions\"),j=0,z=!1}},bind:{events:function(){x.debug(\"Binding popup events to module\"),\"click\"==C.on&&E.on(\"click\"+R,x.toggle),\"hover\"==C.on&&E.on(\"touchstart\"+R,x.event.touchstart),x.get.startEvent()&&E.on(x.get.startEvent()+R,x.event.start).on(x.get.endEvent()+R,x.event.end),C.target&&x.debug(\"Target set to element\",q),l.on(\"resize\"+b,x.event.resize)},popup:function(){x.verbose(\"Allowing hover events on popup to prevent closing\"),r&&x.has.popup()&&r.on(\"mouseenter\"+R,x.event.start).on(\"mouseleave\"+R,x.event.end)},close:function(){(!0===C.hideOnScroll||\"auto\"==C.hideOnScroll&&\"click\"!=C.on)&&x.bind.closeOnScroll(),\"hover\"==C.on&&I&&x.bind.touchClose(),\"click\"==C.on&&C.closable&&x.bind.clickaway()},closeOnScroll:function(){x.verbose(\"Binding scroll close event to document\"),O.one(x.get.scrollEvent()+b,x.event.hideGracefully)},touchClose:function(){x.verbose(\"Binding popup touchclose event to document\"),s.on(\"touchstart\"+b,function(e){x.verbose(\"Touched away from popup\"),x.event.hideGracefully.call(M,e)})},clickaway:function(){x.verbose(\"Binding popup close event to document\"),s.on(\"click\"+b,function(e){x.verbose(\"Clicked away from popup\"),x.event.hideGracefully.call(M,e)})}},unbind:{events:function(){l.off(b),E.off(R)},close:function(){s.off(b),O.off(b)}},has:{popup:function(){return r&&r.length>0}},should:{centerArrow:function(e){return!x.is.basic()&&e.target.width<=2*C.arrowPixelsFromEdge}},is:{offstage:function(t,n){var i=[];return e.each(t,function(e,t){t<-C.jitter&&(x.debug(\"Position exceeds allowable distance from edge\",e,t,n),i.push(e))}),i.length>0},svg:function(e){return x.supports.svg()&&e instanceof SVGGraphicsElement},basic:function(){return E.hasClass(S.basic)},active:function(){return E.hasClass(S.active)},animating:function(){return r!==i&&r.hasClass(S.animating)},fluid:function(){return r!==i&&r.hasClass(S.fluid)},visible:function(){return r!==i&&r.hasClass(S.popupVisible)},dropdown:function(){return E.hasClass(S.dropdown)},hidden:function(){return!x.is.visible()},rtl:function(){return\"rtl\"==E.css(\"direction\")}},reset:function(){x.remove.visible(),C.preserve?e.fn.transition!==i&&r.transition(\"remove transition\"):x.removePopup()},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,C,t);else{if(n===i)return C[t];C[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,x,t);else{if(n===i)return x[t];x[t]=n}},debug:function(){!C.silent&&C.debug&&(C.performance?x.performance.log(arguments):(x.debug=Function.prototype.bind.call(console.info,console,C.name+\":\"),x.debug.apply(console,arguments)))},verbose:function(){!C.silent&&C.verbose&&C.debug&&(C.performance?x.performance.log(arguments):(x.verbose=Function.prototype.bind.call(console.info,console,C.name+\":\"),x.verbose.apply(console,arguments)))},error:function(){C.silent||(x.error=Function.prototype.bind.call(console.error,console,C.name+\":\"),x.error.apply(console,arguments))},performance:{log:function(e){var t,n;C.performance&&(n=(t=(new Date).getTime())-(d||t),d=t,f.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:M,\"Execution Time\":n})),clearTimeout(x.performance.timer),x.performance.timer=setTimeout(x.performance.display,500)},display:function(){var t=C.name+\":\",n=0;d=!1,clearTimeout(x.performance.timer),e.each(f,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",u&&(t+=\" '\"+u+\"'\"),(console.group!==i||console.table!==i)&&f.length>0&&(console.groupCollapsed(t),console.table?console.table(f):e.each(f,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),f=[]}},invoke:function(t,n,o){var r,s,l,c=L;return n=n||p,o=M||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},g?(L===i&&x.initialize(),x.invoke(m)):(L!==i&&L.invoke(\"destroy\"),x.initialize())}),a!==i?a:this},e.fn.popup.settings={name:\"Popup\",silent:!1,debug:!1,verbose:!1,performance:!0,namespace:\"popup\",observeChanges:!0,onCreate:function(){},onRemove:function(){},onShow:function(){},onVisible:function(){},onHide:function(){},onUnplaceable:function(){},onHidden:function(){},on:\"hover\",boundary:t,addTouchEvents:!0,position:\"top left\",variation:\"\",movePopup:!0,target:!1,popup:!1,inline:!1,preserve:!1,hoverable:!1,content:!1,html:!1,title:!1,closable:!0,hideOnScroll:\"auto\",exclusive:!1,context:\"body\",scrollContext:t,prefer:\"opposite\",lastResort:!1,arrowPixelsFromEdge:20,delay:{show:50,hide:70},setFluidWidth:!0,duration:200,transition:\"scale\",distanceAway:0,jitter:2,offset:0,maxSearchDepth:15,error:{invalidPosition:\"The position you specified is not a valid position\",cannotPlace:\"Popup does not fit within the boundaries of the viewport\",method:\"The method you called is not defined.\",noTransition:\"This module requires ui transitions <https://github.com/Semantic-Org/UI-Transition>\",notFound:\"The target or popup you specified does not exist on the page\"},metadata:{activator:\"activator\",content:\"content\",html:\"html\",offset:\"offset\",position:\"position\",title:\"title\",variation:\"variation\"},className:{active:\"active\",basic:\"basic\",animating:\"animating\",dropdown:\"dropdown\",fluid:\"fluid\",loading:\"loading\",popup:\"ui popup\",position:\"top left center bottom right\",visible:\"visible\",popupVisible:\"visible\"},selector:{popup:\".ui.popup\"},templates:{escape:function(e){var t={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\",\"`\":\"`\"};return/[&<>\"'`]/.test(e)?e.replace(/[&<>\"'`]/g,function(e){return t[e]}):e},popup:function(t){var n=\"\",o=e.fn.popup.settings.templates.escape;return typeof t!==i&&(typeof t.title!==i&&t.title&&(t.title=o(t.title),n+='<div class=\"header\">'+t.title+\"</div>\"),typeof t.content!==i&&t.content&&(t.content=o(t.content),n+='<div class=\"content\">'+t.content+\"</div>\")),n}}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";void 0!==(t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")())&&t.Math==Math||(\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")());e.fn.progress=function(t){var o,a=e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var a,f=e.isPlainObject(t)?e.extend(!0,{},e.fn.progress.settings,t):e.extend({},e.fn.progress.settings),m=f.className,g=f.metadata,p=f.namespace,h=f.selector,v=f.error,b=\".\"+p,y=\"module-\"+p,x=e(this),C=e(this).find(h.bar),w=e(this).find(h.progress),S=e(this).find(h.label),k=this,T=x.data(y),A=!1;a={initialize:function(){a.debug(\"Initializing progress bar\",f),a.set.duration(),a.set.transitionEvent(),a.read.metadata(),a.read.settings(),a.instantiate()},instantiate:function(){a.verbose(\"Storing instance of progress\",a),T=a,x.data(y,a)},destroy:function(){a.verbose(\"Destroying previous progress for\",x),clearInterval(T.interval),a.remove.state(),x.removeData(y),T=i},reset:function(){a.remove.nextValue(),a.update.progress(0)},complete:function(){(a.percent===i||a.percent<100)&&(a.remove.progressPoll(),a.set.percent(100))},read:{metadata:function(){var e={percent:x.data(g.percent),total:x.data(g.total),value:x.data(g.value)};e.percent&&(a.debug(\"Current percent value set from metadata\",e.percent),a.set.percent(e.percent)),e.total&&(a.debug(\"Total value set from metadata\",e.total),a.set.total(e.total)),e.value&&(a.debug(\"Current value set from metadata\",e.value),a.set.value(e.value),a.set.progress(e.value))},settings:function(){!1!==f.total&&(a.debug(\"Current total set in settings\",f.total),a.set.total(f.total)),!1!==f.value&&(a.debug(\"Current value set in settings\",f.value),a.set.value(f.value),a.set.progress(a.value)),!1!==f.percent&&(a.debug(\"Current percent set in settings\",f.percent),a.set.percent(f.percent))}},bind:{transitionEnd:function(e){var t=a.get.transitionEnd();C.one(t+b,function(t){clearTimeout(a.failSafeTimer),e.call(this,t)}),a.failSafeTimer=setTimeout(function(){C.triggerHandler(t)},f.duration+f.failSafeDelay),a.verbose(\"Adding fail safe timer\",a.timer)}},increment:function(e){var t,n;a.has.total()?n=(t=a.get.value())+(e=e||1):(n=(t=a.get.percent())+(e=e||a.get.randomValue()),100,a.debug(\"Incrementing percentage by\",t,n)),n=a.get.normalizedValue(n),a.set.progress(n)},decrement:function(e){var t,n;a.get.total()?(n=(t=a.get.value())-(e=e||1),a.debug(\"Decrementing value by\",e,t)):(n=(t=a.get.percent())-(e=e||a.get.randomValue()),a.debug(\"Decrementing percentage by\",e,t)),n=a.get.normalizedValue(n),a.set.progress(n)},has:{progressPoll:function(){return a.progressPoll},total:function(){return!1!==a.get.total()}},get:{text:function(e){var t=a.value||0,n=a.total||0,i=A?a.get.displayPercent():a.percent||0,o=a.total>0?n-t:100-i;return e=(e=e||\"\").replace(\"{value}\",t).replace(\"{total}\",n).replace(\"{left}\",o).replace(\"{percent}\",i),a.verbose(\"Adding variables to progress bar text\",e),e},normalizedValue:function(e){if(e<0)return a.debug(\"Value cannot decrement below 0\"),0;if(a.has.total()){if(e>a.total)return a.debug(\"Value cannot increment above total\",a.total),a.total}else if(e>100)return a.debug(\"Value cannot increment above 100 percent\"),100;return e},updateInterval:function(){return\"auto\"==f.updateInterval?f.duration:f.updateInterval},randomValue:function(){return a.debug(\"Generating random increment percentage\"),Math.floor(Math.random()*f.random.max+f.random.min)},numericValue:function(e){return\"string\"==typeof e?\"\"!==e.replace(/[^\\d.]/g,\"\")&&+e.replace(/[^\\d.]/g,\"\"):e},transitionEnd:function(){var e,t=n.createElement(\"element\"),o={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(e in o)if(t.style[e]!==i)return o[e]},displayPercent:function(){var e=C.width(),t=x.width(),n=e>parseInt(C.css(\"min-width\"),10)?e/t*100:a.percent;return f.precision>0?Math.round(n*(10*f.precision))/(10*f.precision):Math.round(n)},percent:function(){return a.percent||0},value:function(){return a.nextValue||a.value||0},total:function(){return a.total||!1}},create:{progressPoll:function(){a.progressPoll=setTimeout(function(){a.update.toNextValue(),a.remove.progressPoll()},a.get.updateInterval())}},is:{complete:function(){return a.is.success()||a.is.warning()||a.is.error()},success:function(){return x.hasClass(m.success)},warning:function(){return x.hasClass(m.warning)},error:function(){return x.hasClass(m.error)},active:function(){return x.hasClass(m.active)},visible:function(){return x.is(\":visible\")}},remove:{progressPoll:function(){a.verbose(\"Removing progress poll timer\"),a.progressPoll&&(clearTimeout(a.progressPoll),delete a.progressPoll)},nextValue:function(){a.verbose(\"Removing progress value stored for next update\"),delete a.nextValue},state:function(){a.verbose(\"Removing stored state\"),delete a.total,delete a.percent,delete a.value},active:function(){a.verbose(\"Removing active state\"),x.removeClass(m.active)},success:function(){a.verbose(\"Removing success state\"),x.removeClass(m.success)},warning:function(){a.verbose(\"Removing warning state\"),x.removeClass(m.warning)},error:function(){a.verbose(\"Removing error state\"),x.removeClass(m.error)}},set:{barWidth:function(e){e>100?a.error(v.tooHigh,e):e<0?a.error(v.tooLow,e):(C.css(\"width\",e+\"%\"),x.attr(\"data-percent\",parseInt(e,10)))},duration:function(e){e=\"number\"==typeof(e=e||f.duration)?e+\"ms\":e,a.verbose(\"Setting progress bar transition duration\",e),C.css({\"transition-duration\":e})},percent:function(e){e=\"string\"==typeof e?+e.replace(\"%\",\"\"):e,e=f.precision>0?Math.round(e*(10*f.precision))/(10*f.precision):Math.round(e),a.percent=e,a.has.total()||(a.value=f.precision>0?Math.round(e/100*a.total*(10*f.precision))/(10*f.precision):Math.round(e/100*a.total*10)/10,f.limitValues&&(a.value=a.value>100?100:a.value<0?0:a.value)),a.set.barWidth(e),a.set.labelInterval(),a.set.labels(),f.onChange.call(k,e,a.value,a.total)},labelInterval:function(){clearInterval(a.interval),a.bind.transitionEnd(function(){a.verbose(\"Bar finished animating, removing continuous label updates\"),clearInterval(a.interval),A=!1,a.set.labels()}),A=!0,a.interval=setInterval(function(){e.contains(n.documentElement,k)||(clearInterval(a.interval),A=!1),a.set.labels()},f.framerate)},labels:function(){a.verbose(\"Setting both bar progress and outer label text\"),a.set.barLabel(),a.set.state()},label:function(e){(e=e||\"\")&&(e=a.get.text(e),a.verbose(\"Setting label to text\",e),S.text(e))},state:function(e){100===(e=e!==i?e:a.percent)?f.autoSuccess&&!(a.is.warning()||a.is.error()||a.is.success())?(a.set.success(),a.debug(\"Automatically triggering success at 100%\")):(a.verbose(\"Reached 100% removing active state\"),a.remove.active(),a.remove.progressPoll()):e>0?(a.verbose(\"Adjusting active progress bar label\",e),a.set.active()):(a.remove.active(),a.set.label(f.text.active))},barLabel:function(e){e!==i?w.text(a.get.text(e)):\"ratio\"==f.label&&a.total?(a.verbose(\"Adding ratio to bar label\"),w.text(a.get.text(f.text.ratio))):\"percent\"==f.label&&(a.verbose(\"Adding percentage to bar label\"),w.text(a.get.text(f.text.percent)))},active:function(e){e=e||f.text.active,a.debug(\"Setting active state\"),f.showActivity&&!a.is.active()&&x.addClass(m.active),a.remove.warning(),a.remove.error(),a.remove.success(),(e=f.onLabelUpdate(\"active\",e,a.value,a.total))&&a.set.label(e),a.bind.transitionEnd(function(){f.onActive.call(k,a.value,a.total)})},success:function(e){e=e||f.text.success||f.text.active,a.debug(\"Setting success state\"),x.addClass(m.success),a.remove.active(),a.remove.warning(),a.remove.error(),a.complete(),f.text.success?(e=f.onLabelUpdate(\"success\",e,a.value,a.total),a.set.label(e)):(e=f.onLabelUpdate(\"active\",e,a.value,a.total),a.set.label(e)),a.bind.transitionEnd(function(){f.onSuccess.call(k,a.total)})},warning:function(e){e=e||f.text.warning,a.debug(\"Setting warning state\"),x.addClass(m.warning),a.remove.active(),a.remove.success(),a.remove.error(),a.complete(),(e=f.onLabelUpdate(\"warning\",e,a.value,a.total))&&a.set.label(e),a.bind.transitionEnd(function(){f.onWarning.call(k,a.value,a.total)})},error:function(e){e=e||f.text.error,a.debug(\"Setting error state\"),x.addClass(m.error),a.remove.active(),a.remove.success(),a.remove.warning(),a.complete(),(e=f.onLabelUpdate(\"error\",e,a.value,a.total))&&a.set.label(e),a.bind.transitionEnd(function(){f.onError.call(k,a.value,a.total)})},transitionEvent:function(){a.get.transitionEnd()},total:function(e){a.total=e},value:function(e){a.value=e},progress:function(e){a.has.progressPoll()?(a.debug(\"Updated within interval, setting next update to use new value\",e),a.set.nextValue(e)):(a.debug(\"First update in progress update interval, immediately updating\",e),a.update.progress(e),a.create.progressPoll())},nextValue:function(e){a.nextValue=e}},update:{toNextValue:function(){var e=a.nextValue;e&&(a.debug(\"Update interval complete using last updated value\",e),a.update.progress(e),a.remove.nextValue())},progress:function(e){var t;!1===(e=a.get.numericValue(e))&&a.error(v.nonNumeric,e),e=a.get.normalizedValue(e),a.has.total()?(a.set.value(e),t=e/a.total*100,a.debug(\"Calculating percent complete from total\",t),a.set.percent(t)):(t=e,a.debug(\"Setting value to exact percentage value\",t),a.set.percent(t))}},setting:function(t,n){if(a.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];e.isPlainObject(f[t])?e.extend(!0,f[t],n):f[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,a,t);else{if(n===i)return a[t];a[t]=n}},debug:function(){!f.silent&&f.debug&&(f.performance?a.performance.log(arguments):(a.debug=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.debug.apply(console,arguments)))},verbose:function(){!f.silent&&f.verbose&&f.debug&&(f.performance?a.performance.log(arguments):(a.verbose=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.verbose.apply(console,arguments)))},error:function(){f.silent||(a.error=Function.prototype.bind.call(console.error,console,f.name+\":\"),a.error.apply(console,arguments))},performance:{log:function(e){var t,n;f.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:k,\"Execution Time\":n})),clearTimeout(a.performance.timer),a.performance.timer=setTimeout(a.performance.display,500)},display:function(){var t=f.name+\":\",n=0;s=!1,clearTimeout(a.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,r){var s,l,c,u=T;return n=n||d,r=k||r,\"string\"==typeof t&&u!==i&&(t=t.split(/[\\. ]/),s=t.length-1,e.each(t,function(n,o){var r=n!=s?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(u[r])&&n!=s)u=u[r];else{if(u[r]!==i)return l=u[r],!1;if(!e.isPlainObject(u[o])||n==s)return u[o]!==i?(l=u[o],!1):(a.error(v.method,t),!1);u=u[o]}})),e.isFunction(l)?c=l.apply(r,n):l!==i&&(c=l),e.isArray(o)?o.push(c):o!==i?o=[o,c]:c!==i&&(o=c),l}},u?(T===i&&a.initialize(),a.invoke(c)):(T!==i&&T.invoke(\"destroy\"),a.initialize())}),o!==i?o:this},e.fn.progress.settings={name:\"Progress\",namespace:\"progress\",silent:!1,debug:!1,verbose:!1,performance:!0,random:{min:2,max:5},duration:300,updateInterval:\"auto\",autoSuccess:!0,showActivity:!0,limitValues:!0,label:\"percent\",precision:0,framerate:1e3/30,percent:!1,total:!1,value:!1,failSafeDelay:100,onLabelUpdate:function(e,t,n,i){return t},onChange:function(e,t,n){},onSuccess:function(e){},onActive:function(e,t){},onError:function(e,t){},onWarning:function(e,t){},error:{method:\"The method you called is not defined.\",nonNumeric:\"Progress value is non numeric\",tooHigh:\"Value specified is above 100%\",tooLow:\"Value specified is below 0%\"},regExp:{variable:/\\{\\$*[A-z0-9]+\\}/g},metadata:{percent:\"percent\",total:\"total\",value:\"value\"},selector:{bar:\"> .bar\",label:\"> .label\",progress:\".bar > .progress\"},text:{active:!1,error:!1,success:!1,warning:!1,percent:\"{percent}%\",ratio:\"{value} of {total}\"},className:{active:\"active\",error:\"error\",success:\"success\",warning:\"warning\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.rating=function(t){var n,o=e(this),a=o.selector||\"\",r=(new Date).getTime(),s=[],l=arguments[0],c=\"string\"==typeof l,u=[].slice.call(arguments,1);return o.each(function(){var d,f,m=e.isPlainObject(t)?e.extend(!0,{},e.fn.rating.settings,t):e.extend({},e.fn.rating.settings),g=m.namespace,p=m.className,h=m.metadata,v=m.selector,b=(m.error,\".\"+g),y=\"module-\"+g,x=this,C=e(this).data(y),w=e(this),S=w.find(v.icon);f={initialize:function(){f.verbose(\"Initializing rating module\",m),0===S.length&&f.setup.layout(),m.interactive?f.enable():f.disable(),f.set.initialLoad(),f.set.rating(f.get.initialRating()),f.remove.initialLoad(),f.instantiate()},instantiate:function(){f.verbose(\"Instantiating module\",m),C=f,w.data(y,f)},destroy:function(){f.verbose(\"Destroying previous instance\",C),f.remove.events(),w.removeData(y)},refresh:function(){S=w.find(v.icon)},setup:{layout:function(){var t=f.get.maxRating(),n=e.fn.rating.settings.templates.icon(t);f.debug(\"Generating icon html dynamically\"),w.html(n),f.refresh()}},event:{mouseenter:function(){var t=e(this);t.nextAll().removeClass(p.selected),w.addClass(p.selected),t.addClass(p.selected).prevAll().addClass(p.selected)},mouseleave:function(){w.removeClass(p.selected),S.removeClass(p.selected)},click:function(){var t=e(this),n=f.get.rating(),i=S.index(t)+1;(\"auto\"==m.clearable?1===S.length:m.clearable)&&n==i?f.clearRating():f.set.rating(i)}},clearRating:function(){f.debug(\"Clearing current rating\"),f.set.rating(0)},bind:{events:function(){f.verbose(\"Binding events\"),w.on(\"mouseenter\"+b,v.icon,f.event.mouseenter).on(\"mouseleave\"+b,v.icon,f.event.mouseleave).on(\"click\"+b,v.icon,f.event.click)}},remove:{events:function(){f.verbose(\"Removing events\"),w.off(b)},initialLoad:function(){d=!1}},enable:function(){f.debug(\"Setting rating to interactive mode\"),f.bind.events(),w.removeClass(p.disabled)},disable:function(){f.debug(\"Setting rating to read-only mode\"),f.remove.events(),w.addClass(p.disabled)},is:{initialLoad:function(){return d}},get:{initialRating:function(){return w.data(h.rating)!==i?(w.removeData(h.rating),w.data(h.rating)):m.initialRating},maxRating:function(){return w.data(h.maxRating)!==i?(w.removeData(h.maxRating),w.data(h.maxRating)):m.maxRating},rating:function(){var e=S.filter(\".\"+p.active).length;return f.verbose(\"Current rating retrieved\",e),e}},set:{rating:function(e){var t=e-1>=0?e-1:0,n=S.eq(t);w.removeClass(p.selected),S.removeClass(p.selected).removeClass(p.active),e>0&&(f.verbose(\"Setting current rating to\",e),n.prevAll().addBack().addClass(p.active)),f.is.initialLoad()||m.onRate.call(x,e)},initialLoad:function(){d=!0}},setting:function(t,n){if(f.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];e.isPlainObject(m[t])?e.extend(!0,m[t],n):m[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];f[t]=n}},debug:function(){!m.silent&&m.debug&&(m.performance?f.performance.log(arguments):(f.debug=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?f.performance.log(arguments):(f.verbose=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.verbose.apply(console,arguments)))},error:function(){m.silent||(f.error=Function.prototype.bind.call(console.error,console,m.name+\":\"),f.error.apply(console,arguments))},performance:{log:function(e){var t,n;m.performance&&(n=(t=(new Date).getTime())-(r||t),r=t,s.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:x,\"Execution Time\":n})),clearTimeout(f.performance.timer),f.performance.timer=setTimeout(f.performance.display,500)},display:function(){var t=m.name+\":\",n=0;r=!1,clearTimeout(f.performance.timer),e.each(s,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",a&&(t+=\" '\"+a+\"'\"),o.length>1&&(t+=\" (\"+o.length+\")\"),(console.group!==i||console.table!==i)&&s.length>0&&(console.groupCollapsed(t),console.table?console.table(s):e.each(s,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),s=[]}},invoke:function(t,o,a){var r,s,l,c=C;return o=o||u,a=x||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,o):s!==i&&(l=s),e.isArray(n)?n.push(l):n!==i?n=[n,l]:l!==i&&(n=l),s}},c?(C===i&&f.initialize(),f.invoke(l)):(C!==i&&C.invoke(\"destroy\"),f.initialize())}),n!==i?n:this},e.fn.rating.settings={name:\"Rating\",namespace:\"rating\",slent:!1,debug:!1,verbose:!1,performance:!0,initialRating:0,interactive:!0,maxRating:4,clearable:\"auto\",fireOnInit:!1,onRate:function(e){},error:{method:\"The method you called is not defined\",noMaximum:\"No maximum rating specified. Cannot generate HTML automatically\"},metadata:{rating:\"rating\",maxRating:\"maxRating\"},className:{active:\"active\",disabled:\"disabled\",selected:\"selected\",loading:\"loading\"},selector:{icon:\".icon\"},templates:{icon:function(e){for(var t=1,n=\"\";t<=e;)n+='<i class=\"icon\"></i>',t++;return n}}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.search=function(o){var a,r=e(this),s=r.selector||\"\",l=(new Date).getTime(),c=[],u=arguments[0],d=\"string\"==typeof u,f=[].slice.call(arguments,1);return e(this).each(function(){var m,g=e.isPlainObject(o)?e.extend(!0,{},e.fn.search.settings,o):e.extend({},e.fn.search.settings),p=g.className,h=g.metadata,v=g.regExp,b=g.fields,y=g.selector,x=g.error,C=g.namespace,w=\".\"+C,S=C+\"-module\",k=e(this),T=k.find(y.prompt),A=k.find(y.searchButton),R=k.find(y.results),P=k.find(y.result),E=(k.find(y.category),this),F=k.data(S),O=!1,D=!1;m={initialize:function(){m.verbose(\"Initializing module\"),m.get.settings(),m.determine.searchFields(),m.bind.events(),m.set.type(),m.create.results(),m.instantiate()},instantiate:function(){m.verbose(\"Storing instance of module\",m),F=m,k.data(S,m)},destroy:function(){m.verbose(\"Destroying instance\"),k.off(w).removeData(S)},refresh:function(){m.debug(\"Refreshing selector cache\"),T=k.find(y.prompt),A=k.find(y.searchButton),k.find(y.category),R=k.find(y.results),P=k.find(y.result)},refreshResults:function(){R=k.find(y.results),P=k.find(y.result)},bind:{events:function(){m.verbose(\"Binding events to search\"),g.automatic&&(k.on(m.get.inputEvent()+w,y.prompt,m.event.input),T.attr(\"autocomplete\",\"off\")),k.on(\"focus\"+w,y.prompt,m.event.focus).on(\"blur\"+w,y.prompt,m.event.blur).on(\"keydown\"+w,y.prompt,m.handleKeyboard).on(\"click\"+w,y.searchButton,m.query).on(\"mousedown\"+w,y.results,m.event.result.mousedown).on(\"mouseup\"+w,y.results,m.event.result.mouseup).on(\"click\"+w,y.result,m.event.result.click)}},determine:{searchFields:function(){o&&o.searchFields!==i&&(g.searchFields=o.searchFields)}},event:{input:function(){g.searchDelay?(clearTimeout(m.timer),m.timer=setTimeout(function(){m.is.focused()&&m.query()},g.searchDelay)):m.query()},focus:function(){m.set.focus(),g.searchOnFocus&&m.has.minimumCharacters()&&m.query(function(){m.can.show()&&m.showResults()})},blur:function(e){var t=function(){m.cancel.query(),m.remove.focus(),m.timer=setTimeout(m.hideResults,g.hideDelay)};n.activeElement===this||(D=!1,m.resultsClicked?(m.debug(\"Determining if user action caused search to close\"),k.one(\"click.close\"+w,y.results,function(e){m.is.inMessage(e)||O?T.focus():(O=!1,m.is.animating()||m.is.hidden()||t())})):(m.debug(\"Input blurred without user action, closing results\"),t()))},result:{mousedown:function(){m.resultsClicked=!0},mouseup:function(){m.resultsClicked=!1},click:function(n){m.debug(\"Search result selected\");var i=e(this),o=i.find(y.title).eq(0),a=i.is(\"a[href]\")?i:i.find(\"a[href]\").eq(0),r=a.attr(\"href\")||!1,s=a.attr(\"target\")||!1,l=(o.html(),o.length>0&&o.text()),c=m.get.results(),u=i.data(h.result)||m.get.result(l,c);if(e.isFunction(g.onSelect)&&!1===g.onSelect.call(E,u,c))return m.debug(\"Custom onSelect callback cancelled default select action\"),void(O=!0);m.hideResults(),l&&m.set.value(l),r&&(m.verbose(\"Opening search link found in result\",a),\"_blank\"==s||n.ctrlKey?t.open(r):t.location.href=r)}}},handleKeyboard:function(e){var t,n=k.find(y.result),i=k.find(y.category),o=n.filter(\".\"+p.active),a=n.index(o),r=n.length,s=o.length>0,l=e.which,c=13,u=38,d=40;if(l==27&&(m.verbose(\"Escape key pressed, blurring search field\"),m.hideResults(),D=!0),m.is.visible())if(l==c){if(m.verbose(\"Enter key pressed, selecting active result\"),n.filter(\".\"+p.active).length>0)return m.event.result.click.call(n.filter(\".\"+p.active),e),e.preventDefault(),!1}else l==u&&s?(m.verbose(\"Up key pressed, changing active result\"),t=a-1<0?a:a-1,i.removeClass(p.active),n.removeClass(p.active).eq(t).addClass(p.active).closest(i).addClass(p.active),e.preventDefault()):l==d&&(m.verbose(\"Down key pressed, changing active result\"),t=a+1>=r?a:a+1,i.removeClass(p.active),n.removeClass(p.active).eq(t).addClass(p.active).closest(i).addClass(p.active),e.preventDefault());else l==c&&(m.verbose(\"Enter key pressed, executing query\"),m.query(),m.set.buttonPressed(),T.one(\"keyup\",m.remove.buttonFocus))},setup:{api:function(t,n){var i={debug:g.debug,on:!1,cache:g.cache,action:\"search\",urlData:{query:t},onSuccess:function(e){m.parse.response.call(E,e,t),n()},onFailure:function(){m.displayMessage(x.serverError),n()},onAbort:function(e){},onError:m.error};e.extend(!0,i,g.apiSettings),m.verbose(\"Setting up API request\",i),k.api(i)}},can:{useAPI:function(){return e.fn.api!==i},show:function(){return m.is.focused()&&!m.is.visible()&&!m.is.empty()},transition:function(){return g.transition&&e.fn.transition!==i&&k.transition(\"is supported\")}},is:{animating:function(){return R.hasClass(p.animating)},hidden:function(){return R.hasClass(p.hidden)},inMessage:function(t){if(t.target){var i=e(t.target);return e.contains(n.documentElement,t.target)&&i.closest(y.message).length>0}},empty:function(){return\"\"===R.html()},visible:function(){return R.filter(\":visible\").length>0},focused:function(){return T.filter(\":focus\").length>0}},get:{settings:function(){e.isPlainObject(o)&&o.searchFullText&&(g.fullTextSearch=o.searchFullText,m.error(g.error.oldSearchSyntax,E))},inputEvent:function(){var e=T[0];return e!==i&&e.oninput!==i?\"input\":e!==i&&e.onpropertychange!==i?\"propertychange\":\"keyup\"},value:function(){return T.val()},results:function(){return k.data(h.results)},result:function(t,n){var o=[\"title\",\"id\"],a=!1;return t=t!==i?t:m.get.value(),n=n!==i?n:m.get.results(),\"category\"===g.type?(m.debug(\"Finding result that matches\",t),e.each(n,function(n,i){if(e.isArray(i.results)&&(a=m.search.object(t,i.results,o)[0]))return!1})):(m.debug(\"Finding result in results object\",t),a=m.search.object(t,n,o)[0]),a||!1}},select:{firstResult:function(){m.verbose(\"Selecting first result\"),P.first().addClass(p.active)}},set:{focus:function(){k.addClass(p.focus)},loading:function(){k.addClass(p.loading)},value:function(e){m.verbose(\"Setting search input value\",e),T.val(e)},type:function(e){e=e||g.type,\"category\"==g.type&&k.addClass(g.type)},buttonPressed:function(){A.addClass(p.pressed)}},remove:{loading:function(){k.removeClass(p.loading)},focus:function(){k.removeClass(p.focus)},buttonPressed:function(){A.removeClass(p.pressed)}},query:function(t){t=e.isFunction(t)?t:function(){};var n=m.get.value(),i=m.read.cache(n);t=t||function(){},m.has.minimumCharacters()?(i?(m.debug(\"Reading result from cache\",n),m.save.results(i.results),m.addResults(i.html),m.inject.id(i.results),t()):(m.debug(\"Querying for\",n),e.isPlainObject(g.source)||e.isArray(g.source)?(m.search.local(n),t()):m.can.useAPI()?m.search.remote(n,t):(m.error(x.source),t())),g.onSearchQuery.call(E,n)):m.hideResults()},search:{local:function(e){var t,n=m.search.object(e,g.content);m.set.loading(),m.save.results(n),m.debug(\"Returned full local search results\",n),g.maxResults>0&&(m.debug(\"Using specified max results\",n),n=n.slice(0,g.maxResults)),\"category\"==g.type&&(n=m.create.categoryResults(n)),t=m.generateResults({results:n}),m.remove.loading(),m.addResults(t),m.inject.id(n),m.write.cache(e,{html:t,results:n})},remote:function(t,n){n=e.isFunction(n)?n:function(){},k.api(\"is loading\")&&k.api(\"abort\"),m.setup.api(t,n),k.api(\"query\")},object:function(t,n,o){var a=[],r=[],s=[],l=t.toString().replace(v.escape,\"\\\\$&\"),c=new RegExp(v.beginsWith+l,\"i\"),u=function(t,n){var i=-1==e.inArray(n,a),o=-1==e.inArray(n,s),l=-1==e.inArray(n,r);i&&o&&l&&t.push(n)};return n=n||g.source,o=o!==i?o:g.searchFields,e.isArray(o)||(o=[o]),n===i||!1===n?(m.error(x.source),[]):(e.each(o,function(i,o){e.each(n,function(e,n){\"string\"==typeof n[o]&&(-1!==n[o].search(c)?u(a,n):\"exact\"===g.fullTextSearch&&m.exactSearch(t,n[o])?u(r,n):1==g.fullTextSearch&&m.fuzzySearch(t,n[o])&&u(s,n))})}),e.merge(r,s),e.merge(a,r),a)}},exactSearch:function(e,t){return e=e.toLowerCase(),(t=t.toLowerCase()).indexOf(e)>-1},fuzzySearch:function(e,t){var n=t.length,i=e.length;if(\"string\"!=typeof e)return!1;if(e=e.toLowerCase(),t=t.toLowerCase(),i>n)return!1;if(i===n)return e===t;e:for(var o=0,a=0;o<i;o++){for(var r=e.charCodeAt(o);a<n;)if(t.charCodeAt(a++)===r)continue e;return!1}return!0},parse:{response:function(e,t){var n=m.generateResults(e);m.verbose(\"Parsing server response\",e),e!==i&&t!==i&&e[b.results]!==i&&(m.addResults(n),m.inject.id(e[b.results]),m.write.cache(t,{html:n,results:e[b.results]}),m.save.results(e[b.results]))}},cancel:{query:function(){m.can.useAPI()&&k.api(\"abort\")}},has:{minimumCharacters:function(){return m.get.value().length>=g.minCharacters},results:function(){return 0!==R.length&&\"\"!=R.html()}},clear:{cache:function(e){var t=k.data(h.cache);e?e&&t&&t[e]&&(m.debug(\"Removing value from cache\",e),delete t[e],k.data(h.cache,t)):(m.debug(\"Clearing cache\",e),k.removeData(h.cache))}},read:{cache:function(e){var t=k.data(h.cache);return!!g.cache&&(m.verbose(\"Checking cache for generated html for query\",e),\"object\"==typeof t&&t[e]!==i&&t[e])}},create:{categoryResults:function(t){var n={};return e.each(t,function(e,t){t.category&&(n[t.category]===i?(m.verbose(\"Creating new category of results\",t.category),n[t.category]={name:t.category,results:[t]}):n[t.category].results.push(t))}),n},id:function(e,t){var n,o=e+1;return t!==i?(n=String.fromCharCode(97+t)+o,m.verbose(\"Creating category result id\",n)):(n=o,m.verbose(\"Creating result id\",n)),n},results:function(){0===R.length&&(R=e(\"<div />\").addClass(p.results).appendTo(k))}},inject:{result:function(e,t,n){m.verbose(\"Injecting result into results\");var o=n!==i?R.children().eq(n).children(y.results).first().children(y.result).eq(t):R.children(y.result).eq(t);m.verbose(\"Injecting results metadata\",o),o.data(h.result,e)},id:function(t){m.debug(\"Injecting unique ids into results\");var n=0,o=0;return\"category\"===g.type?e.each(t,function(t,a){o=0,e.each(a.results,function(e,t){var r=a.results[e];r.id===i&&(r.id=m.create.id(o,n)),m.inject.result(r,o,n),o++}),n++}):e.each(t,function(e,n){var a=t[e];a.id===i&&(a.id=m.create.id(o)),m.inject.result(a,o),o++}),t}},save:{results:function(e){m.verbose(\"Saving current search results to metadata\",e),k.data(h.results,e)}},write:{cache:function(e,t){var n=k.data(h.cache)!==i?k.data(h.cache):{};g.cache&&(m.verbose(\"Writing generated html to cache\",e,t),n[e]=t,k.data(h.cache,n))}},addResults:function(t){if(e.isFunction(g.onResultsAdd)&&!1===g.onResultsAdd.call(R,t))return m.debug(\"onResultsAdd callback cancelled default action\"),!1;t?(R.html(t),m.refreshResults(),g.selectFirstResult&&m.select.firstResult(),m.showResults()):m.hideResults(function(){R.empty()})},showResults:function(t){t=e.isFunction(t)?t:function(){},D||!m.is.visible()&&m.has.results()&&(m.can.transition()?(m.debug(\"Showing results with css animations\"),R.transition({animation:g.transition+\" in\",debug:g.debug,verbose:g.verbose,duration:g.duration,onComplete:function(){t()},queue:!0})):(m.debug(\"Showing results with javascript\"),R.stop().fadeIn(g.duration,g.easing)),g.onResultsOpen.call(R))},hideResults:function(t){t=e.isFunction(t)?t:function(){},m.is.visible()&&(m.can.transition()?(m.debug(\"Hiding results with css animations\"),R.transition({animation:g.transition+\" out\",debug:g.debug,verbose:g.verbose,duration:g.duration,onComplete:function(){t()},queue:!0})):(m.debug(\"Hiding results with javascript\"),R.stop().fadeOut(g.duration,g.easing)),g.onResultsClose.call(R))},generateResults:function(t){m.debug(\"Generating html from response\",t);var n=g.templates[g.type],i=e.isPlainObject(t[b.results])&&!e.isEmptyObject(t[b.results]),o=e.isArray(t[b.results])&&t[b.results].length>0,a=\"\";return i||o?(g.maxResults>0&&(i?\"standard\"==g.type&&m.error(x.maxResults):t[b.results]=t[b.results].slice(0,g.maxResults)),e.isFunction(n)?a=n(t,b):m.error(x.noTemplate,!1)):g.showNoResults&&(a=m.displayMessage(x.noResults,\"empty\")),g.onResults.call(E,t),a},displayMessage:function(e,t){return t=t||\"standard\",m.debug(\"Displaying message\",e,t),m.addResults(g.templates.message(e,t)),g.templates.message(e,t)},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,g,t);else{if(n===i)return g[t];g[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];m[t]=n}},debug:function(){!g.silent&&g.debug&&(g.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.debug.apply(console,arguments)))},verbose:function(){!g.silent&&g.verbose&&g.debug&&(g.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.verbose.apply(console,arguments)))},error:function(){g.silent||(m.error=Function.prototype.bind.call(console.error,console,g.name+\":\"),m.error.apply(console,arguments))},performance:{log:function(e){var t,n;g.performance&&(n=(t=(new Date).getTime())-(l||t),l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:E,\"Execution Time\":n})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,500)},display:function(){var t=g.name+\":\",n=0;l=!1,clearTimeout(m.performance.timer),e.each(c,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",s&&(t+=\" '\"+s+\"'\"),r.length>1&&(t+=\" (\"+r.length+\")\"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=F;return n=n||f,o=E||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(F===i&&m.initialize(),m.invoke(u)):(F!==i&&F.invoke(\"destroy\"),m.initialize())}),a!==i?a:this},e.fn.search.settings={name:\"Search\",namespace:\"search\",silent:!1,debug:!1,verbose:!1,performance:!0,type:\"standard\",minCharacters:1,selectFirstResult:!1,apiSettings:!1,source:!1,searchOnFocus:!0,searchFields:[\"title\",\"description\"],displayField:\"\",fullTextSearch:\"exact\",automatic:!0,hideDelay:0,searchDelay:200,maxResults:7,cache:!0,showNoResults:!0,transition:\"scale\",duration:200,easing:\"easeOutExpo\",onSelect:!1,onResultsAdd:!1,onSearchQuery:function(e){},onResults:function(e){},onResultsOpen:function(){},onResultsClose:function(){},className:{animating:\"animating\",active:\"active\",empty:\"empty\",focus:\"focus\",hidden:\"hidden\",loading:\"loading\",results:\"results\",pressed:\"down\"},error:{source:\"Cannot search. No source used, and Semantic API module was not included\",noResults:\"Your search returned no results\",logging:\"Error in debug logging, exiting.\",noEndpoint:\"No search endpoint was specified\",noTemplate:\"A valid template name was not specified.\",oldSearchSyntax:\"searchFullText setting has been renamed fullTextSearch for consistency, please adjust your settings.\",serverError:\"There was an issue querying the server.\",maxResults:\"Results must be an array to use maxResults setting\",method:\"The method you called is not defined.\"},metadata:{cache:\"cache\",results:\"results\",result:\"result\"},regExp:{escape:/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,beginsWith:\"(?:s|^)\"},fields:{categories:\"results\",categoryName:\"name\",categoryResults:\"results\",description:\"description\",image:\"image\",price:\"price\",results:\"results\",title:\"title\",url:\"url\",action:\"action\",actionText:\"text\",actionURL:\"url\"},selector:{prompt:\".prompt\",searchButton:\".search.button\",results:\".results\",message:\".results > .message\",category:\".category\",result:\".result\",title:\".title, .name\"},templates:{escape:function(e){var t={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\",\"`\":\"`\"};return/[&<>\"'`]/.test(e)?e.replace(/[&<>\"'`]/g,function(e){return t[e]}):e},message:function(e,t){var n=\"\";return e!==i&&t!==i&&(n+='<div class=\"message '+t+'\">',n+=\"empty\"==t?'<div class=\"header\">No Results</div class=\"header\"><div class=\"description\">'+e+'</div class=\"description\">':' <div class=\"description\">'+e+\"</div>\",n+=\"</div>\"),n},category:function(t,n){var o=\"\";e.fn.search.settings.templates.escape;return t[n.categoryResults]!==i&&(e.each(t[n.categoryResults],function(t,a){a[n.results]!==i&&a.results.length>0&&(o+='<div class=\"category\">',a[n.categoryName]!==i&&(o+='<div class=\"name\">'+a[n.categoryName]+\"</div>\"),o+='<div class=\"results\">',e.each(a.results,function(e,t){t[n.url]?o+='<a class=\"result\" href=\"'+t[n.url]+'\">':o+='<a class=\"result\">',t[n.image]!==i&&(o+='<div class=\"image\"> <img src=\"'+t[n.image]+'\"></div>'),o+='<div class=\"content\">',t[n.price]!==i&&(o+='<div class=\"price\">'+t[n.price]+\"</div>\"),t[n.title]!==i&&(o+='<div class=\"title\">'+t[n.title]+\"</div>\"),t[n.description]!==i&&(o+='<div class=\"description\">'+t[n.description]+\"</div>\"),o+=\"</div>\",o+=\"</a>\"}),o+=\"</div>\",o+=\"</div>\")}),t[n.action]&&(o+='<a href=\"'+t[n.action][n.actionURL]+'\" class=\"action\">'+t[n.action][n.actionText]+\"</a>\"),o)},standard:function(t,n){var o=\"\";return t[n.results]!==i&&(e.each(t[n.results],function(e,t){t[n.url]?o+='<a class=\"result\" href=\"'+t[n.url]+'\">':o+='<a class=\"result\">',t[n.image]!==i&&(o+='<div class=\"image\"> <img src=\"'+t[n.image]+'\"></div>'),o+='<div class=\"content\">',t[n.price]!==i&&(o+='<div class=\"price\">'+t[n.price]+\"</div>\"),t[n.title]!==i&&(o+='<div class=\"title\">'+t[n.title]+\"</div>\"),t[n.description]!==i&&(o+='<div class=\"description\">'+t[n.description]+\"</div>\"),o+=\"</div>\",o+=\"</a>\"}),t[n.action]&&(o+='<a href=\"'+t[n.action][n.actionURL]+'\" class=\"action\">'+t[n.action][n.actionText]+\"</a>\"),o)}}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.shape=function(o){var a,r=e(this),s=(e(\"body\"),(new Date).getTime()),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1),f=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return r.each(function(){var t,m,g,p=r.selector||\"\",h=e.isPlainObject(o)?e.extend(!0,{},e.fn.shape.settings,o):e.extend({},e.fn.shape.settings),v=h.namespace,b=h.selector,y=h.error,x=h.className,C=\".\"+v,w=\"module-\"+v,S=e(this),k=S.find(b.sides),T=S.find(b.side),A=!1,R=this,P=S.data(w);g={initialize:function(){g.verbose(\"Initializing module for\",R),g.set.defaultSide(),g.instantiate()},instantiate:function(){g.verbose(\"Storing instance of module\",g),P=g,S.data(w,P)},destroy:function(){g.verbose(\"Destroying previous module for\",R),S.removeData(w).off(C)},refresh:function(){g.verbose(\"Refreshing selector cache for\",R),S=e(R),k=e(this).find(b.shape),T=e(this).find(b.side)},repaint:function(){g.verbose(\"Forcing repaint event\");(k[0]||n.createElement(\"div\")).offsetWidth},animate:function(e,n){g.verbose(\"Animating box with properties\",e),n=n||function(e){g.verbose(\"Executing animation callback\"),e!==i&&e.stopPropagation(),g.reset(),g.set.active()},h.beforeChange.call(m[0]),g.get.transitionEvent()?(g.verbose(\"Starting CSS animation\"),S.addClass(x.animating),k.css(e).one(g.get.transitionEvent(),n),g.set.duration(h.duration),f(function(){S.addClass(x.animating),t.addClass(x.hidden)})):n()},queue:function(e){g.debug(\"Queueing animation of\",e),k.one(g.get.transitionEvent(),function(){g.debug(\"Executing queued animation\"),setTimeout(function(){S.shape(e)},0)})},reset:function(){g.verbose(\"Animating states reset\"),S.removeClass(x.animating).attr(\"style\",\"\").removeAttr(\"style\"),k.attr(\"style\",\"\").removeAttr(\"style\"),T.attr(\"style\",\"\").removeAttr(\"style\").removeClass(x.hidden),m.removeClass(x.animating).attr(\"style\",\"\").removeAttr(\"style\")},is:{complete:function(){return T.filter(\".\"+x.active)[0]==m[0]},animating:function(){return S.hasClass(x.animating)}},set:{defaultSide:function(){t=S.find(\".\"+h.className.active),m=t.next(b.side).length>0?t.next(b.side):S.find(b.side).first(),A=!1,g.verbose(\"Active side set to\",t),g.verbose(\"Next side set to\",m)},duration:function(e){e=\"number\"==typeof(e=e||h.duration)?e+\"ms\":e,g.verbose(\"Setting animation duration\",e),(h.duration||0===h.duration)&&k.add(T).css({\"-webkit-transition-duration\":e,\"-moz-transition-duration\":e,\"-ms-transition-duration\":e,\"-o-transition-duration\":e,\"transition-duration\":e})},currentStageSize:function(){var e=S.find(\".\"+h.className.active),t=e.outerWidth(!0),n=e.outerHeight(!0);S.css({width:t,height:n})},stageSize:function(){var e=S.clone().addClass(x.loading),t=e.find(\".\"+h.className.active),n=A?e.find(b.side).eq(A):t.next(b.side).length>0?t.next(b.side):e.find(b.side).first(),i=\"next\"==h.width?n.outerWidth(!0):\"initial\"==h.width?S.width():h.width,o=\"next\"==h.height?n.outerHeight(!0):\"initial\"==h.height?S.height():h.height;t.removeClass(x.active),n.addClass(x.active),e.insertAfter(S),e.remove(),\"auto\"!=h.width&&(S.css(\"width\",i+h.jitter),g.verbose(\"Specifying width during animation\",i)),\"auto\"!=h.height&&(S.css(\"height\",o+h.jitter),g.verbose(\"Specifying height during animation\",o))},nextSide:function(e){A=e,m=T.filter(e),A=T.index(m),0===m.length&&(g.set.defaultSide(),g.error(y.side)),g.verbose(\"Next side manually set to\",m)},active:function(){g.verbose(\"Setting new side to active\",m),T.removeClass(x.active),m.addClass(x.active),h.onChange.call(m[0]),g.set.defaultSide()}},flip:{up:function(){if(!g.is.complete()||g.is.animating()||h.allowRepeats)if(g.is.animating())g.queue(\"flip up\");else{g.debug(\"Flipping up\",m);var e=g.get.transform.up();g.set.stageSize(),g.stage.above(),g.animate(e)}else g.debug(\"Side already visible\",m)},down:function(){if(!g.is.complete()||g.is.animating()||h.allowRepeats)if(g.is.animating())g.queue(\"flip down\");else{g.debug(\"Flipping down\",m);var e=g.get.transform.down();g.set.stageSize(),g.stage.below(),g.animate(e)}else g.debug(\"Side already visible\",m)},left:function(){if(!g.is.complete()||g.is.animating()||h.allowRepeats)if(g.is.animating())g.queue(\"flip left\");else{g.debug(\"Flipping left\",m);var e=g.get.transform.left();g.set.stageSize(),g.stage.left(),g.animate(e)}else g.debug(\"Side already visible\",m)},right:function(){if(!g.is.complete()||g.is.animating()||h.allowRepeats)if(g.is.animating())g.queue(\"flip right\");else{g.debug(\"Flipping right\",m);var e=g.get.transform.right();g.set.stageSize(),g.stage.right(),g.animate(e)}else g.debug(\"Side already visible\",m)},over:function(){!g.is.complete()||g.is.animating()||h.allowRepeats?g.is.animating()?g.queue(\"flip over\"):(g.debug(\"Flipping over\",m),g.set.stageSize(),g.stage.behind(),g.animate(g.get.transform.over())):g.debug(\"Side already visible\",m)},back:function(){!g.is.complete()||g.is.animating()||h.allowRepeats?g.is.animating()?g.queue(\"flip back\"):(g.debug(\"Flipping back\",m),g.set.stageSize(),g.stage.behind(),g.animate(g.get.transform.back())):g.debug(\"Side already visible\",m)}},get:{transform:{up:function(){return{transform:\"translateY(\"+-(t.outerHeight(!0)-m.outerHeight(!0))/2+\"px) translateZ(\"+-t.outerHeight(!0)/2+\"px) rotateX(-90deg)\"}},down:function(){return{transform:\"translateY(\"+-(t.outerHeight(!0)-m.outerHeight(!0))/2+\"px) translateZ(\"+-t.outerHeight(!0)/2+\"px) rotateX(90deg)\"}},left:function(){return{transform:\"translateX(\"+-(t.outerWidth(!0)-m.outerWidth(!0))/2+\"px) translateZ(\"+-t.outerWidth(!0)/2+\"px) rotateY(90deg)\"}},right:function(){return{transform:\"translateX(\"+-(t.outerWidth(!0)-m.outerWidth(!0))/2+\"px) translateZ(\"+-t.outerWidth(!0)/2+\"px) rotateY(-90deg)\"}},over:function(){return{transform:\"translateX(\"+-(t.outerWidth(!0)-m.outerWidth(!0))/2+\"px) rotateY(180deg)\"}},back:function(){return{transform:\"translateX(\"+-(t.outerWidth(!0)-m.outerWidth(!0))/2+\"px) rotateY(-180deg)\"}}},transitionEvent:function(){var e,t=n.createElement(\"element\"),o={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(e in o)if(t.style[e]!==i)return o[e]},nextSide:function(){return t.next(b.side).length>0?t.next(b.side):S.find(b.side).first()}},stage:{above:function(){var e={origin:(t.outerHeight(!0)-m.outerHeight(!0))/2,depth:{active:m.outerHeight(!0)/2,next:t.outerHeight(!0)/2}};g.verbose(\"Setting the initial animation position as above\",m,e),k.css({transform:\"translateZ(-\"+e.depth.active+\"px)\"}),t.css({transform:\"rotateY(0deg) translateZ(\"+e.depth.active+\"px)\"}),m.addClass(x.animating).css({top:e.origin+\"px\",transform:\"rotateX(90deg) translateZ(\"+e.depth.next+\"px)\"})},below:function(){var e={origin:(t.outerHeight(!0)-m.outerHeight(!0))/2,depth:{active:m.outerHeight(!0)/2,next:t.outerHeight(!0)/2}};g.verbose(\"Setting the initial animation position as below\",m,e),k.css({transform:\"translateZ(-\"+e.depth.active+\"px)\"}),t.css({transform:\"rotateY(0deg) translateZ(\"+e.depth.active+\"px)\"}),m.addClass(x.animating).css({top:e.origin+\"px\",transform:\"rotateX(-90deg) translateZ(\"+e.depth.next+\"px)\"})},left:function(){var e=t.outerWidth(!0),n=m.outerWidth(!0),i={origin:(e-n)/2,depth:{active:n/2,next:e/2}};g.verbose(\"Setting the initial animation position as left\",m,i),k.css({transform:\"translateZ(-\"+i.depth.active+\"px)\"}),t.css({transform:\"rotateY(0deg) translateZ(\"+i.depth.active+\"px)\"}),m.addClass(x.animating).css({left:i.origin+\"px\",transform:\"rotateY(-90deg) translateZ(\"+i.depth.next+\"px)\"})},right:function(){var e=t.outerWidth(!0),n=m.outerWidth(!0),i={origin:(e-n)/2,depth:{active:n/2,next:e/2}};g.verbose(\"Setting the initial animation position as left\",m,i),k.css({transform:\"translateZ(-\"+i.depth.active+\"px)\"}),t.css({transform:\"rotateY(0deg) translateZ(\"+i.depth.active+\"px)\"}),m.addClass(x.animating).css({left:i.origin+\"px\",transform:\"rotateY(90deg) translateZ(\"+i.depth.next+\"px)\"})},behind:function(){var e=t.outerWidth(!0),n=m.outerWidth(!0),i={origin:(e-n)/2,depth:{active:n/2,next:e/2}};g.verbose(\"Setting the initial animation position as behind\",m,i),t.css({transform:\"rotateY(0deg)\"}),m.addClass(x.animating).css({left:i.origin+\"px\",transform:\"rotateY(-180deg)\"})}},setting:function(t,n){if(g.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,h,t);else{if(n===i)return h[t];e.isPlainObject(h[t])?e.extend(!0,h[t],n):h[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,g,t);else{if(n===i)return g[t];g[t]=n}},debug:function(){!h.silent&&h.debug&&(h.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,h.name+\":\"),g.debug.apply(console,arguments)))},verbose:function(){!h.silent&&h.verbose&&h.debug&&(h.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,h.name+\":\"),g.verbose.apply(console,arguments)))},error:function(){h.silent||(g.error=Function.prototype.bind.call(console.error,console,h.name+\":\"),g.error.apply(console,arguments))},performance:{log:function(e){var t,n;h.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:R,\"Execution Time\":n})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,500)},display:function(){var t=h.name+\":\",n=0;s=!1,clearTimeout(g.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",p&&(t+=\" '\"+p+\"'\"),r.length>1&&(t+=\" (\"+r.length+\")\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,o){var r,s,l,c=P;return n=n||d,o=R||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},u?(P===i&&g.initialize(),g.invoke(c)):(P!==i&&P.invoke(\"destroy\"),g.initialize())}),a!==i?a:this},e.fn.shape.settings={name:\"Shape\",silent:!1,debug:!1,verbose:!1,jitter:0,performance:!0,namespace:\"shape\",width:\"initial\",height:\"initial\",beforeChange:function(){},onChange:function(){},allowRepeats:!1,duration:!1,error:{side:\"You tried to switch to a side that does not exist.\",method:\"The method you called is not defined\"},className:{animating:\"animating\",hidden:\"hidden\",loading:\"loading\",active:\"active\"},selector:{sides:\".sides\",side:\".side\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.sidebar=function(o){var a,r=e(this),s=e(t),l=e(n),c=e(\"html\"),u=e(\"head\"),d=r.selector||\"\",f=(new Date).getTime(),m=[],g=arguments[0],p=\"string\"==typeof g,h=[].slice.call(arguments,1),v=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return r.each(function(){var r,b,y,x,C,w,S=e.isPlainObject(o)?e.extend(!0,{},e.fn.sidebar.settings,o):e.extend({},e.fn.sidebar.settings),k=S.selector,T=S.className,A=S.namespace,R=S.regExp,P=S.error,E=\".\"+A,F=\"module-\"+A,O=e(this),D=e(S.context),q=O.children(k.sidebar),j=(D.children(k.fixed),D.children(k.pusher)),z=this,I=O.data(F);w={initialize:function(){w.debug(\"Initializing sidebar\",o),w.create.id(),C=w.get.transitionEvent(),S.delaySetup?v(w.setup.layout):w.setup.layout(),v(function(){w.setup.cache()}),w.instantiate()},instantiate:function(){w.verbose(\"Storing instance of module\",w),I=w,O.data(F,w)},create:{id:function(){y=(Math.random().toString(16)+\"000000000\").substr(2,8),b=\".\"+y,w.verbose(\"Creating unique id for element\",y)}},destroy:function(){w.verbose(\"Destroying previous module for\",O),O.off(E).removeData(F),w.is.ios()&&w.remove.ios(),D.off(b),s.off(b),l.off(b)},event:{clickaway:function(e){var t=j.find(e.target).length>0||j.is(e.target),n=D.is(e.target);t&&(w.verbose(\"User clicked on dimmed page\"),w.hide()),n&&(w.verbose(\"User clicked on dimmable context (scaled out page)\"),w.hide())},touch:function(e){},containScroll:function(e){z.scrollTop<=0&&(z.scrollTop=1),z.scrollTop+z.offsetHeight>=z.scrollHeight&&(z.scrollTop=z.scrollHeight-z.offsetHeight-1)},scroll:function(t){0===e(t.target).closest(k.sidebar).length&&t.preventDefault()}},bind:{clickaway:function(){w.verbose(\"Adding clickaway events to context\",D),S.closable&&D.on(\"click\"+b,w.event.clickaway).on(\"touchend\"+b,w.event.clickaway)},scrollLock:function(){S.scrollLock&&(w.debug(\"Disabling page scroll\"),s.on(\"DOMMouseScroll\"+b,w.event.scroll)),w.verbose(\"Adding events to contain sidebar scroll\"),l.on(\"touchmove\"+b,w.event.touch),O.on(\"scroll\"+E,w.event.containScroll)}},unbind:{clickaway:function(){w.verbose(\"Removing clickaway events from context\",D),D.off(b)},scrollLock:function(){w.verbose(\"Removing scroll lock from page\"),l.off(b),s.off(b),O.off(\"scroll\"+E)}},add:{inlineCSS:function(){var t,n=w.cache.width||O.outerWidth(),i=w.cache.height||O.outerHeight(),o=w.is.rtl(),a=w.get.direction(),s={left:n,right:-n,top:i,bottom:-i};o&&(w.verbose(\"RTL detected, flipping widths\"),s.left=-n,s.right=n),t=\"<style>\",\"left\"===a||\"right\"===a?(w.debug(\"Adding CSS rules for animation distance\",n),t+=\" .ui.visible.\"+a+\".sidebar ~ .fixed, .ui.visible.\"+a+\".sidebar ~ .pusher { -webkit-transform: translate3d(\"+s[a]+\"px, 0, 0); transform: translate3d(\"+s[a]+\"px, 0, 0); }\"):\"top\"!==a&&\"bottom\"!=a||(t+=\" .ui.visible.\"+a+\".sidebar ~ .fixed, .ui.visible.\"+a+\".sidebar ~ .pusher { -webkit-transform: translate3d(0, \"+s[a]+\"px, 0); transform: translate3d(0, \"+s[a]+\"px, 0); }\"),w.is.ie()&&(\"left\"===a||\"right\"===a?(w.debug(\"Adding CSS rules for animation distance\",n),t+=\" body.pushable > .ui.visible.\"+a+\".sidebar ~ .pusher:after { -webkit-transform: translate3d(\"+s[a]+\"px, 0, 0); transform: translate3d(\"+s[a]+\"px, 0, 0); }\"):\"top\"!==a&&\"bottom\"!=a||(t+=\" body.pushable > .ui.visible.\"+a+\".sidebar ~ .pusher:after { -webkit-transform: translate3d(0, \"+s[a]+\"px, 0); transform: translate3d(0, \"+s[a]+\"px, 0); }\"),t+=\" body.pushable > .ui.visible.left.sidebar ~ .ui.visible.right.sidebar ~ .pusher:after, body.pushable > .ui.visible.right.sidebar ~ .ui.visible.left.sidebar ~ .pusher:after { -webkit-transform: translate3d(0px, 0, 0); transform: translate3d(0px, 0, 0); }\"),r=e(t+=\"</style>\").appendTo(u),w.debug(\"Adding sizing css to head\",r)}},refresh:function(){w.verbose(\"Refreshing selector cache\"),D=e(S.context),q=D.children(k.sidebar),j=D.children(k.pusher),D.children(k.fixed),w.clear.cache()},refreshSidebars:function(){w.verbose(\"Refreshing other sidebars\"),q=D.children(k.sidebar)},repaint:function(){w.verbose(\"Forcing repaint event\"),z.style.display=\"none\";z.offsetHeight;z.scrollTop=z.scrollTop,z.style.display=\"\"},setup:{cache:function(){w.cache={width:O.outerWidth(),height:O.outerHeight(),rtl:\"rtl\"==O.css(\"direction\")}},layout:function(){0===D.children(k.pusher).length&&(w.debug(\"Adding wrapper element for sidebar\"),w.error(P.pusher),j=e('<div class=\"pusher\" />'),D.children().not(k.omitted).not(q).wrapAll(j),w.refresh()),0!==O.nextAll(k.pusher).length&&O.nextAll(k.pusher)[0]===j[0]||(w.debug(\"Moved sidebar to correct parent element\"),w.error(P.movedSidebar,z),O.detach().prependTo(D),w.refresh()),w.clear.cache(),w.set.pushable(),w.set.direction()}},attachEvents:function(t,n){var i=e(t);n=e.isFunction(w[n])?w[n]:w.toggle,i.length>0?(w.debug(\"Attaching sidebar events to element\",t,n),i.on(\"click\"+E,n)):w.error(P.notFound,t)},show:function(t){if(t=e.isFunction(t)?t:function(){},w.is.hidden()){if(w.refreshSidebars(),S.overlay&&(w.error(P.overlay),S.transition=\"overlay\"),w.refresh(),w.othersActive())if(w.debug(\"Other sidebars currently visible\"),S.exclusive){if(\"overlay\"!=S.transition)return void w.hideOthers(w.show);w.hideOthers()}else S.transition=\"overlay\";w.pushPage(function(){t.call(z),S.onShow.call(z)}),S.onChange.call(z),S.onVisible.call(z)}else w.debug(\"Sidebar is already visible\")},hide:function(t){t=e.isFunction(t)?t:function(){},(w.is.visible()||w.is.animating())&&(w.debug(\"Hiding sidebar\",t),w.refreshSidebars(),w.pullPage(function(){t.call(z),S.onHidden.call(z)}),S.onChange.call(z),S.onHide.call(z))},othersAnimating:function(){return q.not(O).filter(\".\"+T.animating).length>0},othersVisible:function(){return q.not(O).filter(\".\"+T.visible).length>0},othersActive:function(){return w.othersVisible()||w.othersAnimating()},hideOthers:function(e){var t=q.not(O).filter(\".\"+T.visible),n=t.length,i=0;e=e||function(){},t.sidebar(\"hide\",function(){++i==n&&e()})},toggle:function(){w.verbose(\"Determining toggled direction\"),w.is.hidden()?w.show():w.hide()},pushPage:function(t){var n,i,o,a=w.get.transition(),r=\"overlay\"===a||w.othersActive()?O:j;t=e.isFunction(t)?t:function(){},\"scale down\"==S.transition&&w.scrollToTop(),w.set.transition(a),w.repaint(),n=function(){w.bind.clickaway(),w.add.inlineCSS(),w.set.animating(),w.set.visible()},i=function(){w.set.dimmed()},o=function(e){e.target==r[0]&&(r.off(C+b,o),w.remove.animating(),w.bind.scrollLock(),t.call(z))},r.off(C+b),r.on(C+b,o),v(n),S.dimPage&&!w.othersVisible()&&v(i)},pullPage:function(t){var n,i,o=w.get.transition(),a=\"overlay\"==o||w.othersActive()?O:j;t=e.isFunction(t)?t:function(){},w.verbose(\"Removing context push state\",w.get.direction()),w.unbind.clickaway(),w.unbind.scrollLock(),n=function(){w.set.transition(o),w.set.animating(),w.remove.visible(),S.dimPage&&!w.othersVisible()&&j.removeClass(T.dimmed)},i=function(e){e.target==a[0]&&(a.off(C+b,i),w.remove.animating(),w.remove.transition(),w.remove.inlineCSS(),(\"scale down\"==o||S.returnScroll&&w.is.mobile())&&w.scrollBack(),t.call(z))},a.off(C+b),a.on(C+b,i),v(n)},scrollToTop:function(){w.verbose(\"Scrolling to top of page to avoid animation issues\"),x=e(t).scrollTop(),O.scrollTop(0),t.scrollTo(0,0)},scrollBack:function(){w.verbose(\"Scrolling back to original page position\"),t.scrollTo(0,x)},clear:{cache:function(){w.verbose(\"Clearing cached dimensions\"),w.cache={}}},set:{ios:function(){c.addClass(T.ios)},pushed:function(){D.addClass(T.pushed)},pushable:function(){D.addClass(T.pushable)},dimmed:function(){j.addClass(T.dimmed)},active:function(){O.addClass(T.active)},animating:function(){O.addClass(T.animating)},transition:function(e){e=e||w.get.transition(),O.addClass(e)},direction:function(e){e=e||w.get.direction(),O.addClass(T[e])},visible:function(){O.addClass(T.visible)},overlay:function(){O.addClass(T.overlay)}},remove:{inlineCSS:function(){w.debug(\"Removing inline css styles\",r),r&&r.length>0&&r.remove()},ios:function(){c.removeClass(T.ios)},pushed:function(){D.removeClass(T.pushed)},pushable:function(){D.removeClass(T.pushable)},active:function(){O.removeClass(T.active)},animating:function(){O.removeClass(T.animating)},transition:function(e){e=e||w.get.transition(),O.removeClass(e)},direction:function(e){e=e||w.get.direction(),O.removeClass(T[e])},visible:function(){O.removeClass(T.visible)},overlay:function(){O.removeClass(T.overlay)}},get:{direction:function(){return O.hasClass(T.top)?T.top:O.hasClass(T.right)?T.right:O.hasClass(T.bottom)?T.bottom:T.left},transition:function(){var e,t=w.get.direction();return e=w.is.mobile()?\"auto\"==S.mobileTransition?S.defaultTransition.mobile[t]:S.mobileTransition:\"auto\"==S.transition?S.defaultTransition.computer[t]:S.transition,w.verbose(\"Determined transition\",e),e},transitionEvent:function(){var e,t=n.createElement(\"element\"),o={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(e in o)if(t.style[e]!==i)return o[e]}},is:{ie:function(){return!t.ActiveXObject&&\"ActiveXObject\"in t||\"ActiveXObject\"in t},ios:function(){var e=navigator.userAgent,t=e.match(R.ios),n=e.match(R.mobileChrome);return!(!t||n)&&(w.verbose(\"Browser was found to be iOS\",e),!0)},mobile:function(){var e=navigator.userAgent;return e.match(R.mobile)?(w.verbose(\"Browser was found to be mobile\",e),!0):(w.verbose(\"Browser is not mobile, using regular transition\",e),!1)},hidden:function(){return!w.is.visible()},visible:function(){return O.hasClass(T.visible)},open:function(){return w.is.visible()},closed:function(){return w.is.hidden()},vertical:function(){return O.hasClass(T.top)},animating:function(){return D.hasClass(T.animating)},rtl:function(){return w.cache.rtl===i&&(w.cache.rtl=\"rtl\"==O.css(\"direction\")),w.cache.rtl}},setting:function(t,n){if(w.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,S,t);else{if(n===i)return S[t];e.isPlainObject(S[t])?e.extend(!0,S[t],n):S[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,w,t);else{if(n===i)return w[t];w[t]=n}},debug:function(){!S.silent&&S.debug&&(S.performance?w.performance.log(arguments):(w.debug=Function.prototype.bind.call(console.info,console,S.name+\":\"),w.debug.apply(console,arguments)))},verbose:function(){!S.silent&&S.verbose&&S.debug&&(S.performance?w.performance.log(arguments):(w.verbose=Function.prototype.bind.call(console.info,console,S.name+\":\"),w.verbose.apply(console,arguments)))},error:function(){S.silent||(w.error=Function.prototype.bind.call(console.error,console,S.name+\":\"),w.error.apply(console,arguments))},performance:{log:function(e){var t,n;S.performance&&(n=(t=(new Date).getTime())-(f||t),f=t,m.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:z,\"Execution Time\":n})),clearTimeout(w.performance.timer),w.performance.timer=setTimeout(w.performance.display,500)},display:function(){var t=S.name+\":\",n=0;f=!1,clearTimeout(w.performance.timer),e.each(m,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",d&&(t+=\" '\"+d+\"'\"),(console.group!==i||console.table!==i)&&m.length>0&&(console.groupCollapsed(t),console.table?console.table(m):e.each(m,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),m=[]}},invoke:function(t,n,o){var r,s,l,c=I;return n=n||h,o=z||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(w.error(P.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},p?(I===i&&w.initialize(),w.invoke(g)):(I!==i&&w.invoke(\"destroy\"),w.initialize())}),a!==i?a:this},e.fn.sidebar.settings={name:\"Sidebar\",namespace:\"sidebar\",silent:!1,debug:!1,verbose:!1,performance:!0,transition:\"auto\",mobileTransition:\"auto\",defaultTransition:{computer:{left:\"uncover\",right:\"uncover\",top:\"overlay\",bottom:\"overlay\"},mobile:{left:\"uncover\",right:\"uncover\",top:\"overlay\",bottom:\"overlay\"}},context:\"body\",exclusive:!1,closable:!0,dimPage:!0,scrollLock:!1,returnScroll:!1,delaySetup:!1,duration:500,onChange:function(){},onShow:function(){},onHide:function(){},onHidden:function(){},onVisible:function(){},className:{active:\"active\",animating:\"animating\",dimmed:\"dimmed\",ios:\"ios\",pushable:\"pushable\",pushed:\"pushed\",right:\"right\",top:\"top\",left:\"left\",bottom:\"bottom\",visible:\"visible\"},selector:{fixed:\".fixed\",omitted:\"script, link, style, .ui.modal, .ui.dimmer, .ui.nag, .ui.fixed\",pusher:\".pusher\",sidebar:\".ui.sidebar\"},regExp:{ios:/(iPad|iPhone|iPod)/g,mobileChrome:/(CriOS)/g,mobile:/Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/g},error:{method:\"The method you called is not defined.\",pusher:\"Had to add pusher element. For optimal performance make sure body content is inside a pusher element\",movedSidebar:\"Had to move sidebar. For optimal performance make sure sidebar and pusher are direct children of your body tag\",overlay:\"The overlay setting is no longer supported, use animation: overlay\",notFound:\"There were no elements that matched the specified selector\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.sticky=function(o){var a,r=e(this),s=r.selector||\"\",l=(new Date).getTime(),c=[],u=arguments[0],d=\"string\"==typeof u,f=[].slice.call(arguments,1);return r.each(function(){var r,m,g,p,h,v=e.isPlainObject(o)?e.extend(!0,{},e.fn.sticky.settings,o):e.extend({},e.fn.sticky.settings),b=v.className,y=v.namespace,x=v.error,C=\".\"+y,w=\"module-\"+y,S=e(this),k=e(t),T=e(v.scrollContext),A=(S.selector,S.data(w)),R=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)},P=this;h={initialize:function(){h.determineContainer(),h.determineContext(),h.verbose(\"Initializing sticky\",v,r),h.save.positions(),h.checkErrors(),h.bind.events(),v.observeChanges&&h.observeChanges(),h.instantiate()},instantiate:function(){h.verbose(\"Storing instance of module\",h),A=h,S.data(w,h)},destroy:function(){h.verbose(\"Destroying previous instance\"),h.reset(),g&&g.disconnect(),p&&p.disconnect(),k.off(\"load\"+C,h.event.load).off(\"resize\"+C,h.event.resize),T.off(\"scrollchange\"+C,h.event.scrollchange),S.removeData(w)},observeChanges:function(){\"MutationObserver\"in t&&(g=new MutationObserver(h.event.documentChanged),p=new MutationObserver(h.event.changed),g.observe(n,{childList:!0,subtree:!0}),p.observe(P,{childList:!0,subtree:!0}),p.observe(m[0],{childList:!0,subtree:!0}),h.debug(\"Setting up mutation observer\",p))},determineContainer:function(){r=v.container?e(v.container):S.offsetParent()},determineContext:function(){0!==(m=v.context?e(v.context):r).length||h.error(x.invalidContext,v.context,S)},checkErrors:function(){if(h.is.hidden()&&h.error(x.visible,S),h.cache.element.height>h.cache.context.height)return h.reset(),void h.error(x.elementSize,S)},bind:{events:function(){k.on(\"load\"+C,h.event.load).on(\"resize\"+C,h.event.resize),T.off(\"scroll\"+C).on(\"scroll\"+C,h.event.scroll).on(\"scrollchange\"+C,h.event.scrollchange)}},event:{changed:function(e){clearTimeout(h.timer),h.timer=setTimeout(function(){h.verbose(\"DOM tree modified, updating sticky menu\",e),h.refresh()},100)},documentChanged:function(t){[].forEach.call(t,function(t){t.removedNodes&&[].forEach.call(t.removedNodes,function(t){(t==P||e(t).find(P).length>0)&&(h.debug(\"Element removed from DOM, tearing down events\"),h.destroy())})})},load:function(){h.verbose(\"Page contents finished loading\"),R(h.refresh)},resize:function(){h.verbose(\"Window resized\"),R(h.refresh)},scroll:function(){R(function(){T.triggerHandler(\"scrollchange\"+C,T.scrollTop())})},scrollchange:function(e,t){h.stick(t),v.onScroll.call(P)}},refresh:function(e){h.reset(),v.context||h.determineContext(),e&&h.determineContainer(),h.save.positions(),h.stick(),v.onReposition.call(P)},supports:{sticky:function(){var t=e(\"<div/>\");t[0];return t.addClass(b.supported),t.css(\"position\").match(\"sticky\")}},save:{lastScroll:function(e){h.lastScroll=e},elementScroll:function(e){h.elementScroll=e},positions:function(){var e={height:T.height()},t={margin:{top:parseInt(S.css(\"margin-top\"),10),bottom:parseInt(S.css(\"margin-bottom\"),10)},offset:S.offset(),width:S.outerWidth(),height:S.outerHeight()},n={offset:m.offset(),height:m.outerHeight()};r.outerHeight();h.is.standardScroll()||(h.debug(\"Non-standard scroll. Removing scroll offset from element offset\"),e.top=T.scrollTop(),e.left=T.scrollLeft(),t.offset.top+=e.top,n.offset.top+=e.top,t.offset.left+=e.left,n.offset.left+=e.left),h.cache={fits:t.height+v.offset<=e.height,sameHeight:t.height==n.height,scrollContext:{height:e.height},element:{margin:t.margin,top:t.offset.top-t.margin.top,left:t.offset.left,width:t.width,height:t.height,bottom:t.offset.top+t.height},context:{top:n.offset.top,height:n.height,bottom:n.offset.top+n.height}},h.set.containerSize(),h.stick(),h.debug(\"Caching element positions\",h.cache)}},get:{direction:function(e){var t=\"down\";return e=e||T.scrollTop(),h.lastScroll!==i&&(h.lastScroll<e?t=\"down\":h.lastScroll>e&&(t=\"up\")),t},scrollChange:function(e){return e=e||T.scrollTop(),h.lastScroll?e-h.lastScroll:0},currentElementScroll:function(){return h.elementScroll?h.elementScroll:h.is.top()?Math.abs(parseInt(S.css(\"top\"),10))||0:Math.abs(parseInt(S.css(\"bottom\"),10))||0},elementScroll:function(e){e=e||T.scrollTop();var t=h.cache.element,n=h.cache.scrollContext,i=h.get.scrollChange(e),o=t.height-n.height+v.offset,a=h.get.currentElementScroll(),r=a+i;return a=h.cache.fits||r<0?0:r>o?o:r}},remove:{lastScroll:function(){delete h.lastScroll},elementScroll:function(e){delete h.elementScroll},minimumSize:function(){r.css(\"min-height\",\"\")},offset:function(){S.css(\"margin-top\",\"\")}},set:{offset:function(){h.verbose(\"Setting offset on element\",v.offset),S.css(\"margin-top\",v.offset)},containerSize:function(){var e=r.get(0).tagName;\"HTML\"===e||\"body\"==e?h.determineContainer():Math.abs(r.outerHeight()-h.cache.context.height)>v.jitter&&(h.debug(\"Context has padding, specifying exact height for container\",h.cache.context.height),r.css({height:h.cache.context.height}))},minimumSize:function(){var e=h.cache.element;r.css(\"min-height\",e.height)},scroll:function(e){h.debug(\"Setting scroll on element\",e),h.elementScroll!=e&&(h.is.top()&&S.css(\"bottom\",\"\").css(\"top\",-e),h.is.bottom()&&S.css(\"top\",\"\").css(\"bottom\",e))},size:function(){0!==h.cache.element.height&&0!==h.cache.element.width&&(P.style.setProperty(\"width\",h.cache.element.width+\"px\",\"important\"),P.style.setProperty(\"height\",h.cache.element.height+\"px\",\"important\"))}},is:{standardScroll:function(){return T[0]==t},top:function(){return S.hasClass(b.top)},bottom:function(){return S.hasClass(b.bottom)},initialPosition:function(){return!h.is.fixed()&&!h.is.bound()},hidden:function(){return!S.is(\":visible\")},bound:function(){return S.hasClass(b.bound)},fixed:function(){return S.hasClass(b.fixed)}},stick:function(e){var t=e||T.scrollTop(),n=h.cache,i=n.fits,o=n.sameHeight,a=n.element,r=n.scrollContext,s=n.context,l=h.is.bottom()&&v.pushing?v.bottomOffset:v.offset,c=(e={top:t+l,bottom:t+l+r.height},h.get.direction(e.top),i?0:h.get.elementScroll(e.top)),u=!i;0!==a.height&&!o&&(h.is.initialPosition()?e.top>=s.bottom?(h.debug(\"Initial element position is bottom of container\"),h.bindBottom()):e.top>a.top&&(a.height+e.top-c>=s.bottom?(h.debug(\"Initial element position is bottom of container\"),h.bindBottom()):(h.debug(\"Initial element position is fixed\"),h.fixTop())):h.is.fixed()?h.is.top()?e.top<=a.top?(h.debug(\"Fixed element reached top of container\"),h.setInitialPosition()):a.height+e.top-c>=s.bottom?(h.debug(\"Fixed element reached bottom of container\"),h.bindBottom()):u&&(h.set.scroll(c),h.save.lastScroll(e.top),h.save.elementScroll(c)):h.is.bottom()&&(e.bottom-a.height<=a.top?(h.debug(\"Bottom fixed rail has reached top of container\"),h.setInitialPosition()):e.bottom>=s.bottom?(h.debug(\"Bottom fixed rail has reached bottom of container\"),h.bindBottom()):u&&(h.set.scroll(c),h.save.lastScroll(e.top),h.save.elementScroll(c))):h.is.bottom()&&(e.top<=a.top?(h.debug(\"Jumped from bottom fixed to top fixed, most likely used home/end button\"),h.setInitialPosition()):v.pushing?h.is.bound()&&e.bottom<=s.bottom&&(h.debug(\"Fixing bottom attached element to bottom of browser.\"),h.fixBottom()):h.is.bound()&&e.top<=s.bottom-a.height&&(h.debug(\"Fixing bottom attached element to top of browser.\"),h.fixTop())))},bindTop:function(){h.debug(\"Binding element to top of parent container\"),h.remove.offset(),S.css({left:\"\",top:\"\",marginBottom:\"\"}).removeClass(b.fixed).removeClass(b.bottom).addClass(b.bound).addClass(b.top),v.onTop.call(P),v.onUnstick.call(P)},bindBottom:function(){h.debug(\"Binding element to bottom of parent container\"),h.remove.offset(),S.css({left:\"\",top:\"\"}).removeClass(b.fixed).removeClass(b.top).addClass(b.bound).addClass(b.bottom),v.onBottom.call(P),v.onUnstick.call(P)},setInitialPosition:function(){h.debug(\"Returning to initial position\"),h.unfix(),h.unbind()},fixTop:function(){h.debug(\"Fixing element to top of page\"),v.setSize&&h.set.size(),h.set.minimumSize(),h.set.offset(),S.css({left:h.cache.element.left,bottom:\"\",marginBottom:\"\"}).removeClass(b.bound).removeClass(b.bottom).addClass(b.fixed).addClass(b.top),v.onStick.call(P)},fixBottom:function(){h.debug(\"Sticking element to bottom of page\"),v.setSize&&h.set.size(),h.set.minimumSize(),h.set.offset(),S.css({left:h.cache.element.left,bottom:\"\",marginBottom:\"\"}).removeClass(b.bound).removeClass(b.top).addClass(b.fixed).addClass(b.bottom),v.onStick.call(P)},unbind:function(){h.is.bound()&&(h.debug(\"Removing container bound position on element\"),h.remove.offset(),S.removeClass(b.bound).removeClass(b.top).removeClass(b.bottom))},unfix:function(){h.is.fixed()&&(h.debug(\"Removing fixed position on element\"),h.remove.minimumSize(),h.remove.offset(),S.removeClass(b.fixed).removeClass(b.top).removeClass(b.bottom),v.onUnstick.call(P))},reset:function(){h.debug(\"Resetting elements position\"),h.unbind(),h.unfix(),h.resetCSS(),h.remove.offset(),h.remove.lastScroll()},resetCSS:function(){S.css({width:\"\",height:\"\"}),r.css({height:\"\"})},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,v,t);else{if(n===i)return v[t];v[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,h,t);else{if(n===i)return h[t];h[t]=n}},debug:function(){!v.silent&&v.debug&&(v.performance?h.performance.log(arguments):(h.debug=Function.prototype.bind.call(console.info,console,v.name+\":\"),h.debug.apply(console,arguments)))},verbose:function(){!v.silent&&v.verbose&&v.debug&&(v.performance?h.performance.log(arguments):(h.verbose=Function.prototype.bind.call(console.info,console,v.name+\":\"),h.verbose.apply(console,arguments)))},error:function(){v.silent||(h.error=Function.prototype.bind.call(console.error,console,v.name+\":\"),h.error.apply(console,arguments))},performance:{log:function(e){var t,n;v.performance&&(n=(t=(new Date).getTime())-(l||t),l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:P,\"Execution Time\":n})),clearTimeout(h.performance.timer),h.performance.timer=setTimeout(h.performance.display,0)},display:function(){var t=v.name+\":\",n=0;l=!1,clearTimeout(h.performance.timer),e.each(c,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",s&&(t+=\" '\"+s+\"'\"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=A;return n=n||f,o=P||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(A===i&&h.initialize(),h.invoke(u)):(A!==i&&A.invoke(\"destroy\"),h.initialize())}),a!==i?a:this},e.fn.sticky.settings={name:\"Sticky\",namespace:\"sticky\",silent:!1,debug:!1,verbose:!0,performance:!0,pushing:!1,context:!1,container:!1,scrollContext:t,offset:0,bottomOffset:0,jitter:5,setSize:!0,observeChanges:!1,onReposition:function(){},onScroll:function(){},onStick:function(){},onUnstick:function(){},onTop:function(){},onBottom:function(){},error:{container:\"Sticky element must be inside a relative container\",visible:\"Element is hidden, you must call refresh after element becomes visible. Use silent setting to surpress this warning in production.\",method:\"The method you called is not defined.\",invalidContext:\"Context specified does not exist\",elementSize:\"Sticky element is larger than its container, cannot create sticky.\"},className:{bound:\"bound\",fixed:\"fixed\",supported:\"native\",top:\"top\",bottom:\"bottom\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.tab=function(o){var a,r=e.isFunction(this)?e(t):e(this),s=r.selector||\"\",l=(new Date).getTime(),c=[],u=arguments[0],d=\"string\"==typeof u,f=[].slice.call(arguments,1),m=!1;return r.each(function(){var g,p,h,v,b,y,x=e.isPlainObject(o)?e.extend(!0,{},e.fn.tab.settings,o):e.extend({},e.fn.tab.settings),C=x.className,w=x.metadata,S=x.selector,k=x.error,T=\".\"+x.namespace,A=\"module-\"+x.namespace,R=e(this),P={},E=!0,F=0,O=this,D=R.data(A);b={initialize:function(){b.debug(\"Initializing tab menu item\",R),b.fix.callbacks(),b.determineTabs(),b.debug(\"Determining tabs\",x.context,p),x.auto&&b.set.auto(),b.bind.events(),x.history&&!m&&(b.initializeHistory(),m=!0),b.instantiate()},instantiate:function(){b.verbose(\"Storing instance of module\",b),D=b,R.data(A,b)},destroy:function(){b.debug(\"Destroying tabs\",R),R.removeData(A).off(T)},bind:{events:function(){e.isWindow(O)||(b.debug(\"Attaching tab activation events to element\",R),R.on(\"click\"+T,b.event.click))}},determineTabs:function(){var t;\"parent\"===x.context?(R.closest(S.ui).length>0?(t=R.closest(S.ui),b.verbose(\"Using closest UI element as parent\",t)):t=R,g=t.parent(),b.verbose(\"Determined parent element for creating context\",g)):x.context?(g=e(x.context),b.verbose(\"Using selector for tab context\",x.context,g)):g=e(\"body\"),x.childrenOnly?(p=g.children(S.tabs),b.debug(\"Searching tab context children for tabs\",g,p)):(p=g.find(S.tabs),b.debug(\"Searching tab context for tabs\",g,p))},fix:{callbacks:function(){e.isPlainObject(o)&&(o.onTabLoad||o.onTabInit)&&(o.onTabLoad&&(o.onLoad=o.onTabLoad,delete o.onTabLoad,b.error(k.legacyLoad,o.onLoad)),o.onTabInit&&(o.onFirstLoad=o.onTabInit,delete o.onTabInit,b.error(k.legacyInit,o.onFirstLoad)),x=e.extend(!0,{},e.fn.tab.settings,o))}},initializeHistory:function(){if(b.debug(\"Initializing page state\"),e.address===i)return b.error(k.state),!1;if(\"state\"==x.historyType){if(b.debug(\"Using HTML5 to manage state\"),!1===x.path)return b.error(k.path),!1;e.address.history(!0).state(x.path)}e.address.bind(\"change\",b.event.history.change)},event:{click:function(t){var n=e(this).data(w.tab);n!==i?(x.history?(b.verbose(\"Updating page state\",t),e.address.value(n)):(b.verbose(\"Changing tab\",t),b.changeTab(n)),t.preventDefault()):b.debug(\"No tab specified\")},history:{change:function(t){var n=t.pathNames.join(\"/\")||b.get.initialPath(),o=x.templates.determineTitle(n)||!1;b.performance.display(),b.debug(\"History change event\",n,t),y=t,n!==i&&b.changeTab(n),o&&e.address.title(o)}}},refresh:function(){h&&(b.debug(\"Refreshing tab\",h),b.changeTab(h))},cache:{read:function(e){return e!==i&&P[e]},add:function(e,t){e=e||h,b.debug(\"Adding cached content for\",e),P[e]=t},remove:function(e){e=e||h,b.debug(\"Removing cached content for\",e),delete P[e]}},set:{auto:function(){var t=\"string\"==typeof x.path?x.path.replace(/\\/$/,\"\")+\"/{$tab}\":\"/{$tab}\";b.verbose(\"Setting up automatic tab retrieval from server\",t),e.isPlainObject(x.apiSettings)?x.apiSettings.url=t:x.apiSettings={url:t}},loading:function(e){var t=b.get.tabElement(e);t.hasClass(C.loading)||(b.verbose(\"Setting loading state for\",t),t.addClass(C.loading).siblings(p).removeClass(C.active+\" \"+C.loading),t.length>0&&x.onRequest.call(t[0],e))},state:function(t){e.address.value(t)}},changeTab:function(n){var i=t.history&&t.history.pushState&&x.ignoreFirstLoad&&E,o=x.auto||e.isPlainObject(x.apiSettings),a=o&&!i?b.utilities.pathToArray(n):b.get.defaultPathArray(n);n=b.utilities.arrayToPath(a),e.each(a,function(t,r){var s,l,c,u,d=a.slice(0,t+1),f=b.utilities.arrayToPath(d),m=b.is.tab(f),p=t+1==a.length,S=b.get.tabElement(f);if(b.verbose(\"Looking for tab\",r),m){if(b.verbose(\"Tab was found\",r),h=f,v=b.utilities.filterArray(a,d),p?u=!0:(l=a.slice(0,t+2),c=b.utilities.arrayToPath(l),(u=!b.is.tab(c))&&b.verbose(\"Tab parameters found\",l)),u&&o)return i?(b.debug(\"Ignoring remote content on first tab load\",f),E=!1,b.cache.add(n,S.html()),b.activate.all(f),x.onFirstLoad.call(S[0],f,v,y),x.onLoad.call(S[0],f,v,y)):(b.activate.navigation(f),b.fetch.content(f,n)),!1;b.debug(\"Opened local tab\",f),b.activate.all(f),b.cache.read(f)||(b.cache.add(f,!0),b.debug(\"First time tab loaded calling tab init\"),x.onFirstLoad.call(S[0],f,v,y)),x.onLoad.call(S[0],f,v,y)}else{if(-1!=n.search(\"/\")||\"\"===n)return b.error(k.missingTab,R,g,f),!1;if(f=(s=e(\"#\"+n+', a[name=\"'+n+'\"]')).closest(\"[data-tab]\").data(w.tab),S=b.get.tabElement(f),s&&s.length>0&&f)return b.debug(\"Anchor link used, opening parent tab\",S,s),S.hasClass(C.active)||setTimeout(function(){b.scrollTo(s)},0),b.activate.all(f),b.cache.read(f)||(b.cache.add(f,!0),b.debug(\"First time tab loaded calling tab init\"),x.onFirstLoad.call(S[0],f,v,y)),x.onLoad.call(S[0],f,v,y),!1}})},scrollTo:function(t){var i=!!(t&&t.length>0)&&t.offset().top;!1!==i&&(b.debug(\"Forcing scroll to an in-page link in a hidden tab\",i,t),e(n).scrollTop(i))},update:{content:function(t,n,o){var a=b.get.tabElement(t),r=a[0];o=o!==i?o:x.evaluateScripts,\"string\"==typeof x.cacheType&&\"dom\"==x.cacheType.toLowerCase()&&\"string\"!=typeof n?a.empty().append(e(n).clone(!0)):o?(b.debug(\"Updating HTML and evaluating inline scripts\",t,n),a.html(n)):(b.debug(\"Updating HTML\",t,n),r.innerHTML=n)}},fetch:{content:function(t,n){var o,a,r=b.get.tabElement(t),s={dataType:\"html\",encodeParameters:!1,on:\"now\",cache:x.alwaysRefresh,headers:{\"X-Remote\":!0},onSuccess:function(e){\"response\"==x.cacheType&&b.cache.add(n,e),b.update.content(t,e),t==h?(b.debug(\"Content loaded\",t),b.activate.tab(t)):b.debug(\"Content loaded in background\",t),x.onFirstLoad.call(r[0],t,v,y),x.onLoad.call(r[0],t,v,y),x.loadOnce?b.cache.add(n,!0):\"string\"==typeof x.cacheType&&\"dom\"==x.cacheType.toLowerCase()&&r.children().length>0?setTimeout(function(){var e=r.children().clone(!0);e=e.not(\"script\"),b.cache.add(n,e)},0):b.cache.add(n,r.html())},urlData:{tab:n}},l=r.api(\"get request\")||!1,c=l&&\"pending\"===l.state();n=n||t,a=b.cache.read(n),x.cache&&a?(b.activate.tab(t),b.debug(\"Adding cached content\",n),x.loadOnce||(\"once\"==x.evaluateScripts?b.update.content(t,a,!1):b.update.content(t,a)),x.onLoad.call(r[0],t,v,y)):c?(b.set.loading(t),b.debug(\"Content is already loading\",n)):e.api!==i?(o=e.extend(!0,{},x.apiSettings,s),b.debug(\"Retrieving remote content\",n,o),b.set.loading(t),r.api(o)):b.error(k.api)}},activate:{all:function(e){b.activate.tab(e),b.activate.navigation(e)},tab:function(e){var t=b.get.tabElement(e),n=\"siblings\"==x.deactivate?t.siblings(p):p.not(t),i=t.hasClass(C.active);b.verbose(\"Showing tab content for\",t),i||(t.addClass(C.active),n.removeClass(C.active+\" \"+C.loading),t.length>0&&x.onVisible.call(t[0],e))},navigation:function(e){var t=b.get.navElement(e),n=\"siblings\"==x.deactivate?t.siblings(r):r.not(t),i=t.hasClass(C.active);b.verbose(\"Activating tab navigation for\",t,e),i||(t.addClass(C.active),n.removeClass(C.active+\" \"+C.loading))}},deactivate:{all:function(){b.deactivate.navigation(),b.deactivate.tabs()},navigation:function(){r.removeClass(C.active)},tabs:function(){p.removeClass(C.active+\" \"+C.loading)}},is:{tab:function(e){return e!==i&&b.get.tabElement(e).length>0}},get:{initialPath:function(){return r.eq(0).data(w.tab)||p.eq(0).data(w.tab)},path:function(){return e.address.value()},defaultPathArray:function(e){return b.utilities.pathToArray(b.get.defaultPath(e))},defaultPath:function(e){var t=r.filter(\"[data-\"+w.tab+'^=\"'+e+'/\"]').eq(0).data(w.tab)||!1;if(t){if(b.debug(\"Found default tab\",t),F<x.maxDepth)return F++,b.get.defaultPath(t);b.error(k.recursion)}else b.debug(\"No default tabs found for\",e,p);return F=0,e},navElement:function(e){return e=e||h,r.filter(\"[data-\"+w.tab+'=\"'+e+'\"]')},tabElement:function(e){var t,n,i,o;return e=e||h,i=b.utilities.pathToArray(e),o=b.utilities.last(i),t=p.filter(\"[data-\"+w.tab+'=\"'+e+'\"]'),n=p.filter(\"[data-\"+w.tab+'=\"'+o+'\"]'),t.length>0?t:n},tab:function(){return h}},utilities:{filterArray:function(t,n){return e.grep(t,function(t){return-1==e.inArray(t,n)})},last:function(t){return!!e.isArray(t)&&t[t.length-1]},pathToArray:function(e){return e===i&&(e=h),\"string\"==typeof e?e.split(\"/\"):[e]},arrayToPath:function(t){return!!e.isArray(t)&&t.join(\"/\")}},setting:function(t,n){if(b.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,x,t);else{if(n===i)return x[t];e.isPlainObject(x[t])?e.extend(!0,x[t],n):x[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,b,t);else{if(n===i)return b[t];b[t]=n}},debug:function(){!x.silent&&x.debug&&(x.performance?b.performance.log(arguments):(b.debug=Function.prototype.bind.call(console.info,console,x.name+\":\"),b.debug.apply(console,arguments)))},verbose:function(){!x.silent&&x.verbose&&x.debug&&(x.performance?b.performance.log(arguments):(b.verbose=Function.prototype.bind.call(console.info,console,x.name+\":\"),b.verbose.apply(console,arguments)))},error:function(){x.silent||(b.error=Function.prototype.bind.call(console.error,console,x.name+\":\"),b.error.apply(console,arguments))},performance:{log:function(e){var t,n;x.performance&&(n=(t=(new Date).getTime())-(l||t),l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:O,\"Execution Time\":n})),clearTimeout(b.performance.timer),b.performance.timer=setTimeout(b.performance.display,500)},display:function(){var t=x.name+\":\",n=0;l=!1,clearTimeout(b.performance.timer),e.each(c,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",s&&(t+=\" '\"+s+\"'\"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=D;return n=n||f,o=O||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(b.error(k.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(D===i&&b.initialize(),b.invoke(u)):(D!==i&&D.invoke(\"destroy\"),b.initialize())}),a!==i?a:this},e.tab=function(){e(t).tab.apply(this,arguments)},e.fn.tab.settings={name:\"Tab\",namespace:\"tab\",silent:!1,debug:!1,verbose:!1,performance:!0,auto:!1,history:!1,historyType:\"hash\",path:!1,context:!1,childrenOnly:!1,maxDepth:25,deactivate:\"siblings\",alwaysRefresh:!1,cache:!0,loadOnce:!1,cacheType:\"response\",ignoreFirstLoad:!1,apiSettings:!1,evaluateScripts:\"once\",onFirstLoad:function(e,t,n){},onLoad:function(e,t,n){},onVisible:function(e,t,n){},onRequest:function(e,t,n){},templates:{determineTitle:function(e){}},error:{api:\"You attempted to load content without API module\",method:\"The method you called is not defined\",missingTab:\"Activated tab cannot be found. Tabs are case-sensitive.\",noContent:\"The tab you specified is missing a content url.\",path:\"History enabled, but no path was specified\",recursion:\"Max recursive depth reached\",legacyInit:\"onTabInit has been renamed to onFirstLoad in 2.0, please adjust your code.\",legacyLoad:\"onTabLoad has been renamed to onLoad in 2.0. Please adjust your code\",state:\"History requires Asual's Address library <https://github.com/asual/jquery-address>\"},metadata:{tab:\"tab\",loaded:\"loaded\",promise:\"promise\"},className:{loading:\"loading\",active:\"active\"},selector:{tabs:\".ui.tab\",ui:\".ui\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.transition=function(){var o,a=e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments,u=c[0],d=[].slice.call(arguments,1),f=\"string\"==typeof u;t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame;return a.each(function(t){var m,g,p,h,v,b,y,x,C,w=e(this),S=this;(C={initialize:function(){m=C.get.settings.apply(S,c),h=m.className,p=m.error,v=m.metadata,x=\".\"+m.namespace,y=\"module-\"+m.namespace,g=w.data(y)||C,b=C.get.animationEndEvent(),f&&(f=C.invoke(u)),!1===f&&(C.verbose(\"Converted arguments into settings object\",m),m.interval?C.delay(m.animate):C.animate(),C.instantiate())},instantiate:function(){C.verbose(\"Storing instance of module\",C),g=C,w.data(y,g)},destroy:function(){C.verbose(\"Destroying previous module for\",S),w.removeData(y)},refresh:function(){C.verbose(\"Refreshing display type on next animation\"),delete C.displayType},forceRepaint:function(){C.verbose(\"Forcing element repaint\");var e=w.parent(),t=w.next();0===t.length?w.detach().appendTo(e):w.detach().insertBefore(t)},repaint:function(){C.verbose(\"Repainting element\");S.offsetWidth},delay:function(e){var n,o=C.get.animationDirection();o||(o=C.can.transition()?C.get.direction():\"static\"),e=e!==i?e:m.interval,n=\"auto\"==m.reverse&&o==h.outward||1==m.reverse?(a.length-t)*m.interval:t*m.interval,C.debug(\"Delaying animation by\",n),setTimeout(C.animate,n)},animate:function(e){if(m=e||m,!C.is.supported())return C.error(p.support),!1;if(C.debug(\"Preparing animation\",m.animation),C.is.animating()){if(m.queue)return!m.allowRepeats&&C.has.direction()&&C.is.occurring()&&!0!==C.queuing?C.debug(\"Animation is currently occurring, preventing queueing same animation\",m.animation):C.queue(m.animation),!1;if(!m.allowRepeats&&C.is.occurring())return C.debug(\"Animation is already occurring, will not execute repeated animation\",m.animation),!1;C.debug(\"New animation started, completing previous early\",m.animation),g.complete()}C.can.animate()?C.set.animating(m.animation):C.error(p.noAnimation,m.animation,S)},reset:function(){C.debug(\"Resetting animation to beginning conditions\"),C.remove.animationCallbacks(),C.restore.conditions(),C.remove.animating()},queue:function(e){C.debug(\"Queueing animation of\",e),C.queuing=!0,w.one(b+\".queue\"+x,function(){C.queuing=!1,C.repaint(),C.animate.apply(this,m)})},complete:function(e){C.debug(\"Animation complete\",m.animation),C.remove.completeCallback(),C.remove.failSafe(),C.is.looping()||(C.is.outward()?(C.verbose(\"Animation is outward, hiding element\"),C.restore.conditions(),C.hide()):C.is.inward()?(C.verbose(\"Animation is outward, showing element\"),C.restore.conditions(),C.show()):(C.verbose(\"Static animation completed\"),C.restore.conditions(),m.onComplete.call(S)))},force:{visible:function(){var e=w.attr(\"style\"),t=C.get.userStyle(),n=C.get.displayType(),o=t+\"display: \"+n+\" !important;\",a=w.css(\"display\"),r=e===i||\"\"===e;a!==n?(C.verbose(\"Overriding default display to show element\",n),w.attr(\"style\",o)):r&&w.removeAttr(\"style\")},hidden:function(){var e=w.attr(\"style\"),t=w.css(\"display\"),n=e===i||\"\"===e;\"none\"===t||C.is.hidden()?n&&w.removeAttr(\"style\"):(C.verbose(\"Overriding default display to hide element\"),w.css(\"display\",\"none\"))}},has:{direction:function(t){var n=!1;return\"string\"==typeof(t=t||m.animation)&&(t=t.split(\" \"),e.each(t,function(e,t){t!==h.inward&&t!==h.outward||(n=!0)})),n},inlineDisplay:function(){var t=w.attr(\"style\")||\"\";return e.isArray(t.match(/display.*?;/,\"\"))}},set:{animating:function(e){var t;C.remove.completeCallback(),e=e||m.animation,t=C.get.animationClass(e),C.save.animation(t),C.force.visible(),C.remove.hidden(),C.remove.direction(),C.start.animation(t)},duration:function(e,t){((t=\"number\"==typeof(t=t||m.duration)?t+\"ms\":t)||0===t)&&(C.verbose(\"Setting animation duration\",t),w.css({\"animation-duration\":t}))},direction:function(e){(e=e||C.get.direction())==h.inward?C.set.inward():C.set.outward()},looping:function(){C.debug(\"Transition set to loop\"),w.addClass(h.looping)},hidden:function(){w.addClass(h.transition).addClass(h.hidden)},inward:function(){C.debug(\"Setting direction to inward\"),w.removeClass(h.outward).addClass(h.inward)},outward:function(){C.debug(\"Setting direction to outward\"),w.removeClass(h.inward).addClass(h.outward)},visible:function(){w.addClass(h.transition).addClass(h.visible)}},start:{animation:function(e){e=e||C.get.animationClass(),C.debug(\"Starting tween\",e),w.addClass(e).one(b+\".complete\"+x,C.complete),m.useFailSafe&&C.add.failSafe(),C.set.duration(m.duration),m.onStart.call(S)}},save:{animation:function(e){C.cache||(C.cache={}),C.cache.animation=e},displayType:function(e){\"none\"!==e&&w.data(v.displayType,e)},transitionExists:function(t,n){e.fn.transition.exists[t]=n,C.verbose(\"Saving existence of transition\",t,n)}},restore:{conditions:function(){var e=C.get.currentAnimation();e&&(w.removeClass(e),C.verbose(\"Removing animation class\",C.cache)),C.remove.duration()}},add:{failSafe:function(){var e=C.get.duration();C.timer=setTimeout(function(){w.triggerHandler(b)},e+m.failSafeDelay),C.verbose(\"Adding fail safe timer\",C.timer)}},remove:{animating:function(){w.removeClass(h.animating)},animationCallbacks:function(){C.remove.queueCallback(),C.remove.completeCallback()},queueCallback:function(){w.off(\".queue\"+x)},completeCallback:function(){w.off(\".complete\"+x)},display:function(){w.css(\"display\",\"\")},direction:function(){w.removeClass(h.inward).removeClass(h.outward)},duration:function(){w.css(\"animation-duration\",\"\")},failSafe:function(){C.verbose(\"Removing fail safe timer\",C.timer),C.timer&&clearTimeout(C.timer)},hidden:function(){w.removeClass(h.hidden)},visible:function(){w.removeClass(h.visible)},looping:function(){C.debug(\"Transitions are no longer looping\"),C.is.looping()&&(C.reset(),w.removeClass(h.looping))},transition:function(){w.removeClass(h.visible).removeClass(h.hidden)}},get:{settings:function(t,n,i){return\"object\"==typeof t?e.extend(!0,{},e.fn.transition.settings,t):\"function\"==typeof i?e.extend({},e.fn.transition.settings,{animation:t,onComplete:i,duration:n}):\"string\"==typeof n||\"number\"==typeof n?e.extend({},e.fn.transition.settings,{animation:t,duration:n}):\"object\"==typeof n?e.extend({},e.fn.transition.settings,n,{animation:t}):\"function\"==typeof n?e.extend({},e.fn.transition.settings,{animation:t,onComplete:n}):e.extend({},e.fn.transition.settings,{animation:t})},animationClass:function(e){var t=e||m.animation,n=C.can.transition()&&!C.has.direction()?C.get.direction()+\" \":\"\";return h.animating+\" \"+h.transition+\" \"+n+t},currentAnimation:function(){return!(!C.cache||C.cache.animation===i)&&C.cache.animation},currentDirection:function(){return C.is.inward()?h.inward:h.outward},direction:function(){return C.is.hidden()||!C.is.visible()?h.inward:h.outward},animationDirection:function(t){var n;return\"string\"==typeof(t=t||m.animation)&&(t=t.split(\" \"),e.each(t,function(e,t){t===h.inward?n=h.inward:t===h.outward&&(n=h.outward)})),n||!1},duration:function(e){return!1===(e=e||m.duration)&&(e=w.css(\"animation-duration\")||0),\"string\"==typeof e?e.indexOf(\"ms\")>-1?parseFloat(e):1e3*parseFloat(e):e},displayType:function(e){return e=e===i||e,m.displayType?m.displayType:(e&&w.data(v.displayType)===i&&C.can.transition(!0),w.data(v.displayType))},userStyle:function(e){return(e=e||w.attr(\"style\")||\"\").replace(/display.*?;/,\"\")},transitionExists:function(t){return e.fn.transition.exists[t]},animationStartEvent:function(){var e,t=n.createElement(\"div\"),o={animation:\"animationstart\",OAnimation:\"oAnimationStart\",MozAnimation:\"mozAnimationStart\",WebkitAnimation:\"webkitAnimationStart\"};for(e in o)if(t.style[e]!==i)return o[e];return!1},animationEndEvent:function(){var e,t=n.createElement(\"div\"),o={animation:\"animationend\",OAnimation:\"oAnimationEnd\",MozAnimation:\"mozAnimationEnd\",WebkitAnimation:\"webkitAnimationEnd\"};for(e in o)if(t.style[e]!==i)return o[e];return!1}},can:{transition:function(t){var n,o,a,r,s,l,c=m.animation,u=C.get.transitionExists(c),d=C.get.displayType(!1);if(u===i||t){if(C.verbose(\"Determining whether animation exists\"),n=w.attr(\"class\"),o=w.prop(\"tagName\"),r=(a=e(\"<\"+o+\" />\").addClass(n).insertAfter(w)).addClass(c).removeClass(h.inward).removeClass(h.outward).addClass(h.animating).addClass(h.transition).css(\"animationName\"),s=a.addClass(h.inward).css(\"animationName\"),d||(d=a.attr(\"class\",n).removeAttr(\"style\").removeClass(h.hidden).removeClass(h.visible).show().css(\"display\"),C.verbose(\"Determining final display state\",d),C.save.displayType(d)),a.remove(),r!=s)C.debug(\"Direction exists for animation\",c),l=!0;else{if(\"none\"==r||!r)return void C.debug(\"No animation defined in css\",c);C.debug(\"Static animation found\",c,d),l=!1}C.save.transitionExists(c,l)}return u!==i?u:l},animate:function(){return C.can.transition()!==i}},is:{animating:function(){return w.hasClass(h.animating)},inward:function(){return w.hasClass(h.inward)},outward:function(){return w.hasClass(h.outward)},looping:function(){return w.hasClass(h.looping)},occurring:function(e){return e=\".\"+(e=e||m.animation).replace(\" \",\".\"),w.filter(e).length>0},visible:function(){return w.is(\":visible\")},hidden:function(){return\"hidden\"===w.css(\"visibility\")},supported:function(){return!1!==b}},hide:function(){C.verbose(\"Hiding element\"),C.is.animating()&&C.reset(),S.blur(),C.remove.display(),C.remove.visible(),C.set.hidden(),C.force.hidden(),m.onHide.call(S),m.onComplete.call(S)},show:function(e){C.verbose(\"Showing element\",e),C.remove.hidden(),C.set.visible(),C.force.visible(),m.onShow.call(S),m.onComplete.call(S)},toggle:function(){C.is.visible()?C.hide():C.show()},stop:function(){C.debug(\"Stopping current animation\"),w.triggerHandler(b)},stopAll:function(){C.debug(\"Stopping all animation\"),C.remove.queueCallback(),w.triggerHandler(b)},clear:{queue:function(){C.debug(\"Clearing animation queue\"),C.remove.queueCallback()}},enable:function(){C.verbose(\"Starting animation\"),w.removeClass(h.disabled)},disable:function(){C.debug(\"Stopping animation\"),w.addClass(h.disabled)},setting:function(t,n){if(C.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];e.isPlainObject(m[t])?e.extend(!0,m[t],n):m[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,C,t);else{if(n===i)return C[t];C[t]=n}},debug:function(){!m.silent&&m.debug&&(m.performance?C.performance.log(arguments):(C.debug=Function.prototype.bind.call(console.info,console,m.name+\":\"),C.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?C.performance.log(arguments):(C.verbose=Function.prototype.bind.call(console.info,console,m.name+\":\"),C.verbose.apply(console,arguments)))},error:function(){m.silent||(C.error=Function.prototype.bind.call(console.error,console,m.name+\":\"),C.error.apply(console,arguments))},performance:{log:function(e){var t,n;m.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:S,\"Execution Time\":n})),clearTimeout(C.performance.timer),C.performance.timer=setTimeout(C.performance.display,500)},display:function(){var t=m.name+\":\",n=0;s=!1,clearTimeout(C.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),a.length>1&&(t+=\" (\"+a.length+\")\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,a){var r,s,l,c=g;return n=n||d,a=S||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s!==i&&s}}).initialize()}),o!==i?o:this},e.fn.transition.exists={},e.fn.transition.settings={name:\"Transition\",silent:!1,debug:!1,verbose:!1,performance:!0,namespace:\"transition\",interval:0,reverse:\"auto\",onStart:function(){},onComplete:function(){},onShow:function(){},onHide:function(){},useFailSafe:!0,failSafeDelay:100,allowRepeats:!1,displayType:!1,animation:\"fade\",duration:!1,queue:!0,metadata:{displayType:\"display\"},className:{animating:\"animating\",disabled:\"disabled\",hidden:\"hidden\",inward:\"in\",loading:\"loading\",looping:\"looping\",outward:\"out\",transition:\"transition\",visible:\"visible\"},error:{noAnimation:\"Element is no longer attached to DOM. Unable to animate. Use silent setting to surpress this warning in production.\",repeated:\"That animation is already occurring, cancelling repeated animation\",method:\"The method you called is not defined\",support:\"This browser does not support CSS animations\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();e.api=e.fn.api=function(n){var o,a=e.isFunction(this)?e(t):e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var a,f,m,g,p,h,v=e.isPlainObject(n)?e.extend(!0,{},e.fn.api.settings,n):e.extend({},e.fn.api.settings),b=v.namespace,y=v.metadata,x=v.selector,C=v.error,w=v.className,S=\".\"+b,k=\"module-\"+b,T=e(this),A=T.closest(x.form),R=v.stateContext?e(v.stateContext):T,P=this,E=R[0],F=T.data(k);h={initialize:function(){u||h.bind.events(),h.instantiate()},instantiate:function(){h.verbose(\"Storing instance of module\",h),F=h,T.data(k,F)},destroy:function(){h.verbose(\"Destroying previous module for\",P),T.removeData(k).off(S)},bind:{events:function(){var e=h.get.event();e?(h.verbose(\"Attaching API events to element\",e),T.on(e+S,h.event.trigger)):\"now\"==v.on&&(h.debug(\"Querying API endpoint immediately\"),h.query())}},decode:{json:function(e){if(e!==i&&\"string\"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}},read:{cachedResponse:function(e){var n;if(t.Storage!==i)return n=sessionStorage.getItem(e),h.debug(\"Using cached response\",e,n),n=h.decode.json(n);h.error(C.noStorage)}},write:{cachedResponse:function(n,o){o&&\"\"===o?h.debug(\"Response empty, not caching\",o):t.Storage!==i?(e.isPlainObject(o)&&(o=JSON.stringify(o)),sessionStorage.setItem(n,o),h.verbose(\"Storing cached response for url\",n,o)):h.error(C.noStorage)}},query:function(){if(h.is.disabled())h.debug(\"Element is disabled API request aborted\");else{if(h.is.loading()){if(!v.interruptRequests)return void h.debug(\"Cancelling request, previous request is still pending\");h.debug(\"Interrupting previous request\"),h.abort()}if(v.defaultData&&e.extend(!0,v.urlData,h.get.defaultData()),v.serializeForm&&(v.data=h.add.formData(v.data)),!1===(f=h.get.settings()))return h.cancelled=!0,void h.error(C.beforeSend);if(h.cancelled=!1,(m=h.get.templatedURL())||h.is.mocked()){if((m=h.add.urlData(m))||h.is.mocked()){if(f.url=v.base+m,a=e.extend(!0,{},v,{type:v.method||v.type,data:g,url:v.base+m,beforeSend:v.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),h.debug(\"Querying URL\",a.url),h.verbose(\"Using AJAX settings\",a),\"local\"===v.cache&&h.read.cachedResponse(m))return h.debug(\"Response returned from local cache\"),h.request=h.create.request(),void h.request.resolveWith(E,[h.read.cachedResponse(m)]);v.throttle?v.throttleFirstRequest||h.timer?(h.debug(\"Throttling request\",v.throttle),clearTimeout(h.timer),h.timer=setTimeout(function(){h.timer&&delete h.timer,h.debug(\"Sending throttled request\",g,a.method),h.send.request()},v.throttle)):(h.debug(\"Sending request\",g,a.method),h.send.request(),h.timer=setTimeout(function(){},v.throttle)):(h.debug(\"Sending request\",g,a.method),h.send.request())}}else h.error(C.missingURL)}},should:{removeError:function(){return!0===v.hideError||\"auto\"===v.hideError&&!h.is.form()}},is:{disabled:function(){return T.filter(x.disabled).length>0},expectingJSON:function(){return\"json\"===v.dataType||\"jsonp\"===v.dataType},form:function(){return T.is(\"form\")||R.is(\"form\")},mocked:function(){return v.mockResponse||v.mockResponseAsync||v.response||v.responseAsync},input:function(){return T.is(\"input\")},loading:function(){return!!h.request&&\"pending\"==h.request.state()},abortedRequest:function(e){return e&&e.readyState!==i&&0===e.readyState?(h.verbose(\"XHR request determined to be aborted\"),!0):(h.verbose(\"XHR request was not aborted\"),!1)},validResponse:function(t){return h.is.expectingJSON()&&e.isFunction(v.successTest)?(h.debug(\"Checking JSON returned success\",v.successTest,t),v.successTest(t)?(h.debug(\"Response passed success test\",t),!0):(h.debug(\"Response failed success test\",t),!1)):(h.verbose(\"Response is not JSON, skipping validation\",v.successTest,t),!0)}},was:{cancelled:function(){return h.cancelled||!1},succesful:function(){return h.request&&\"resolved\"==h.request.state()},failure:function(){return h.request&&\"rejected\"==h.request.state()},complete:function(){return h.request&&(\"resolved\"==h.request.state()||\"rejected\"==h.request.state())}},add:{urlData:function(t,n){var o,a;return t&&(o=t.match(v.regExp.required),a=t.match(v.regExp.optional),n=n||v.urlData,o&&(h.debug(\"Looking for required URL variables\",o),e.each(o,function(o,a){var r=-1!==a.indexOf(\"$\")?a.substr(2,a.length-3):a.substr(1,a.length-2),s=e.isPlainObject(n)&&n[r]!==i?n[r]:T.data(r)!==i?T.data(r):R.data(r)!==i?R.data(r):n[r];if(s===i)return h.error(C.requiredParameter,r,t),t=!1,!1;h.verbose(\"Found required variable\",r,s),s=v.encodeParameters?h.get.urlEncodedValue(s):s,t=t.replace(a,s)})),a&&(h.debug(\"Looking for optional URL variables\",o),e.each(a,function(o,a){var r=-1!==a.indexOf(\"$\")?a.substr(3,a.length-4):a.substr(2,a.length-3),s=e.isPlainObject(n)&&n[r]!==i?n[r]:T.data(r)!==i?T.data(r):R.data(r)!==i?R.data(r):n[r];s!==i?(h.verbose(\"Optional variable Found\",r,s),t=t.replace(a,s)):(h.verbose(\"Optional variable not found\",r),t=-1!==t.indexOf(\"/\"+a)?t.replace(\"/\"+a,\"\"):t.replace(a,\"\"))}))),t},formData:function(t){var n=e.fn.serializeObject!==i,o=n?A.serializeObject():A.serialize();return t=t||v.data,e.isPlainObject(t)?n?(h.debug(\"Extending existing data with form data\",t,o),t=e.extend(!0,{},t,o)):(h.error(C.missingSerialize),h.debug(\"Cant extend data. Replacing data with form data\",t,o),t=o):(h.debug(\"Adding form data\",o),t=o),t}},send:{request:function(){h.set.loading(),h.request=h.create.request(),h.is.mocked()?h.mockedXHR=h.create.mockedXHR():h.xhr=h.create.xhr(),v.onRequest.call(E,h.request,h.xhr)}},event:{trigger:function(e){h.query(),\"submit\"!=e.type&&\"click\"!=e.type||e.preventDefault()},xhr:{always:function(){},done:function(t,n,i){var o=this,a=(new Date).getTime()-p,r=v.loadingDuration-a,s=!!e.isFunction(v.onResponse)&&(h.is.expectingJSON()?v.onResponse.call(o,e.extend(!0,{},t)):v.onResponse.call(o,t));r=r>0?r:0,s&&(h.debug(\"Modified API response in onResponse callback\",v.onResponse,s,t),t=s),r>0&&h.debug(\"Response completed early delaying state change by\",r),setTimeout(function(){h.is.validResponse(t)?h.request.resolveWith(o,[t,i]):h.request.rejectWith(o,[i,\"invalid\"])},r)},fail:function(e,t,n){var i=this,o=(new Date).getTime()-p,a=v.loadingDuration-o;(a=a>0?a:0)>0&&h.debug(\"Response completed early delaying state change by\",a),setTimeout(function(){h.is.abortedRequest(e)?h.request.rejectWith(i,[e,\"aborted\",n]):h.request.rejectWith(i,[e,\"error\",t,n])},a)}},request:{done:function(e,t){h.debug(\"Successful API Response\",e),\"local\"===v.cache&&m&&(h.write.cachedResponse(m,e),h.debug(\"Saving server response locally\",h.cache)),v.onSuccess.call(E,e,T,t)},complete:function(e,t){var n,i;h.was.succesful()?(i=e,n=t):(n=e,i=h.get.responseFromXHR(n)),h.remove.loading(),v.onComplete.call(E,i,T,n)},fail:function(e,t,n){var o=h.get.responseFromXHR(e),r=h.get.errorFromRequest(o,t,n);if(\"aborted\"==t)return h.debug(\"XHR Aborted (Most likely caused by page navigation or CORS Policy)\",t,n),v.onAbort.call(E,t,T,e),!0;\"invalid\"==t?h.debug(\"JSON did not pass success test. A server-side error has most likely occurred\",o):\"error\"==t&&e!==i&&(h.debug(\"XHR produced a server error\",t,n),200!=e.status&&n!==i&&\"\"!==n&&h.error(C.statusMessage+n,a.url),v.onError.call(E,r,T,e)),v.errorDuration&&\"aborted\"!==t&&(h.debug(\"Adding error state\"),h.set.error(),h.should.removeError()&&setTimeout(h.remove.error,v.errorDuration)),h.debug(\"API Request failed\",r,e),v.onFailure.call(E,o,T,e)}}},create:{request:function(){return e.Deferred().always(h.event.request.complete).done(h.event.request.done).fail(h.event.request.fail)},mockedXHR:function(){var t,n,i,o=v.mockResponse||v.response,a=v.mockResponseAsync||v.responseAsync;return i=e.Deferred().always(h.event.xhr.complete).done(h.event.xhr.done).fail(h.event.xhr.fail),o?(e.isFunction(o)?(h.debug(\"Using specified synchronous callback\",o),n=o.call(E,f)):(h.debug(\"Using settings specified response\",o),n=o),i.resolveWith(E,[n,!1,{responseText:n}])):e.isFunction(a)&&(t=function(e){h.debug(\"Async callback returned response\",e),e?i.resolveWith(E,[e,!1,{responseText:e}]):i.rejectWith(E,[{responseText:e},!1,!1])},h.debug(\"Using specified async response callback\",a),a.call(E,f,t)),i},xhr:function(){var t;return t=e.ajax(a).always(h.event.xhr.always).done(h.event.xhr.done).fail(h.event.xhr.fail),h.verbose(\"Created server request\",t,a),t}},set:{error:function(){h.verbose(\"Adding error state to element\",R),R.addClass(w.error)},loading:function(){h.verbose(\"Adding loading state to element\",R),R.addClass(w.loading),p=(new Date).getTime()}},remove:{error:function(){h.verbose(\"Removing error state from element\",R),R.removeClass(w.error)},loading:function(){h.verbose(\"Removing loading state from element\",R),R.removeClass(w.loading)}},get:{responseFromXHR:function(t){return!!e.isPlainObject(t)&&(h.is.expectingJSON()?h.decode.json(t.responseText):t.responseText)},errorFromRequest:function(t,n,o){return e.isPlainObject(t)&&t.error!==i?t.error:v.error[n]!==i?v.error[n]:o},request:function(){return h.request||!1},xhr:function(){return h.xhr||!1},settings:function(){var t;return(t=v.beforeSend.call(E,v))&&(t.success!==i&&(h.debug(\"Legacy success callback detected\",t),h.error(C.legacyParameters,t.success),t.onSuccess=t.success),t.failure!==i&&(h.debug(\"Legacy failure callback detected\",t),h.error(C.legacyParameters,t.failure),t.onFailure=t.failure),t.complete!==i&&(h.debug(\"Legacy complete callback detected\",t),h.error(C.legacyParameters,t.complete),t.onComplete=t.complete)),t===i&&h.error(C.noReturnedValue),!1===t?t:t!==i?e.extend(!0,{},t):e.extend(!0,{},v)},urlEncodedValue:function(e){var n=t.decodeURIComponent(e),i=t.encodeURIComponent(e);return n!==e?(h.debug(\"URL value is already encoded, avoiding double encoding\",e),e):(h.verbose(\"Encoding value using encodeURIComponent\",e,i),i)},defaultData:function(){var t={};return e.isWindow(P)||(h.is.input()?t.value=T.val():h.is.form()||(t.text=T.text())),t},event:function(){return e.isWindow(P)||\"now\"==v.on?(h.debug(\"API called without element, no events attached\"),!1):\"auto\"==v.on?T.is(\"input\")?P.oninput!==i?\"input\":P.onpropertychange!==i?\"propertychange\":\"keyup\":T.is(\"form\")?\"submit\":\"click\":v.on},templatedURL:function(e){if(e=e||T.data(y.action)||v.action||!1,m=T.data(y.url)||v.url||!1)return h.debug(\"Using specified url\",m),m;if(e){if(h.debug(\"Looking up url for action\",e,v.api),v.api[e]===i&&!h.is.mocked())return void h.error(C.missingAction,v.action,v.api);m=v.api[e]}else h.is.form()&&(m=T.attr(\"action\")||R.attr(\"action\")||!1,h.debug(\"No url or action specified, defaulting to form action\",m));return m}},abort:function(){var e=h.get.xhr();e&&\"resolved\"!==e.state()&&(h.debug(\"Cancelling API request\"),e.abort())},reset:function(){h.remove.error(),h.remove.loading()},setting:function(t,n){if(h.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,v,t);else{if(n===i)return v[t];e.isPlainObject(v[t])?e.extend(!0,v[t],n):v[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,h,t);else{if(n===i)return h[t];h[t]=n}},debug:function(){!v.silent&&v.debug&&(v.performance?h.performance.log(arguments):(h.debug=Function.prototype.bind.call(console.info,console,v.name+\":\"),h.debug.apply(console,arguments)))},verbose:function(){!v.silent&&v.verbose&&v.debug&&(v.performance?h.performance.log(arguments):(h.verbose=Function.prototype.bind.call(console.info,console,v.name+\":\"),h.verbose.apply(console,arguments)))},error:function(){v.silent||(h.error=Function.prototype.bind.call(console.error,console,v.name+\":\"),h.error.apply(console,arguments))},performance:{log:function(e){var t,n;v.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",\"Execution Time\":n})),clearTimeout(h.performance.timer),h.performance.timer=setTimeout(h.performance.display,500)},display:function(){var t=v.name+\":\",n=0;s=!1,clearTimeout(h.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,a){var r,s,l,c=F;return n=n||d,a=P||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(h.error(C.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}},u?(F===i&&h.initialize(),h.invoke(c)):(F!==i&&F.invoke(\"destroy\"),h.initialize())}),o!==i?o:this},e.api.settings={name:\"API\",namespace:\"api\",debug:!1,verbose:!1,performance:!0,api:{},cache:!0,interruptRequests:!0,on:\"auto\",stateContext:!1,loadingDuration:0,hideError:\"auto\",errorDuration:2e3,encodeParameters:!0,action:!1,url:!1,base:\"\",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,throttleFirstRequest:!0,method:\"get\",data:{},dataType:\"json\",mockResponse:!1,mockResponseAsync:!1,response:!1,responseAsync:!1,beforeSend:function(e){return e},beforeXHR:function(e){},onRequest:function(e,t){},onResponse:!1,onSuccess:function(e,t){},onComplete:function(e,t){},onFailure:function(e,t){},onError:function(e,t){},onAbort:function(e,t){},successTest:!1,error:{beforeSend:\"The before send function has aborted the request\",error:\"There was an error with your request\",exitConditions:\"API Request Aborted. Exit conditions met\",JSONParse:\"JSON could not be parsed during error handling\",legacyParameters:\"You are using legacy API success callback names\",method:\"The method you called is not defined\",missingAction:\"API action used but no url was defined\",missingSerialize:\"jquery-serialize-object is required to add form data to an existing data object\",missingURL:\"No URL specified for api event\",noReturnedValue:\"The beforeSend callback must return a settings object, beforeSend ignored.\",noStorage:\"Caching responses locally requires session storage\",parseError:\"There was an error parsing your request\",requiredParameter:\"Missing a required URL parameter: \",statusMessage:\"Server gave an error: \",timeout:\"Your request timed out\"},regExp:{required:/\\{\\$*[A-z0-9]+\\}/g,optional:/\\{\\/\\$*[A-z0-9]+\\}/g},className:{loading:\"loading\",error:\"error\"},selector:{disabled:\".disabled\",form:\"form\"},metadata:{action:\"action\",url:\"url\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.visibility=function(o){var a,r=e(this),s=r.selector||\"\",l=(new Date).getTime(),c=[],u=arguments[0],d=\"string\"==typeof u,f=[].slice.call(arguments,1),m=r.length,g=0;return r.each(function(){var r,p,h,v,b=e.isPlainObject(o)?e.extend(!0,{},e.fn.visibility.settings,o):e.extend({},e.fn.visibility.settings),y=b.className,x=b.namespace,C=b.error,w=b.metadata,S=\".\"+x,k=\"module-\"+x,T=e(t),A=e(this),R=e(b.context),P=(A.selector,A.data(k)),E=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)},F=this,O=!1;v={initialize:function(){v.debug(\"Initializing\",b),v.setup.cache(),v.should.trackChanges()&&(\"image\"==b.type&&v.setup.image(),\"fixed\"==b.type&&v.setup.fixed(),b.observeChanges&&v.observeChanges(),v.bind.events()),v.save.position(),v.is.visible()||v.error(C.visible,A),b.initialCheck&&v.checkVisibility(),v.instantiate()},instantiate:function(){v.debug(\"Storing instance\",v),A.data(k,v),P=v},destroy:function(){v.verbose(\"Destroying previous module\"),h&&h.disconnect(),p&&p.disconnect(),T.off(\"load\"+S,v.event.load).off(\"resize\"+S,v.event.resize),R.off(\"scroll\"+S,v.event.scroll).off(\"scrollchange\"+S,v.event.scrollchange),\"fixed\"==b.type&&(v.resetFixed(),v.remove.placeholder()),A.off(S).removeData(k)},observeChanges:function(){\"MutationObserver\"in t&&(p=new MutationObserver(v.event.contextChanged),h=new MutationObserver(v.event.changed),p.observe(n,{childList:!0,subtree:!0}),h.observe(F,{childList:!0,subtree:!0}),v.debug(\"Setting up mutation observer\",h))},bind:{events:function(){v.verbose(\"Binding visibility events to scroll and resize\"),b.refreshOnLoad&&T.on(\"load\"+S,v.event.load),T.on(\"resize\"+S,v.event.resize),R.off(\"scroll\"+S).on(\"scroll\"+S,v.event.scroll).on(\"scrollchange\"+S,v.event.scrollchange)}},event:{changed:function(e){v.verbose(\"DOM tree modified, updating visibility calculations\"),v.timer=setTimeout(function(){v.verbose(\"DOM tree modified, updating sticky menu\"),v.refresh()},100)},contextChanged:function(t){[].forEach.call(t,function(t){t.removedNodes&&[].forEach.call(t.removedNodes,function(t){(t==F||e(t).find(F).length>0)&&(v.debug(\"Element removed from DOM, tearing down events\"),v.destroy())})})},resize:function(){v.debug(\"Window resized\"),b.refreshOnResize&&E(v.refresh)},load:function(){v.debug(\"Page finished loading\"),E(v.refresh)},scroll:function(){b.throttle?(clearTimeout(v.timer),v.timer=setTimeout(function(){R.triggerHandler(\"scrollchange\"+S,[R.scrollTop()])},b.throttle)):E(function(){R.triggerHandler(\"scrollchange\"+S,[R.scrollTop()])})},scrollchange:function(e,t){v.checkVisibility(t)}},precache:function(t,i){t instanceof Array||(t=[t]);for(var o=t.length,a=0,r=[],s=n.createElement(\"img\"),l=function(){++a>=t.length&&e.isFunction(i)&&i()};o--;)(s=n.createElement(\"img\")).onload=l,s.onerror=l,s.src=t[o],r.push(s)},enableCallbacks:function(){v.debug(\"Allowing callbacks to occur\"),O=!1},disableCallbacks:function(){v.debug(\"Disabling all callbacks temporarily\"),O=!0},should:{trackChanges:function(){return d?(v.debug(\"One time query, no need to bind events\"),!1):(v.debug(\"Callbacks being attached\"),!0)}},setup:{cache:function(){v.cache={occurred:{},screen:{},element:{}}},image:function(){var e=A.data(w.src);e&&(v.verbose(\"Lazy loading image\",e),b.once=!0,b.observeChanges=!1,b.onOnScreen=function(){v.debug(\"Image on screen\",F),v.precache(e,function(){v.set.image(e,function(){++g==m&&b.onAllLoaded.call(this),b.onLoad.call(this)})})})},fixed:function(){v.debug(\"Setting up fixed\"),b.once=!1,b.observeChanges=!1,b.initialCheck=!0,b.refreshOnLoad=!0,o.transition||(b.transition=!1),v.create.placeholder(),v.debug(\"Added placeholder\",r),b.onTopPassed=function(){v.debug(\"Element passed, adding fixed position\",A),v.show.placeholder(),v.set.fixed(),b.transition&&e.fn.transition!==i&&A.transition(b.transition,b.duration)},b.onTopPassedReverse=function(){v.debug(\"Element returned to position, removing fixed\",A),v.hide.placeholder(),v.remove.fixed()}}},create:{placeholder:function(){v.verbose(\"Creating fixed position placeholder\"),r=A.clone(!1).css(\"display\",\"none\").addClass(y.placeholder).insertAfter(A)}},show:{placeholder:function(){v.verbose(\"Showing placeholder\"),r.css(\"display\",\"block\").css(\"visibility\",\"hidden\")}},hide:{placeholder:function(){v.verbose(\"Hiding placeholder\"),r.css(\"display\",\"none\").css(\"visibility\",\"\")}},set:{fixed:function(){v.verbose(\"Setting element to fixed position\"),A.addClass(y.fixed).css({position:\"fixed\",top:b.offset+\"px\",left:\"auto\",zIndex:b.zIndex}),b.onFixed.call(F)},image:function(t,n){if(A.attr(\"src\",t),b.transition)if(e.fn.transition!==i){if(A.hasClass(y.visible))return void v.debug(\"Transition already occurred on this image, skipping animation\");A.transition(b.transition,b.duration,n)}else A.fadeIn(b.duration,n);else A.show()}},is:{onScreen:function(){return v.get.elementCalculations().onScreen},offScreen:function(){return v.get.elementCalculations().offScreen},visible:function(){return!(!v.cache||!v.cache.element)&&!(0===v.cache.element.width&&0===v.cache.element.offset.top)},verticallyScrollableContext:function(){var e=R.get(0)!==t&&R.css(\"overflow-y\");return\"auto\"==e||\"scroll\"==e},horizontallyScrollableContext:function(){var e=R.get(0)!==t&&R.css(\"overflow-x\");return\"auto\"==e||\"scroll\"==e}},refresh:function(){v.debug(\"Refreshing constants (width/height)\"),\"fixed\"==b.type&&v.resetFixed(),v.reset(),v.save.position(),b.checkOnRefresh&&v.checkVisibility(),b.onRefresh.call(F)},resetFixed:function(){v.remove.fixed(),v.remove.occurred()},reset:function(){v.verbose(\"Resetting all cached values\"),e.isPlainObject(v.cache)&&(v.cache.screen={},v.cache.element={})},checkVisibility:function(e){v.verbose(\"Checking visibility of element\",v.cache.element),!O&&v.is.visible()&&(v.save.scroll(e),v.save.calculations(),v.passed(),v.passingReverse(),v.topVisibleReverse(),v.bottomVisibleReverse(),v.topPassedReverse(),v.bottomPassedReverse(),v.onScreen(),v.offScreen(),v.passing(),v.topVisible(),v.bottomVisible(),v.topPassed(),v.bottomPassed(),b.onUpdate&&b.onUpdate.call(F,v.get.elementCalculations()))},passed:function(t,n){var o=v.get.elementCalculations();if(t&&n)b.onPassed[t]=n;else{if(t!==i)return v.get.pixelsPassed(t)>o.pixelsPassed;o.passing&&e.each(b.onPassed,function(e,t){o.bottomVisible||o.pixelsPassed>v.get.pixelsPassed(e)?v.execute(t,e):b.once||v.remove.occurred(t)})}},onScreen:function(e){var t=v.get.elementCalculations(),n=e||b.onOnScreen,o=\"onScreen\";if(e&&(v.debug(\"Adding callback for onScreen\",e),b.onOnScreen=e),t.onScreen?v.execute(n,o):b.once||v.remove.occurred(o),e!==i)return t.onOnScreen},offScreen:function(e){var t=v.get.elementCalculations(),n=e||b.onOffScreen,o=\"offScreen\";if(e&&(v.debug(\"Adding callback for offScreen\",e),b.onOffScreen=e),t.offScreen?v.execute(n,o):b.once||v.remove.occurred(o),e!==i)return t.onOffScreen},passing:function(e){var t=v.get.elementCalculations(),n=e||b.onPassing,o=\"passing\";if(e&&(v.debug(\"Adding callback for passing\",e),b.onPassing=e),t.passing?v.execute(n,o):b.once||v.remove.occurred(o),e!==i)return t.passing},topVisible:function(e){var t=v.get.elementCalculations(),n=e||b.onTopVisible,o=\"topVisible\";if(e&&(v.debug(\"Adding callback for top visible\",e),b.onTopVisible=e),t.topVisible?v.execute(n,o):b.once||v.remove.occurred(o),e===i)return t.topVisible},bottomVisible:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomVisible,o=\"bottomVisible\";if(e&&(v.debug(\"Adding callback for bottom visible\",e),b.onBottomVisible=e),t.bottomVisible?v.execute(n,o):b.once||v.remove.occurred(o),e===i)return t.bottomVisible},topPassed:function(e){var t=v.get.elementCalculations(),n=e||b.onTopPassed,o=\"topPassed\";if(e&&(v.debug(\"Adding callback for top passed\",e),b.onTopPassed=e),t.topPassed?v.execute(n,o):b.once||v.remove.occurred(o),e===i)return t.topPassed},bottomPassed:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomPassed,o=\"bottomPassed\";if(e&&(v.debug(\"Adding callback for bottom passed\",e),b.onBottomPassed=e),t.bottomPassed?v.execute(n,o):b.once||v.remove.occurred(o),e===i)return t.bottomPassed},passingReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onPassingReverse,o=\"passingReverse\";if(e&&(v.debug(\"Adding callback for passing reverse\",e),b.onPassingReverse=e),t.passing?b.once||v.remove.occurred(o):v.get.occurred(\"passing\")&&v.execute(n,o),e!==i)return!t.passing},topVisibleReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onTopVisibleReverse,o=\"topVisibleReverse\";if(e&&(v.debug(\"Adding callback for top visible reverse\",e),b.onTopVisibleReverse=e),t.topVisible?b.once||v.remove.occurred(o):v.get.occurred(\"topVisible\")&&v.execute(n,o),e===i)return!t.topVisible},bottomVisibleReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomVisibleReverse,o=\"bottomVisibleReverse\";if(e&&(v.debug(\"Adding callback for bottom visible reverse\",e),b.onBottomVisibleReverse=e),t.bottomVisible?b.once||v.remove.occurred(o):v.get.occurred(\"bottomVisible\")&&v.execute(n,o),e===i)return!t.bottomVisible},topPassedReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onTopPassedReverse,o=\"topPassedReverse\";if(e&&(v.debug(\"Adding callback for top passed reverse\",e),b.onTopPassedReverse=e),t.topPassed?b.once||v.remove.occurred(o):v.get.occurred(\"topPassed\")&&v.execute(n,o),e===i)return!t.onTopPassed},bottomPassedReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomPassedReverse,o=\"bottomPassedReverse\";if(e&&(v.debug(\"Adding callback for bottom passed reverse\",e),b.onBottomPassedReverse=e),t.bottomPassed?b.once||v.remove.occurred(o):v.get.occurred(\"bottomPassed\")&&v.execute(n,o),e===i)return!t.bottomPassed},execute:function(e,t){var n=v.get.elementCalculations(),i=v.get.screenCalculations();(e=e||!1)&&(b.continuous?(v.debug(\"Callback being called continuously\",t,n),e.call(F,n,i)):v.get.occurred(t)||(v.debug(\"Conditions met\",t,n),e.call(F,n,i))),v.save.occurred(t)},remove:{fixed:function(){v.debug(\"Removing fixed position\"),A.removeClass(y.fixed).css({position:\"\",top:\"\",left:\"\",zIndex:\"\"}),b.onUnfixed.call(F)},placeholder:function(){v.debug(\"Removing placeholder content\"),r&&r.remove()},occurred:function(e){if(e){var t=v.cache.occurred;t[e]!==i&&!0===t[e]&&(v.debug(\"Callback can now be called again\",e),v.cache.occurred[e]=!1)}else v.cache.occurred={}}},save:{calculations:function(){v.verbose(\"Saving all calculations necessary to determine positioning\"),v.save.direction(),v.save.screenCalculations(),v.save.elementCalculations()},occurred:function(e){e&&(v.cache.occurred[e]!==i&&!0===v.cache.occurred[e]||(v.verbose(\"Saving callback occurred\",e),v.cache.occurred[e]=!0))},scroll:function(e){e=e+b.offset||R.scrollTop()+b.offset,v.cache.scroll=e},direction:function(){var e,t=v.get.scroll(),n=v.get.lastScroll();return e=t>n&&n?\"down\":t<n&&n?\"up\":\"static\",v.cache.direction=e,v.cache.direction},elementPosition:function(){var e=v.cache.element,t=v.get.screenSize();return v.verbose(\"Saving element position\"),e.fits=e.height<t.height,e.offset=A.offset(),e.width=A.outerWidth(),e.height=A.outerHeight(),v.is.verticallyScrollableContext()&&(e.offset.top+=R.scrollTop()-R.offset().top),v.is.horizontallyScrollableContext()&&(e.offset.left+=R.scrollLeft-R.offset().left),v.cache.element=e,e},elementCalculations:function(){var e=v.get.screenCalculations(),t=v.get.elementPosition();return b.includeMargin?(t.margin={},t.margin.top=parseInt(A.css(\"margin-top\"),10),t.margin.bottom=parseInt(A.css(\"margin-bottom\"),10),t.top=t.offset.top-t.margin.top,t.bottom=t.offset.top+t.height+t.margin.bottom):(t.top=t.offset.top,t.bottom=t.offset.top+t.height),t.topPassed=e.top>=t.top,t.bottomPassed=e.top>=t.bottom,t.topVisible=e.bottom>=t.top&&!t.topPassed,t.bottomVisible=e.bottom>=t.bottom&&!t.bottomPassed,t.pixelsPassed=0,t.percentagePassed=0,t.onScreen=(t.topVisible||t.passing)&&!t.bottomPassed,t.passing=t.topPassed&&!t.bottomPassed,t.offScreen=!t.onScreen,t.passing&&(t.pixelsPassed=e.top-t.top,t.percentagePassed=(e.top-t.top)/t.height),v.cache.element=t,v.verbose(\"Updated element calculations\",t),t},screenCalculations:function(){var e=v.get.scroll();return v.save.direction(),v.cache.screen.top=e,v.cache.screen.bottom=e+v.cache.screen.height,v.cache.screen},screenSize:function(){v.verbose(\"Saving window position\"),v.cache.screen={height:R.height()}},position:function(){v.save.screenSize(),v.save.elementPosition()}},get:{pixelsPassed:function(e){var t=v.get.elementCalculations();return e.search(\"%\")>-1?t.height*(parseInt(e,10)/100):parseInt(e,10)},occurred:function(e){return v.cache.occurred!==i&&v.cache.occurred[e]||!1},direction:function(){return v.cache.direction===i&&v.save.direction(),v.cache.direction},elementPosition:function(){return v.cache.element===i&&v.save.elementPosition(),v.cache.element},elementCalculations:function(){return v.cache.element===i&&v.save.elementCalculations(),v.cache.element},screenCalculations:function(){return v.cache.screen===i&&v.save.screenCalculations(),v.cache.screen},screenSize:function(){return v.cache.screen===i&&v.save.screenSize(),v.cache.screen},scroll:function(){return v.cache.scroll===i&&v.save.scroll(),v.cache.scroll},lastScroll:function(){return v.cache.screen===i?(v.debug(\"First scroll event, no last scroll could be found\"),!1):v.cache.screen.top}},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,b,t);else{if(n===i)return b[t];b[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,v,t);else{if(n===i)return v[t];v[t]=n}},debug:function(){!b.silent&&b.debug&&(b.performance?v.performance.log(arguments):(v.debug=Function.prototype.bind.call(console.info,console,b.name+\":\"),v.debug.apply(console,arguments)))},verbose:function(){!b.silent&&b.verbose&&b.debug&&(b.performance?v.performance.log(arguments):(v.verbose=Function.prototype.bind.call(console.info,console,b.name+\":\"),v.verbose.apply(console,arguments)))},error:function(){b.silent||(v.error=Function.prototype.bind.call(console.error,console,b.name+\":\"),v.error.apply(console,arguments))},performance:{log:function(e){var t,n;b.performance&&(n=(t=(new Date).getTime())-(l||t),l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:F,\"Execution Time\":n})),clearTimeout(v.performance.timer),v.performance.timer=setTimeout(v.performance.display,500)},display:function(){var t=b.name+\":\",n=0;l=!1,clearTimeout(v.performance.timer),e.each(c,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",s&&(t+=\" '\"+s+\"'\"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=P;return n=n||f,o=F||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(v.error(C.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(P===i&&v.initialize(),P.save.scroll(),P.save.calculations(),v.invoke(u)):(P!==i&&P.invoke(\"destroy\"),v.initialize())}),a!==i?a:this},e.fn.visibility.settings={name:\"Visibility\",namespace:\"visibility\",debug:!1,verbose:!1,performance:!0,observeChanges:!0,initialCheck:!0,refreshOnLoad:!0,refreshOnResize:!0,checkOnRefresh:!0,once:!0,continuous:!1,offset:0,includeMargin:!1,context:t,throttle:!1,type:!1,zIndex:\"10\",transition:\"fade in\",duration:1e3,onPassed:{},onOnScreen:!1,onOffScreen:!1,onPassing:!1,onTopVisible:!1,onBottomVisible:!1,onTopPassed:!1,onBottomPassed:!1,onPassingReverse:!1,onTopVisibleReverse:!1,onBottomVisibleReverse:!1,onTopPassedReverse:!1,onBottomPassedReverse:!1,onLoad:function(){},onAllLoaded:function(){},onFixed:function(){},onUnfixed:function(){},onUpdate:!1,onRefresh:function(){},metadata:{src:\"src\"},className:{fixed:\"fixed\",placeholder:\"placeholder\",visible:\"visible\"},error:{method:\"The method you called is not defined.\",visible:\"Element is hidden, you must call refresh after element becomes visible\"}}}(jQuery,window,document);","import line_i18n from \"line-i18n\";\nimport { LocalizedStrings } from \"./localizedStringsService\";\n\nconst StringTypes = line_i18n.StringTypes;\n\nexport const i18nHelper = Object.freeze({\n i18n: (identifier) => {\n var opts = identifier.split(':');\n var type = opts[0].toLowerCase();\n var id = opts[1];\n if (StringTypes.ERROR === type) {\n return LocalizedStrings.getError(id);\n } else if (StringTypes.MESSAGE === type) {\n return LocalizedStrings.getMessage(id); \n } else if (StringTypes.UI === type) {\n return LocalizedStrings.getUI(id);\n } else {\n console.warn(\"A string has been passed to the i18n helper function that was not in the form type:id -> \" + identifier);\n return LocalizedStrings.getString(identifier, type);\n }\n }\n});","import Lexers from './../../grammar/';\nimport line_i18n from 'line-i18n';\nimport { Config } from \"./../util/config\";\n\nclass LanguageServiceExtended extends line_i18n.LanguageServiceNoLS {\n\n constructor () {\n super(typeof(iLMparameters) === 'undefined' ? Config.default_lang : iLMparameters.lang);\n }\n\n getCurrentLexer () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].lexer;\n } else {\n return langInfo.lexer;\n }\n }\n\n getCurrentLangFuncs () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].langFuncs;\n } else {\n return langInfo.langFuncs;\n }\n }\n\n getCurrentLangLibs () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].langLibs;\n }\n return langInfo.langLibs;\n }\n}\n\nexport const LanguageService = new LanguageServiceExtended();\n","import { LanguageService } from \"./languageService\";\nimport line_i18n from 'line-i18n';\nimport Langs from './../../i18n';\n\nclass IVProgLocalizedStrings extends line_i18n.LocalizedStrings {\n\n constructor(langService, langsJsons, shouldListenToChange = false) {\n super(langService, langsJsons, shouldListenToChange);\n }\n\n translateType (type, dim) {\n switch (dim) {\n case 0:\n return this.getUI(type);\n default:\n const transType = this.getUI(type);\n if(dim === 1)\n return this.getUI(\"vector_string\", [transType])\n else\n return this.getUI(\"matrix_string\", [transType])\n }\n }\n \n translateOp (op) {\n switch(op.ord) {\n case Operators.AND.ord:\n case Operators.OR.ord:\n case Operators.NOT.ord:\n return this.getUI(op.value);\n default:\n return op.value;\n }\n }\n}\n\nexport const LocalizedStrings = Object.freeze(new IVProgLocalizedStrings(LanguageService, Langs, true));\n\nlet _instance = null;\n\nexport function getInstance () {\n if(_instance == null) {\n _instance = new IVProgLocalizedStrings(LanguageService, Langs);\n }\n return _instance;\n}\n","class BaseType {\n constructor(name, ord) {\n this.name = name;\n this.ord = ord;\n }\n\n get value () {\n return this.name;\n }\n\n isCompatible (another) {\n if(another instanceof BaseType) {\n return this.name === another.name && this.ord === another.ord;\n }\n return false;\n }\n}\n\n// Base types names are the same as i18n ui type keys\nexport const BaseTypes = Object.freeze({\n INTEGER: new BaseType(\"integer\", 0),\n REAL: new BaseType(\"real\", 1),\n STRING: new BaseType(\"text\", 2),\n BOOLEAN: new BaseType(\"boolean\", 3),\n VOID: new BaseType(\"void\", 4),\n UNDEFINED: new BaseType(\"undefined\", 5)\n})\n","import { Type } from \"./type\";\n\nexport class CompoundType extends Type {\n\n constructor (type, dimensions) {\n super(null);\n this.innerType = type;\n this.dimensions = dimensions;\n }\n\n isCompatible (another) {\n if(another instanceof CompoundType){\n if(this.dimensions !== another.dimensions) {\n return false;\n }\n return this.innerType.isCompatible(another.innerType);\n }\n return false;\n }\n\n stringInfo () {\n const list = this.innerType.stringInfo();\n list.forEach(v => {\n v.dim = this.dimensions;\n });\n return list;\n }\n\n canAccept (another) {\n if(another instanceof CompoundType) {\n return this.dimensions > another.dimensions && this.innerType.isCompatible(another.innerType);\n } else {\n return this.innerType.isCompatible(another);\n }\n }\n}\n","import { Type } from \"./type\";\n\nexport class MultiType extends Type {\n\n constructor (types) {\n super(null);\n this.types = types;\n }\n\n get value () {\n return null;\n }\n\n get ord () {\n return null;\n }\n\n stringInfo () {\n let list = [];\n for (let i = 0; i < this.types.length; i++) {\n const t = this.types[i];\n list = list.concat(t.stringInfo());\n }\n return list;\n }\n\n isCompatible (another) {\n if(another instanceof Type) {\n for (let i = 0; i < this.types.length; i++) {\n const t = this.types[i];\n if (another.isCompatible(t)) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","import { LanguageService } from \"../services/languageService\";\nimport { Types } from \"./types\";\nimport Decimal from \"decimal.js\";\n\nexport function toInt (str) {\n return new Decimal(str);\n}\n\nexport function toString (str) {\n let value = str.replace(/^\"/, '');\n value = value.replace(/\"$/, '');\n value = value.replace(/\\\\b/g, \"\\b\");\n value = value.replace(/\\\\t/g, \"\\t\");\n value = value.replace(/\\\\n/g, \"\\n\");\n value = value.replace(/\\\\r/g, \"\\r\");\n value = value.replace(/\\\\\\\"/g, \"\\\"\");\n value = value.replace(/\\\\\\'/g, \"\\'\");\n value = value.replace(/\\\\\\\\/g, \"\\\\\");\n return value;\n}\n\nexport function toReal (value) {\n return new Decimal(value);\n}\n\nexport function toBool (str) {\n const val = \"'\" + str + \"'\";\n const lexer = LanguageService.getCurrentLexer();\n const instance = new lexer(null);\n if (instance.literalNames[lexer.RK_TRUE] === val) {\n return true;\n } else if (instance.literalNames[lexer.RK_FALSE] === val) {\n return false;\n } else {\n // TODO: better error message\n throw new Error(str + \"not a valid boolean\");\n }\n}\n\nfunction convertBoolToString (bool) {\n const lexer = LanguageService.getCurrentLexer();\n const instance = new lexer(null);\n if (bool) {\n return instance.literalNames[lexer.RK_TRUE];\n } else {\n return instance.literalNames[lexer.RK_FALSE];\n }\n}\n\nexport function convertToString(value, type) {\n switch (type.ord) {\n case Types.INTEGER.ord:\n return value.toString();\n case Types.REAL.ord: {\n if (value.dp() <= 0) {\n return value.toFixed(1); \n } else {\n return value.toNumber();\n }\n }\n case Types.BOOLEAN.ord:\n return convertBoolToString(value);\n default:\n return value;\n }\n}","import { Config } from \"../util/config\";\nimport { BaseTypes } from \"./baseTypes\";\n\nexport class Type {\n\n constructor(baseType) {\n this.baseType = baseType;\n }\n\n get value () {\n return this.baseType.value;\n }\n\n get ord () {\n return this.baseType.ord;\n }\n\n stringInfo () {\n return [{type: this.baseType.name, dim: 0}];\n }\n\n isCompatible (another) {\n if(another instanceof Type) {\n return this.baseType.isCompatible(another.baseType);\n }\n return false;\n }\n}\n","import { BaseTypes } from './baseTypes';\nimport { Type } from \"./type\";\nimport { MultiType } from \"./multiType\";\n\nconst INTEGER = new Type(BaseTypes.INTEGER);\nconst REAL = new Type(BaseTypes.REAL);\nconst STRING = new Type(BaseTypes.STRING);\nconst BOOLEAN = new Type(BaseTypes.BOOLEAN);\nconst VOID = new Type(BaseTypes.VOID);\nconst UNDEFINED = new Type(BaseTypes.UNDEFINED);\nconst ALL = new MultiType([INTEGER, REAL, STRING, BOOLEAN]);\n\nexport const Types = Object.freeze({\n INTEGER: INTEGER,\n REAL: REAL,\n STRING: STRING,\n BOOLEAN: BOOLEAN,\n VOID: VOID,\n UNDEFINED: UNDEFINED,\n ALL: ALL\n});\n","class ConfigObject {\n\n constructor () {\n this.loopTimeout = 5000;\n this.decimalPlaces = 6;\n this.intConvertRoundMode = 2;\n this.default_lang = 'pt';\n this.enable_type_casting = true;\n }\n\n setConfig (opts) {\n for (const key in opts) {\n if(this.hasOwnProperty(key)){\n this[key] = opts[key];\n }\n }\n }\n}\nlet config = new ConfigObject();\nexport const Config = config;","import { Input } from './../io/input';\nimport { LocalizedStrings } from '../services/localizedStringsService';\n\nexport class InputTest extends Input {\n\n constructor (inputList) {\n super();\n this.index = 0;\n this.inputList = inputList;\n }\n\n requestInput (callback) {\n if(this.index < this.inputList.length) { \n callback(this.inputList[this.index]);\n this.index++;\n } else {\n throw new Error(LocalizedStrings.getError(\"exceeded_input_request\"));\n }\n }\n}","import { Output } from './../io/output';\n\nexport class OutputTest extends Output {\n\n constructor () {\n super();\n this.list = [];\n }\n\n sendOutput (text) {\n this.list.push(text);\n }\n}","import $ from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as GlobalsManagement from './globals';\nimport * as VariablesManagement from './variables';\nimport * as CommandsManagement from './commands';\nimport * as CodeManagement from './code_generator';\nimport * as VariableValueMenu from './commands/variable_value_menu';\nimport * as FunctionsManagement from './functions';\nimport { DOMConsole } from './../io/domConsole';\nimport { IVProgParser } from './../ast/ivprogParser';\nimport { IVProgProcessor } from './../processor/ivprogProcessor';\nimport { LanguageService } from '../services/languageService';\n\nwindow.block_render = false;\n\nexport function renderAlgorithm () {\n\tif (window.block_render) {\n\t\treturn;\n\t}\n\tif (window.draging) {\n\t\treturn;\n\t}\n\twindow.block_render = true;\n\tconsole.log('rendering algorithm');\n\n \t$('.all_functions').children().off();\n\t$('.all_functions').empty();\n\n\t$('.list_globals').children().off();\n\t$('.list_globals').empty();\t\n\n\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\tFunctionsManagement.renderFunction(window.program_obj.functions[i]);\n\t}\n\n\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\tGlobalsManagement.renderGlobal(window.program_obj.globals[i]);\n\t}\t\n\n\tsetTimeout(function(){ window.block_render = false; }, 100);\n\tconsole.log('fim do render');\n}","import $ from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as GlobalsManagement from './globals';\nimport * as VariablesManagement from './variables';\nimport * as CommandsManagement from './commands';\nimport * as Utils from './utils';\n\nexport function generate () {\n\n\t$('.ivprog_visual_panel').find('.error_icon').remove();\n\n\tvar code = LocalizedStrings.getUI('program') + ' { ';\n\n\tcode += globalsCode();\n\n\tcode += '\\n';\n\n\tvar has_error = false;\n\n\tfor (var i = 0; i < window.program_obj.functions.length; i ++) {\n\t\tvar n_code = functionsCode(window.program_obj.functions[i]);\n\t\tif (n_code == null) {\n\t\t\thas_error = true;\n\t\t}\n\t\tcode += n_code;\n\t\tcode += '\\n';\n\n\t}\n\n\tcode += '\\n}';\n\n\tif (has_error) {\n\t\treturn null;\n\t} else {\n\t\treturn code;\n\t}\n}\n\nfunction functionsCode (function_obj) {\n\tvar ret = '\\n\\t' + LocalizedStrings.getUI('function') + ' ';\n\n\tvar has_error = false;\n\n\tswitch (function_obj.return_type) {\n\t\tcase Types.INTEGER:\n\t\t\tret += LocalizedStrings.getUI('integer');\n\t\t\tbreak;\n\t\tcase Types.REAL:\n\t\t\tret += LocalizedStrings.getUI('real');\n\t\t\tbreak;\n\t\tcase Types.TEXT:\n\t\t\tret += LocalizedStrings.getUI('text');\n\t\t\tbreak;\n\t\tcase Types.BOOLEAN:\n\t\t\tret += LocalizedStrings.getUI('boolean');\n\t\t\tbreak;\n\t\tcase Types.VOID:\n\t\t\tret += LocalizedStrings.getUI('void');\n\t\t\tbreak;\n\t}\n\tret += ' ';\n\n\tif (function_obj.return_dimensions == 1) {\n\t\tret += '[] '\n\t} else if (function_obj.return_dimensions == 2) {\n\t\tret += '[][] '\n\t}\n\n\tret += function_obj.name + ' ( ';\n\n\tfor (var j = 0; j < function_obj.parameters_list.length; j++) {\n\t\tret += parametersCode(function_obj.parameters_list[j]);\n\t\tif ((j + 1) < function_obj.parameters_list.length) {\n\t\t\tret += ',';\n\t\t}\n\t}\n\n\tret += ' ) {';\n\n\tfor (var j = 0; j < function_obj.variables_list.length; j++) {\n\t\tret += variablesCode(function_obj.variables_list[j]);\n\t}\n\n\tfor (var j = 0; j < function_obj.commands.length; j++) {\n\t\ttry {\n\t\t\tret += commandsCode(function_obj.commands[j]);\n\t\t} catch (err) {\n\n\t\t\thas_error = true;\n\n\t\t\tconsole.error(err.message);\n\n\t\t\tvar todos = $('body').find('.command_container');\n\n\t\t\tfor (var i = 0; i < todos.length; i++) {\n\t\t\t\tif ($(todos[i]).data('command') == function_obj.commands[j]) {\n\t\t\t\t\t$( todos[i] ).prepend( ' <i class=\"ui icon red exclamation triangle error_icon\"></i> ' );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t}\n\n\tret += '\\n\\t}';\n\n\tif (has_error) {\n\t\treturn null;\n\t} else {\n\t\treturn ret;\n\t}\n}\n\nfunction commandsCode (command_obj, indentation = 2) {\n\tswitch (command_obj.type) {\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\treturn breaksCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\treturn commentsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\treturn readersCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\treturn writersCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\treturn functioncallsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\treturn attributionsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\treturn whiletruesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\treturn doWhilesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\treturn iftruesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\treturn repeatNtimesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\t\treturn switchsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\treturn returnsCode(command_obj, indentation);\n\t}\n}\n\nfunction returnsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_return');\n\n\tif (command_obj.variable_value_menu) {\n\t\ttry {\n\t\t\tret += ' ' + variableValueMenuCode(command_obj.variable_value_menu, true);\n\t\t} catch(err) {}\n\t}\n\n\treturn ret;\n}\n\nfunction breaksCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_break');\n\n\treturn ret;\n}\n\nfunction switchsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_switch') + ' ( ';\n\n\tret += variableValueMenuCode(command_obj.variable);\n\n\tret += ' ) { ';\n\n\tif (command_obj.cases) {\n\t\tfor (var i = 0; i < command_obj.cases.length; i++) {\n\t\t\tret += switchcasesCode(command_obj.cases[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\tret += '} ';\n\n\treturn ret;\n}\n\nfunction switchcasesCode (switchcase, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_case') + ' ';\n\tret += variableValueMenuCode(switchcase.variable_value_menu);\n\tret += ' :';\n\n\tif (switchcase.commands_block) {\n\t\tfor (var i = 0; i < switchcase.commands_block.length; i++) {\n\t\t\tret += commandsCode(switchcase.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\treturn ret;\n\n}\n\nfunction repeatNtimesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_for') + ' ( ';\n\n\tif (command_obj.var_attribution) {\n\t\tret += variableValueMenuCode(command_obj.var_attribution);\n\t\tret += ' = ';\n\t\tret += variableValueMenuCode(command_obj.expression1);\n\t}\n\tret += ' ; ';\n\n\n\tif (command_obj.expression2) {\n\t\tswitch (command_obj.expression2.expression.type) {\n\t\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\t\tret += logicExpressionCode(command_obj.expression2.expression);\n\t\t\t\tbreak;\n\t\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\t\tret += arithmeticExpressionCode(command_obj.expression2.expression);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tret += ' ; ';\n\n\tif (command_obj.var_incrementation) {\n\t\tret += variableValueMenuCode(command_obj.var_incrementation);\n\t\tret += ' = ';\n\t\tret += variableValueMenuCode(command_obj.expression3.itens[0]);\n\n\t\tswitch (command_obj.expression3.itens[1]) {\n\t\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\t\tret += ' + ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\t\tret += ' - ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\t\tret += ' * ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\t\tret += ' / ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\t\tret += ' % ';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tret += variableValueMenuCode(command_obj.expression3.itens[2]);\t\t\n\t}\n\n\tret += ' ) { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '}';\n\treturn ret;\n}\n\nfunction iftruesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_if');\n\n\tif (!command_obj.expression.expression) {\n\t\tUtils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));\n\t}\n\n\tswitch (command_obj.expression.expression.type) {\n\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\tret += logicExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\tret += arithmeticExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t}\n\n\tret += ' { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '} ' + LocalizedStrings.getUI('text_else') + ' {';\n\n\tif (command_obj.commands_else) {\n\t\tfor (var i = 0; i < command_obj.commands_else.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_else[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '}';\n\n\treturn ret;\n}\n\n\nfunction doWhilesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_do') + ' { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '} ' + LocalizedStrings.getUI('text_code_while');\n\n\tif (!command_obj.expression.expression) {\n\t\tUtils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));\n\t}\n\n\tswitch (command_obj.expression.expression.type) {\n\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\tret += logicExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\tret += arithmeticExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t}\n\n\treturn ret;\n}\n\n\nfunction whiletruesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_while');\n\n\tif (!command_obj.expression.expression) {\n\t\tUtils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));\n\t}\n\n\tswitch (command_obj.expression.expression.type) {\n\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\tret += logicExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\tret += arithmeticExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t}\n\n\tret += ' { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '}';\n\n\treturn ret;\n}\n\nfunction logicExpressionCode (expression) {\n\tvar ret = ' ( ';\n\n\tif (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\tret += logicExpressionCode(expression.first_operand);\n\t} else if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\tret += arithmeticExpressionCode(expression.first_operand);\n\t} else {\n\t\tret += variableValueMenuCode(expression.first_operand);\n\t}\n\n\tif (expression.operator) {\n\t\tswitch (expression.operator) {\n\t case Models.LOGIC_COMPARISON.equals_to:\n\t \tret += ' == ';\n\t \tbreak;\n\t case Models.LOGIC_COMPARISON.not_equals_to:\n\t \tret += ' != ';\n\t \tbreak;\n\t case Models.LOGIC_COMPARISON.and:\n\t \tret += ' && ';\n\t \tbreak;\n\t case Models.LOGIC_COMPARISON.or:\n\t \tret += ' || ';\n\t \tbreak;\n\t\t}\n\n\t\tif (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\t\tret += logicExpressionCode(expression.second_operand);\n\t\t} else if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\t\tret += arithmeticExpressionCode(expression.second_operand);\n\t\t} else {\n\t\t\tret += variableValueMenuCode(expression.second_operand);\n\t\t}\n\n\t}\n\n\tret += ' ) ';\n\n\treturn ret;\n}\n\nfunction arithmeticExpressionCode (expression) {\n\tvar ret = ' ( ';\n\n\tif (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\tret += logicExpressionCode(expression.first_operand);\n\t} else if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\tret += arithmeticExpressionCode(expression.first_operand);\n\t} else {\n\t\tret += variableValueMenuCode(expression.first_operand);\n\t}\n\n\tswitch (expression.operator) {\n case Models.ARITHMETIC_COMPARISON.greater_than:\n \tret += ' > ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.less_than:\n \tret += ' < ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.equals_to:\n \tret += ' == ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.not_equals_to:\n \tret += ' != ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to:\n \tret += ' >= ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.less_than_or_equals_to:\n \tret += ' <= ';\n \tbreak;\n\t}\n\n\tif (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\tret += logicExpressionCode(expression.second_operand);\n\t} else if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\tret += arithmeticExpressionCode(expression.second_operand);\n\t} else {\n\t\tret += variableValueMenuCode(expression.second_operand);\n\t}\n\n\tret += ' ) ';\n\n\treturn ret;\n}\n\nfunction attributionsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += variableValueMenuCode(command_obj.variable) + ' = ';\n\n\tfor (var i = 0; i < command_obj.expression.length; i++) {\n\t\tret += elementExpressionCode(command_obj.expression[i]);\n\t}\n\n\treturn ret;\n}\n\nfunction elementExpressionCode (expression_obj) {\n\n\tvar ret = ''; \n\n\tfor (var i = 0; i < expression_obj.itens.length; i++) {\n\n\n\t\tif (expression_obj.itens[i].type) {\n\n\t\t\tret += variableValueMenuCode(expression_obj.itens[i]);\n\n\t\t} else if (expression_obj.itens[i].type_exp) {\n\n\t\t\tif (expression_obj.itens[i].type_exp == Models.EXPRESSION_ELEMENTS.par_exp_par) {\n\t\t\t\tret += ' ( ';\n\t\t\t}\n\n\t\t\tret += elementExpressionCode(expression_obj.itens[i]);\n\n\t\t\tif (expression_obj.itens[i].type_exp == Models.EXPRESSION_ELEMENTS.par_exp_par) {\n\t\t\t\tret += ' ) ';\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tswitch (expression_obj.itens[i]) {\n\t\t\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\t\t\tret += ' + ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\t\t\tret += ' - ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\t\t\tret += ' * ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\t\t\tret += ' / ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\t\t\tret += ' % ';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t}\n\n\treturn ret;\n\n}\n\nfunction functioncallsCode (command_obj, indentation) {\n\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\t\n\tret += variableValueMenuCode(command_obj.function_called);\n\n\treturn ret;\n}\n\nfunction readersCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\t\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_command_read') + ' ( ';\n\n\tret += variableValueMenuCode(command_obj.variable_value_menu);\n\n\tret += ' ) ';\n\treturn ret;\n}\n\nfunction variableValueMenuCode (variable_obj, is_return = false) {\n\tvar ret = '';\n\ttry {\n\t\tif (variable_obj.function_called) {\n\n\t\t\tif (variable_obj.function_called.name) {\n\t\t\t\tret += variable_obj.function_called.name + ' ( ';\n\t\t\t} else {\n\t\t\t\tret += LocalizedStrings.getUI(variable_obj.function_called.category)+'.'+LocalizedStrings.getUI(variable_obj.function_called.identifier) + ' ( ';\n\t\t\t}\n\n\t\t\tif (variable_obj.parameters_list) {\n\t\t\t\tfor (var i = 0; i < variable_obj.parameters_list.length; i++) {\n\t\t\t\t\tret += variableValueMenuCode(variable_obj.parameters_list[i]);\n\t\t\t\t\tif ((i + 1) < variable_obj.parameters_list.length) {\n\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tret += ' )';\n\t\t} else if (variable_obj.content.type) {\n\n\t\t\tret += variable_obj.content.name;\n\n\t\t\tif (variable_obj.content.dimensions == 1 && variable_obj.dimensions != 1) {\n\t\t\t\tret += ' [ ' + variableValueMenuCode(variable_obj.column) + ' ] ';\n\t\t\t}\n\n\t\t\tif (variable_obj.content.dimensions == 2 && variable_obj.dimensions != 2) {\n\t\t\t\tret += ' [ ' + variableValueMenuCode(variable_obj.row) + ' ] ';\n\t\t\t\tret += ' [ ' + variableValueMenuCode(variable_obj.column) + ' ] ';\n\t\t\t}\n\n\n\t\t} else {\n\t\t\tif (isNaN(variable_obj.content)) {\n\t\t\t\tret += '\"' + variable_obj.content + '\"';\n\t\t\t} else {\n\t\t\t\tret += variable_obj.content;\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\n\t\tif (!is_return) {\n\t\t\tUtils.renderErrorMessage(variable_obj.dom_object, LocalizedStrings.getUI('inform_valid_content'));\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\treturn ret;\n\n}\n\nfunction writersCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\t\n\tret += LocalizedStrings.getUI('text_command_write') + ' ( ';\n\n\tfor (var i = 0; i < command_obj.content.length; i++) {\n\t\tret += variableValueMenuCode(command_obj.content[i]);\n\n\t\tif ((i + 1) < command_obj.content.length) {\n\t\t\tret += ' + ';\n\t\t}\n\t}\n\n\tret += ' ) ';\n\treturn ret;\n}\n\nfunction commentsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '// ';\n\n\tret += command_obj.comment_text.content;\n\treturn ret;\n}\n\nfunction parametersCode (parameter_obj) {\n\tvar ret = '';\n\tswitch (parameter_obj.type) {\n\t\tcase Types.INTEGER:\n\t\t\tret += ' '+LocalizedStrings.getUI('integer')+' ';\n\t\t\tbreak;\n\t\tcase Types.REAL:\n\t\t\tret += ' '+LocalizedStrings.getUI('real')+' ';\n\t\t\tbreak;\n\t\tcase Types.TEXT:\n\t\t\tret += ' '+LocalizedStrings.getUI('text')+' ';\n\t\t\tbreak;\n\t\tcase Types.BOOLEAN:\n\t\t\tret += ' '+LocalizedStrings.getUI('boolean')+' ';\n\t\t\tbreak;\n\t}\n\tret += parameter_obj.name + '';\n\n\tif (parameter_obj.dimensions == 1) {\n\t\tret += ' []'\n\t} else if (parameter_obj.dimensions == 2) {\n\t\tret += ' [][]'\n\t}\n\treturn ret;\n}\n\nfunction variablesCode (variable_obj) {\n\tvar ret = '';\n\n\tvar temp = variable_obj;\n\n\tret += '\\n\\t\\t';\n\n\tif (temp.is_constant) {\n\t\tret += 'const ';\n\t}\n\tswitch (temp.type) {\n\t\tcase Types.INTEGER:\n\t\t\tret += LocalizedStrings.getUI('integer')+' ';\n\t\t\tbreak;\n\t\tcase Types.REAL:\n\t\t\tret += LocalizedStrings.getUI('real')+' ';\n\t\t\tbreak;\n\t\tcase Types.TEXT:\n\t\t\tret += LocalizedStrings.getUI('text')+' ';\n\t\t\tbreak;\n\t\tcase Types.BOOLEAN:\n\t\t\tret += LocalizedStrings.getUI('boolean')+' ';\n\t\t\tbreak;\n\t}\n\tret += temp.name + ' ';\n\n\tif (temp.dimensions == 1) {\n\t\tret += '[' + temp.columns + '] ';\n\n\t\tswitch (temp.type) {\n\t\t\tcase Types.INTEGER:\n\t\t\t\tret += '= {' + temp.value + '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.REAL:\n\t\t\t\tret += '= {' + temp.value.toFixed(2) + '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.TEXT:\n\t\t\t\tret += '= {';\n\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\tret += '\"'+temp.value[j]+'\"';\n\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.BOOLEAN:\n\t\t\t\tret += '= {';\n\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\tif (temp.value[j]) {\n\t\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");\n\t\t\t\t\t}\n\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t}\n\n\t} else if (temp.dimensions == 2) {\n\t\tret += '[' + temp.rows + '][' + temp.columns + '] ';\n\n\t\tswitch (temp.type) {\n\t\t\tcase Types.INTEGER:\n\t\t\t\tret += '= {';\n\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{' + temp.value[j] + '}';\n\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.REAL:\n\t\t\t\tret += '= {';\n\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{' + temp.value[j].toFixed(2) + '}';\n\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.TEXT:\n\t\t\t\tret += '= {';\n\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{';\n\n\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\tret += '\"' + temp.value[j][k] + '\"';\n\n\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret += '}';\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.BOOLEAN:\n\t\t\t\tret += '= {';\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{';\n\n\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (temp.value[j][k]) {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret += '}';\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\n\t\tswitch (temp.type) {\n\t\t\tcase Types.INTEGER:\n\t\t\t\tret += '= ' + temp.value;\n\t\t\t\tbreak;\n\t\t\tcase Types.REAL:\n\t\t\t\tret += '= ' + temp.value.toFixed(2);\n\t\t\t\tbreak;\n\t\t\tcase Types.TEXT:\n\t\t\t\tret += '= \"' + temp.value + '\"';\n\t\t\t\tbreak;\n\t\t\tcase Types.BOOLEAN:\n\t\t\t\tret += '= ';\n\t\t\t\tif (temp.value) {\n\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");\n\t\t\t\t} else {\n\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t}\n\n\treturn ret;\n\n}\n\nfunction globalsCode () {\n\tvar ret = '';\n\n\tif (window.program_obj.globals) {\n\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\tvar temp = window.program_obj.globals[i];\n\n\t\t\tret += '\\n\\t';\n\n\t\t\tif (temp.is_constant) {\n\t\t\t\tret += 'const ';\n\t\t\t}\n\t\t\tswitch (temp.type) {\n\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\tret += LocalizedStrings.getUI('integer');\n\t\t\t\t\tbreak;\n\t\t\t\tcase Types.REAL:\n\t\t\t\t\tret += LocalizedStrings.getUI('real');\n\t\t\t\t\tbreak;\n\t\t\t\tcase Types.TEXT:\n\t\t\t\t\tret += LocalizedStrings.getUI('text');\n\t\t\t\t\tbreak;\n\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\tret += LocalizedStrings.getUI('boolean');\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tret += ' ' + temp.name + ' ';\n\n\t\t\tif (temp.dimensions == 1) {\n\t\t\t\tret += '[' + temp.columns + '] ';\n\n\t\t\t\tswitch (temp.type) {\n\t\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\t\tret += '= {' + temp.value + '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.REAL:\n\t\t\t\t\t\tret += '= {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\t\t\tret += temp.value[j].toFixed(2);\n\t\t\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.TEXT:\n\t\t\t\t\t\tret += '= {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\t\t\tret += '\"'+temp.value[j]+'\"';\n\t\t\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\t\tret += '= {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\t\t\tif (temp.value[j]) {\n\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t} else if (temp.dimensions == 2) {\n\t\t\t\tret += '[' + temp.rows + '][' + temp.columns + '] ';\n\n\t\t\t\tswitch (temp.type) {\n\t\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\t\tret += '= {';\n\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{' + temp.value[j] + '}';\n\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.REAL:\n\t\t\t\t\t\tret += '= {';\n\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{';\n\n\t\t\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\t\tret += temp.value[j][k].toFixed(2);\n\n\t\t\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.TEXT:\n\t\t\t\t\t\tret += '= {';\n\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{';\n\n\t\t\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\t\tret += '\"' + temp.value[j][k] + '\"';\n\n\t\t\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\t\tret += '= {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{';\n\n\t\t\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (temp.value[j][k]) {\n\t\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tswitch (temp.type) {\n\t\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\t\tret += '= ' + temp.value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.REAL:\n\t\t\t\t\t\tret += '= ' + temp.value.toFixed(2);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.TEXT:\n\t\t\t\t\t\tret += '= \"' + temp.value + '\"';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\t\tret += '= ';\n\t\t\t\t\t\tif (temp.value) {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\t}\n\n\treturn ret;\n}","import $ from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as GlobalsManagement from './globals';\nimport * as VariablesManagement from './variables';\nimport * as CommentsManagement from './commands/comment';\nimport * as ReadersManagement from './commands/reader';\nimport * as WritersManagement from './commands/writer';\nimport * as AttributionsManagement from './commands/attribution';\nimport * as IftruesManagement from './commands/iftrue';\nimport * as RepeatNtimesManagement from './commands/repeatNtimes';\nimport * as WhiletruesManagement from './commands/whiletrue';\nimport * as DowhiletruesManagement from './commands/dowhiletrue';\nimport * as SwitchesManagement from './commands/switch';\nimport * as FunctioncallsManagement from './commands/functioncall';\nimport * as VariableValueMenuManagement from './commands/variable_value_menu';\nimport * as BreaksManagement from './commands/break';\nimport * as ReturnsManagement from './commands/return';\n\nimport * as nearest from 'jquery-nearest';\n\nvar has_element_created_draged = false;\nvar which_element_is_draged = null;\n\nexport function removeCommand (command, function_obj, dom_obj) {\n\tif (function_obj.commands.indexOf(command) > -1) {\n\t\tfunction_obj.commands.splice(function_obj.commands.indexOf(command), 1);\n\t\treturn true;\n\t}\n\n\t// Utilize dois parantNode, pois o primeiro é o div de comandos\n\ttry {\n\t\tif (dom_obj.parent().parent().data('command').commands_block.indexOf(command) > -1) {\n\t\t\tdom_obj.parent().parent().data('command').commands_block.splice\n\t\t\t(dom_obj.parent().parent().data('command').commands_block.indexOf(command), 1);\n\t\t\treturn true;\n\t\t}\t\n\t} catch (err) {}\n\t\n\ttry {\n\t\tif (dom_obj.parent().parent().data('command').type == Models.COMMAND_TYPES.iftrue) {\n\t\t\tif (dom_obj.parent().parent().data('command').commands_else.indexOf(command) > -1) {\n\t\t\t\tdom_obj.parent().parent().data('command').commands_else.splice\n\t\t\t\t(dom_obj.parent().parent().data('command').commands_else.indexOf(command), 1);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t} catch (err) {}\n\n\tif (dom_obj.parent().data('switchcase')) {\n\t\tconsole.log(\"o que encontrei: \");\n\t\tconsole.log(dom_obj.parent().data('switchcase'));\n\t\tdom_obj.parent().data('switchcase').commands_block.splice(dom_obj.parent().data('switchcase').commands_block.indexOf(command), 1);\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nwindow.function_container_active = null;\n\nexport function createFloatingCommand (function_obj, function_container, command_type, mouse_event) {\n\tvar floatingObject;\n\n\tswitch (command_type) {\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\tfloatingObject = BreaksManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\tfloatingObject = CommentsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\tfloatingObject = ReadersManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\tfloatingObject = WritersManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\tfloatingObject = AttributionsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\tfloatingObject = IftruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\tfloatingObject = RepeatNtimesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\tfloatingObject = WhiletruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tfloatingObject = DowhiletruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\t\tfloatingObject = SwitchesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\tfloatingObject = FunctioncallsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\tfloatingObject = ReturnsManagement.createFloatingCommand();\n\t\t\tbreak;\n\t}\n\n\tfloatingObject.draggable({\n\t\t/*drag: function(evt) {\n\t borderMouseDragCommand(function_obj, function_container, evt);\n\t },\n\t stop: function(evt) {\n\t \tfunction_container.find('.over_command_drag').each(function( index ) {\n\t\t\t\t$(this).removeClass('over_command_drag');\n\t\t\t});\n\t }*/\n\t}).appendTo(\"body\");\n\n\t$('body').mouseup(function(evt) {\n\t manageCommand(function_obj, function_container, evt, command_type);\n\t $('body').off('mouseup');\n\t $('body').off('mouseover');\n\t});\n\n\tfunction_container_active = function_container;\n\n\tfunction_container.find('.commands_list_div').on('mouseover', function(evt) {\n\t addGhostDiv(evt);\n\t});\n\tfunction_container.find('.commands_list_div').find(\"*\").on('mouseover', function(evt) {\n\t addGhostDiv(evt);\n\t});\n\t\n\tfloatingObject.css(\"position\", \"absolute\");\n\tmouse_event.type = \"mousedown.draggable\";\n\tmouse_event.target = floatingObject[0];\n\tfloatingObject.css(\"left\", mouse_event.pageX - window.divx);\n\tfloatingObject.css(\"top\", mouse_event.pageY);\n\tfloatingObject.trigger(mouse_event);\n}\n\nwindow.divx = 100;\nwindow.ghostDiv = $('<div class=\"ghost_div\">');\nwindow.active_container = null;\n\nfunction addGhostToEmptyBlock (element, evt) {\n\n\t$('.ghost_div').remove();\n\n\tvar container = element.closest('.command_container');\n\n\tif (!container.hasClass('dowhiletrue') && !container.hasClass('iftrue') && !container.hasClass('repeatNtimes') \n\t\t\t\t&& !container.hasClass('case_div') && !container.hasClass('whiletrue')) {\n\t\taddGhostToNotEmptyBlock(element, evt);\n\t\treturn;\n\t}\n\n\tif (window.active_container != null) {\n\t\tif (window.active_container.is(container)) {\n\t\t\tconsole.log('é o mesmo, não mudou!');\n\t\t} else {\n\t\t\tif (container.length < 1) {\n\t\t\t\tcontainer = element.closest('.commands_list_div');\n\t\t\t\tif (window.active_container.is(container)) {\n\t\t\t\t\tconsole.log('é o mesmo command list');\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('mudou para um command list');\n\t\t\t\t\twindow.active_container = container;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.log('mudou para um outro container?');\n\t\t\t}\n\t\t}\n\t}\n\n\twindow.active_container = container;\n\tif (container.hasClass('iftrue')) {\n\t\tvar containerIf = container.find('.commands_if').get(0);\n\t\tvar containerElse = container.find('.commands_else').get(0);\n\t\tvar topIfDistance = Math.abs(evt.clientY - containerIf.getBoundingClientRect().top);\n\t\tvar bottomIfDistance = Math.abs(containerIf.getBoundingClientRect().top + containerIf.getBoundingClientRect().height - evt.clientY);\n\t\tvar topElseDistance = Math.abs(evt.clientY - containerElse.getBoundingClientRect().top);\n\t\tvar bottomElseDistance = Math.abs(containerElse.getBoundingClientRect().top + containerElse.getBoundingClientRect().height - evt.clientY);\n\n\t\tif (topIfDistance < topElseDistance && topIfDistance < bottomElseDistance) {\n\t\t\t$(containerIf).append(window.ghostDiv);\n\t\t} else {\n\t\t\t$(containerElse).append(window.ghostDiv);\n\t\t}\n\t} else {\n\t\tcontainer.find('.block_commands').append(window.ghostDiv);\n\t}\n\t\n}\n\nfunction addGhostToNotEmptyBlock (element, evt) {\n\n\t$('.ghost_div').remove();\n\n\tvar container = element.closest('.dowhiletrue, .iftrue, .repeatNtimes, .case_div, .whiletrue');\n\n\t//console.log(\"\\n\\nNOT EMPTY: \", container);\n\n\tif (window.active_container != null) {\n\t\tif (container.length < 1) {\n\t\t\tcontainer = element.closest('.commands_list_div');\n\t\t\twindow.active_container = container;\n\t\t\taddGhostToFunctionArea(element, evt);\n\t\t} else {\n\t\t\t//console.log('mudou para um outro container?');\n\t\t}\n\t\t\n\t}\n\twindow.active_container = container;\n\n\t// quem está mais próximo? // Essa regra se aplica somente quando o over está sobre um comando\n\tvar allfilhos;\n\t\n\tif (container.hasClass('iftrue')) {\n\t\t\n\t\tif ($(evt.target).closest('.data_block_if').length > 0) {\n\t\t\tallfilhos = container.find('.commands_if').children('.command_container');\n\t\t} else if ($(evt.target).closest('.data_block_else').length > 0) {\n\t\t\tallfilhos = container.find('.commands_else').children('.command_container');\n\t\t} else {\n\n\t\t\tvar containerIf = container.find('.commands_if').get(0);\n\t\t\tvar containerElse = container.find('.commands_else').get(0);\n\t\t\tvar topIfDistance = Math.abs(evt.clientY - containerIf.getBoundingClientRect().top);\n\t\t\tvar bottomIfDistance = Math.abs(containerIf.getBoundingClientRect().top + containerIf.getBoundingClientRect().height - evt.clientY);\n\t\t\tvar topElseDistance = Math.abs(evt.clientY - containerElse.getBoundingClientRect().top);\n\t\t\tvar bottomElseDistance = Math.abs(containerElse.getBoundingClientRect().top + containerElse.getBoundingClientRect().height - evt.clientY);\n\n\t\t\tif (topIfDistance < topElseDistance && topIfDistance < bottomElseDistance) {\n\t\t\t\tallfilhos = $(containerIf).children('.command_container');\n\t\t\t} else {\n\t\t\t\tallfilhos = $(containerElse).children('.command_container');\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tallfilhos = container.children('.block_commands').children('.command_container');\n\t}\n\n\tvar topDistances = [];\n\tvar bottomDistances = [];\n\n\tfor (var i = 0; i < allfilhos.length; i++) {\n\t\tvar topD = Math.abs(evt.clientY - allfilhos.get(i).getBoundingClientRect().top);\n\t\ttopDistances.push(topD);\n\t\tvar botD = Math.abs(allfilhos.get(i).getBoundingClientRect().top + allfilhos.get(i).getBoundingClientRect().height - evt.clientY);\n\t\tbottomDistances.push(botD);\n\t}\n\n\tvar menorTop = Math.min.apply(null, topDistances);\n\tvar indiceTop = topDistances.indexOf(menorTop);\n\n\tvar menorBot = Math.min.apply(null, bottomDistances);\n\tvar indiceBot = bottomDistances.indexOf(menorBot);\n\n\tif (menorTop < menorBot) {\n\t\twindow.ghostDiv.insertBefore($(allfilhos.get(indiceTop)));\n\t} else {\n\t\twindow.ghostDiv.insertAfter($(allfilhos.get(indiceBot)));\n\t}\n}\n\nfunction addGhostToFunctionArea (undermouse, evt) {\n\t$('.ghost_div').remove();\n\tvar allfilhos = undermouse.closest('.commands_list_div').children('.command_container');\n\n\tvar topDistances = [];\n\tvar bottomDistances = [];\n\n\tfor (var i = 0; i < allfilhos.length; i++) {\n\t\tvar topD = Math.abs(evt.clientY - allfilhos.get(i).getBoundingClientRect().top);\n\t\ttopDistances.push(topD);\n\t\tvar botD = Math.abs(allfilhos.get(i).getBoundingClientRect().top + allfilhos.get(i).getBoundingClientRect().height - evt.clientY);\n\t\tbottomDistances.push(botD);\n\t}\n\n\tvar menorTop = Math.min.apply(null, topDistances);\n\tvar indiceTop = topDistances.indexOf(menorTop);\n\n\tvar menorBot = Math.min.apply(null, bottomDistances);\n\tvar indiceBot = bottomDistances.indexOf(menorBot);\n\n\tif (menorTop < menorBot) {\n\t\twindow.ghostDiv.insertBefore($(allfilhos.get(indiceTop)));\n\t} else {\n\t\twindow.ghostDiv.insertAfter($(allfilhos.get(indiceBot)));\n\t}\n\n}\n\nfunction addGhostDiv (evt) {\n\n\tconsole.log('a');\n\n\tvar undermouse = $(evt.target);\n\n\tif (undermouse.hasClass('ghost_div')) {\n\t\treturn;\n\t} else if (undermouse.hasClass('commands_list_div')) {\n\t\taddGhostToFunctionArea(undermouse, evt);\n\t\treturn;\n\t} else if (undermouse.hasClass('block_commands')) {\n\t\tif (undermouse.find('.command_container').length > 0) {\n\t\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t} else {\n\t\t\taddGhostToEmptyBlock(undermouse, evt);\n\t\t}\n\t} else if (undermouse.hasClass('case_commands_block')) {\n\t\tif (undermouse.find('.command_container').length > 0) {\n\t\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t} else {\n\t\t\taddGhostToEmptyBlock(undermouse, evt);\n\t\t}\n\t} else if (undermouse.hasClass('command_container')) {\n\t\tif (undermouse.find('.command_container').length > 0) {\n\t\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t} else {\n\t\t\taddGhostToEmptyBlock(undermouse, evt);\n\t\t}\n\t} else {\n\n\t}\n}\n\nfunction borderMouseDragCommand (function_obj, function_container, evt) {\n\n\tfunction_container.find('.over_command_drag').each(function( index ) {\n\t\t$(this).removeClass('over_command_drag');\n\t});\n\n\tvar prev = null;\n\n\tfunction_container.find('.commands_list_div').each(function( index ) { \n\t\tprev = $(this);\n\t\tif (prev) {\n\t\t\tvar objLeft = prev.offset().left;\n\t var objTop = prev.offset().top;\n\t var objRight = objLeft + prev.width();\n\t var objBottom = objTop + prev.height();\n\t if (evt.pageX > objLeft && evt.pageX < objRight && evt.pageY > objTop && evt.pageY < objBottom) {\n\t \tprev.addClass(\"over_command_drag\"); \n\t }\n\t }\n\t});\n\n\tfunction_container.find('.command_container').each(function( index ) { \n\t\tvar obj = $(this);\n\t\tvar objLeft = obj.offset().left;\n var objTop = obj.offset().top;\n var objRight = objLeft + obj.width();\n var objBottom = objTop + obj.height();\n if (evt.pageX > objLeft && evt.pageX < objRight && evt.pageY > objTop && evt.pageY < objBottom) {\n \tif (prev) {\n \t\tprev.removeClass('over_command_drag');\n \t}\n \tobj.addClass(\"over_command_drag\"); \n \treturn;\n }\n\t});\n}\n\n// before_after_inside: 1 -> before, 2 -> after, 3 -> inside\nexport function renderCommand (command, element_reference, before_after_inside, function_obj) {\n\tvar createdElement;\n\tswitch (command.type) {\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\tcreatedElement = CommentsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\tcreatedElement = BreaksManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\tcreatedElement = ReadersManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\tcreatedElement = WritersManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\tcreatedElement = AttributionsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\tcreatedElement = FunctioncallsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\tcreatedElement = IftruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\tcreatedElement = RepeatNtimesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\tcreatedElement = WhiletruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tcreatedElement = DowhiletruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\t\tcreatedElement = SwitchesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\tcreatedElement = ReturnsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\t}\n\tswitch (before_after_inside) {\n\t\tcase 1:\n\t\t\tcreatedElement.insertBefore(element_reference);\n\t\t\tbreak;\n\n\t\tcase 2:\n\t\t\tcreatedElement.insertAfter(element_reference);\n\t\t\tbreak;\n\n\t\tcase 3: \n\t\t\telement_reference.append(createdElement);\n\t\t\tbreak;\n\t}\n\n}\n\nexport function genericCreateCommand (command_type) {\n\n\tswitch (command_type) {\n\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\treturn new Models.Break();\n\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\treturn new Models.Comment(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_value, LocalizedStrings.getUI('text_comment'), null, null, false));\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\treturn new Models.Reader(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false));\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\treturn new Models.Writer([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\treturn new Models.Attribution(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false), \n\t\t\t\t[]);\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\treturn new Models.FunctionCall(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_function, null, null, null, false), null);\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\treturn new Models.IfTrue(new Models.ConditionalExpression(null), null, null);\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\treturn new Models.RepeatNTimes(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false), \n\t\t\t\t\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false),\n\t\t\t\t\t\t\t\t\t\t null, new Models.ConditionalExpression(null), null, null);\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\treturn new Models.WhileTrue(new Models.ConditionalExpression(null), null);\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\treturn new Models.DoWhileTrue(new Models.ConditionalExpression(null), null);\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\n\t\t\tvar sc = [new Models.SwitchCase(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true))];\n\n\t\t\treturn new Models.Switch(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true), sc);\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\treturn new Models.Return(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t}\n}\n\nfunction dragTrash (event) {\n\n\t$('.ghost_div').remove();\n\n\tvar trash = $('<i class=\"ui icon trash alternate outline\"></i>');\n\t$('body').append(trash);\n\ttrash.css('position', 'absolute');\n\ttrash.css('top', event.clientY);\n\ttrash.css('left', event.clientX - 20);\n\ttrash.css('font-size', '3em');\n\ttrash.css('display', 'none');\n\n\tfunction_container_active.find('.commands_list_div').off('mouseover');\n\tfunction_container_active.find('.commands_list_div').find(\"*\").off('mouseover');\n\n\ttrash.fadeIn( 200, function() {\n\t\ttrash.fadeOut( 200, function() {\n\t\t\ttrash.remove();\n\t\t} );\n });\n}\n\nfunction manageCommand (function_obj, function_container, event, command_type) {\n\n\t//$('.ghost_div').remove();\n\n\t$( \".created_element\" ).each(function( index ) { \n\t\t$(this).remove();\n\t});\n\n\tvar el = $(document.elementFromPoint(event.clientX, event.clientY));\n\n\tif (el.hasClass('ghost_div')) {\n\t\tif (el.closest('.command_container').length < 1) {\n\t\t\t\n\n\t\t\tconsole.log('\\n\\nvou tentar!!!!');\n\n\t\t\tconsole.log(el.closest('.commands_list_div'), '\\n\\n');\n\n\t\t\tel.closest('.commands_list_div').css('height', el.closest('.commands_list_div').css('height') + 30);\n\t\t\t\n\t\t\t//$('.ghost_div').remove();\n\n\t\t\tel = el.closest('.commands_list_div');\n\t\t}\n\t}\n\n\tconsole.log('soltou no: ');\n\tconsole.log(el);\n\tconsole.log(el.data('fun'));\n\n\t// Primeiro verificar se ele soltou no espaço da função correta:\n\tvar hier = el.parentsUntil(\".all_functions\");\n\tvar esta_correto = false;\n\tvar esta_na_div_correta = false;\n\tif (el.hasClass(\"commands_list_div\")) {\n\t\testa_na_div_correta = true;\n\t} \n\tfor (var i = 0; i < hier.length; i++) {\n\t\tvar temp = $(hier[i]);\n\t\tif (temp.hasClass(\"commands_list_div\")) {\n\t\t\testa_na_div_correta = true;\n\t\t} \n\t\tif (temp.data('fun') == function_obj) {\n\t\t\testa_correto = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!esta_correto) {\n\t\thas_element_created_draged = false;\n\t\twhich_element_is_draged = null;\n\t\tdragTrash(event);\n\t\treturn;\n\t} else {\n\t\tif (!esta_na_div_correta) {\n\t\t\thas_element_created_draged = false;\n\t\t\twhich_element_is_draged = null;\n\t\t\tdragTrash(event);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Agora é descobrir qual o escopo para adicionar o comando:\n\n\t// Se o elemento clicado possuir o atributo \"fun\", então, é direto na div dos comandos:\n\tif (typeof el.data('fun') !== 'undefined') {\n\n\t\t// Se a lista de comandos estiver vazia, então é o primeiro.\n\t\t// Portanto, ele deve soltar o elemento obrigatoriamente no objeto vazio\n\t\tif ((el.data('fun').commands == null) || (el.data('fun').commands.length == 0)) {\n\t\t\t\t// pode adicionar \n\t\t\t\tel.data('fun').commands = [];\n\n\t\t\t\tvar new_cmd = genericCreateCommand(command_type);\n\n\t\t\t\tel.data('fun').commands.push(new_cmd);\n\n\t\t\t\trenderCommand(new_cmd, $(function_container).find('.commands_list_div'), 3, function_obj);\n\t\t\t\n\t\t} else { // Entra nesse else, caso já existam outros comandos no bloco:\n\n\t\t\tfindNearbyCommandToAddInFunctionScope(el, event, $(function_container).find('.commands_list_div'), function_obj, command_type);\n\t\t}\n\n\t} else {\n\t\tconsole.log(\"soltou em um comando\");\n\t\t// descobrir em qual comando ele soltou: \n\t\tvar hier_find = el.parentsUntil(\".commands_list_div\");\n\t\tvar hierarquia_bottom_up = [];\n\t\tif (typeof el.data('command') !== 'undefined') {\n\t\t\thierarquia_bottom_up.push(el.data('command'));\n\t\t}\n\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\thierarquia_bottom_up.push($(hier_find[i]).data('command'));\n\t\t\t}\n\t\t}\n\t\tconsole.log(\"comando em que soltou: \");\n\t\tconsole.log(hierarquia_bottom_up[0]);\n\t\tconsole.log(\"hierarquia de baixo para cima na árvore, de onde ele soltou: \");\n\t\tfor (var i = 0; i < hierarquia_bottom_up.length; i++) {\n\t\t\tconsole.log(hierarquia_bottom_up[i]);\n\t\t}\n\n\t\t// Se for do tipo break, verificar se está no contexto correto: \n\t\t// Caso não esteja no contexto, apenas retorna sem dar continuidade:\n\t\tvar is_correct_context = false;\n\t\tif (command_type == Models.COMMAND_TYPES.break) {\n\t\t\tfor (var i = 0; i < hierarquia_bottom_up.length; i++) {\n\t\t\t\tif ((hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.repeatNtimes)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.whiletrue)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.dowhiletrue)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.switch)) {\n\n\t\t\t\t\tis_correct_context = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!is_correct_context) {\n\t\t\t\tconsole.error(\"Context not allowed to insert BREAK COMMAND!\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// se a hierarquia possuir apenas um elemento, então está na raiz dos comandos: \n\t\tif (hierarquia_bottom_up.length == 1) {\n\t\t\tconsole.log('QQ1');\n\t\t\tvar sub_elemento = false;\n\t\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\t\tconsole.log('QQ2');\n\t\t\t\t\tfindBeforeOrAfterCommandToAdd(hier_find[i], event, function_obj, command_type);\n\t\t\t\t\tsub_elemento = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!sub_elemento) {\n\t\t\t\tconsole.log('QQ3');\n\t\t\t\tfindBeforeOrAfterCommandToAdd(el[0], event, function_obj, command_type);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log('QQ4');\n\t\t\t// caso exista mais de um elemento na hierarquia:\n\t\t\tif (typeof $(el).data('command') !== 'undefined') {\n\t\t\t\tconsole.log('QQ5');\n\t\t\t\tconsole.log(\"PPP1\");\n\t\t\t\tinsertCommandInBlockHierar(el[0], event, function_obj, command_type, hier_find, hierarquia_bottom_up);\n\t\t\t} else {\n\t\t\t\tconsole.log('QQ6');\n\t\t\t\tvar sub_elemento = false;\n\t\t\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\t\t\tconsole.log('QQ7');\n\t\t\t\t\t\tinsertCommandInBlockHierar(hier_find[i], event, function_obj, command_type, hier_find, hierarquia_bottom_up);\n\t\t\t\t\t\tsub_elemento = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\thas_element_created_draged = false;\n\twhich_element_is_draged = null;\n\n\trenderAlgorithm();\n}\n\nfunction insertCommandInBlockHierar (el, event, function_obj, command_type, hier_dom, hier_obj) {\n\tvar el_jq = $(el);\n\tvar command_parent = el_jq.data('command');\n\t\n\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.switch) ) {\n\n\t\tconsole.log('QQ17');\n\n\t\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ) {\n\n\t\t\tconsole.log('QQ18');\n\n\t\t\t// Se não tiver outro comando ainda no bloco, só adiciona: \n\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindNearbyCommandToAddInBlockScope(el, event, el, function_obj, command_type, command_parent);\n\t\t\t}\n\n\t\t} else {\n\t\t\t// QUANDO FOR BLOCO DO TIPO IF OU SWITCH/CASE:\n\t\t\taddCommandToSwitchCase(event, function_obj, command_type);\n\t\t}\n\n\t} else {\n\t\tconsole.log('QQ19');\n\t\t// entra neste bloco, se soltou o comando sobre outro comando dentro de um subbloco:\n\t\tfindBeforeOrAfterCommandToAddInsertBlock(el, event, function_obj, command_type);\n\t}\n}\n\nfunction findNearbyCommandToAddInBlockScope (el, event, node_list_commands, function_obj, command_type, command_parent) {\n\n\tvar all_sub = $(node_list_commands).find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\tcommand_parent.commands_block.push(recentComand);\n\t\t//\n\t\trenderCommand(recentComand, node_list_commands, 3, function_obj);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = command_parent.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t}\n}\n\nfunction findBeforeOrAfterCommandToAddInsertBlock (el, event, function_obj, command_type) {\n\n\tvar el_jq = $(el);\n\tvar command_parent = $(el.parentNode.parentNode).data('command');\n\tvar command_target = el_jq.data('command');\n\tvar temp_parent = $(el.parentNode.parentNode);\n\n\tvar is_in_else = false;\n\n\tif (!command_parent) {\n\t\tcommand_parent = el_jq.data('command');\n\t\ttemp_parent = el_jq;\n\t\tvar hier = el_jq.parentsUntil(\".command_container\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('else') != 'undefined') {\n\t\t\t\tis_in_else = true;\n\t\t\t}\n\t\t\tif (typeof temp.data('command') != 'undefined') {\n\t\t\t\tcommand_parent = temp.data('command');\n\t\t\t\ttemp_parent = temp;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tvar hier = el_jq.parentsUntil(\".command_container\");\n\tfor (var i = 0; i < hier.length; i++) {\n\t\tvar temp = $(hier[i]);\n\t\tif (typeof temp.data('else') != 'undefined') {\n\t\t\tis_in_else = true;\n\t\t}\n\t}\n\n\tif (command_parent == command_target) {\n\t\tvar hier = el_jq.parentsUntil(\".command_container\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('else') !== 'undefined') {\n\t\t\t\tis_in_else = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ((command_parent.type != Models.COMMAND_TYPES.iftrue) && (command_parent.type != Models.COMMAND_TYPES.switch)) {\n\t\tvar hier = temp_parent.parentsUntil(\".all_cases_div\");\n\t\tconsole.log(\"vou procurar!!\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tconsole.log(\"estou vasculhando...\");\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('switchcase') !== 'undefined') {\n\t\t\t\tconsole.log(\"encontrei\");\n\t\t\t\tcommand_parent = temp.data('switchcase');\n\t\t\t\tis_in_else = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tconsole.log('debugging:');\n\tconsole.log('el_jq');\n\tconsole.log(el_jq);\n\tconsole.log('command_parent');\n\tconsole.log(command_parent);\n\tconsole.log('command_target');\n\tconsole.log(command_target);\n\n\tvar menor_distancia = 999999999;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\tt_top = el.getBoundingClientRect().top;\n\tt_bot = el.getBoundingClientRect().top + el.getBoundingClientRect().height;\n\n\tvar d_top = event.clientY - t_top; // distancia topo\n\tvar d_bot = t_bot - event.clientY; // distancia baixo\n\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\n\tif (d_top < d_bot) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tconsole.log('MMM1');\n\n\t\tif (is_in_else) {\n\n\t\t\tconsole.log('MMM2');\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('MMM3');\n\t\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\t\tcommand_parent.commands_else = [];\n\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type, true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconsole.log('MMM7');\n\t\t\tvar index = command_parent.commands_else.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice(index, 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 1, function_obj);\n\t\t} else {\n\t\t\tconsole.log('MMM4');\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('Nxxxx5');\n\t\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\t\tcommand_parent.commands_block = [];\n\t\t\t\t\tconsole.log('SSS4');\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('SSS5');\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconsole.log('MMM6');\n\n\t\t\tvar index = command_parent.commands_block.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 1, function_obj);\n\t\t}\n\n\t\t\n\n\t} else {\n\t\tconsole.log('XXX1');\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tif (is_in_else) {\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('MMM3');\n\t\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\t\tcommand_parent.commands_else = [];\n\t\t\t\t\tconsole.log('SSS1');\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\t\tconsole.log('SSS2');\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type, true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log('XXX2');\n\t\t\tvar index = command_parent.commands_else.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice((index + 1), 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 2, function_obj);\n\n\t\t} else {\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('Nxxxx78');\n\t\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\t\t\t\t\tconsole.log('SSS6');\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('SSS7');\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log('XXX3');\n\t\t\tvar index = command_parent.commands_block.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice((index + 1), 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 2, function_obj);\n\t\t}\n\n\t\t\n\t}\n}\n\nfunction insertCommandInBlock (el, event, function_obj, command_type) {\n\tvar el_jq = $(el);\n\tvar command_parent = el_jq.data('command');\n\n\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ) {\n\n\t\t// Se não tiver outro comando ainda no bloco, só adiciona: \n\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\tcommand_parent.commands_block = [];\n\n\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\trenderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj);\n\t\t} else { // Se já tem algum comando no bloco:\n\t\t\tfindInBlockCorrectPlace(el, event, function_obj, command_type);\n\t\t}\n\n\t} else if (el_jq.data('command').type == Models.COMMAND_TYPES.iftrue) {\n\n\t\tconsole.log('QQ9');\n\t\t\n\t\t// no if ou no else?\n\t\tvar correct_div = $(document.elementFromPoint(event.pageX, event.pageY));\n\t\tvar is_in_if = true;\n\t\tif (correct_div.data('if')) {\n\t\t\tis_in_if = true;\n\t\t} else if (correct_div.data('else')) {\n\t\t\tis_in_if = false;\n\t\t} else {\n\t\t\tvar hier = correct_div.parentsUntil(\".command_container\");\n\t\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\t\tvar temp = $(hier[i]);\n\t\t\t\tif (typeof temp.data('if') !== 'undefined') {\n\t\t\t\t\tis_in_if = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (typeof temp.data('else') !== 'undefined') {\n\t\t\t\t\tis_in_if = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (is_in_if) {\n\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.commands_if'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindInBlockCorrectPlace(el_jq.find('.commands_if'), event, function_obj, command_type);\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\tcommand_parent.commands_else = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.commands_else'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindInBlockCorrectPlace(el_jq.find('.commands_else'), event, function_obj, command_type, true);\n\t\t\t}\n\n\t\t}\n\n\t} else { // é do tipo switch\n\t\tconsole.log(\"está tentando inserir em um switch que está na raiz!\");\n\t\taddCommandToSwitchCase(event, function_obj, command_type);\n\t}\n}\n\nfunction addCommandToSwitchCase (event, function_obj, command_type) {\n\n\tvar el = $(document.elementFromPoint(event.clientX, event.clientY));\n\n\tvar which_case = el.data('switchcase');\n\tvar case_div = el;\n\t\n\tif (!which_case) {\n\t\tvar hier_find = el.parentsUntil(\".all_cases_div\");\n\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\tif (typeof $(hier_find[i]).data('switchcase') !== 'undefined') {\n\t\t\t\twhich_case = $(hier_find[i]).data('switchcase');\n\t\t\t\tcase_div = $(hier_find[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (which_case.commands_block == null || which_case.commands_block.length < 1) {\n\t\twhich_case.commands_block = [];\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\twhich_case.commands_block.push(recentComand);\n\t\trenderCommand(recentComand, case_div.find('.case_commands_block'), 3, function_obj);\n\t} else {\n\t\tfindInBlockCorrectPlaceInSwitchCase(which_case, case_div, event, function_obj, command_type);\n\t}\n\n}\n\n\n\n\nfunction findInBlockCorrectPlaceInSwitchCase (which_case, case_div, event, function_obj, command_type) {\n\n\tvar all_sub = case_div.find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\twhich_case.commands_block.push(recentComand);\n\n\t\trenderCommand(recentComand, $(case_div.find('.case_commands_block')[0]), 3, function_obj);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = which_case.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t which_case.commands_block.splice(index, 0, recentComand);\n\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t}\n\t}\n}\n\nfunction findInBlockCorrectPlace (el, event, function_obj, command_type, is_in_else = false) {\n\tvar el_jq = $(el);\n\tvar all_sub = el_jq.find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\n\tconsole.log(\"menor_distancia: \");\n\tconsole.log(elemento_menor_distancia);\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\n\t\tconsole.log('QQ11');\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar command_parent = el_jq.data('command');\n\n\t\tif (is_in_else) {\n\t\t\tconsole.log('QQ15');\n\t\t\tcommand_parent.commands_else.push(recentComand);\n\t\t\tconsole.log('el_jq');\n\t\t\tconsole.log(el_jq);\n\t\t\tconsole.log(\"$(el_jq.find('.commands_else')[0]):: \");\n\t\t\tconsole.log($(el_jq.find('.commands_else')[0]));\n\n\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\n\t\t} else {\n\t\t\tconsole.log('QQ16');\n\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\trenderCommand(recentComand, $(el_jq.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\n\t} else {\n\n\t\tconsole.log('QQ12');\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar command_parent = el_jq.data('command');\n\n\t\tif (is_in_else) {\n\n\t\t\tvar index = command_parent.commands_else.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice(index, 0, recentComand);\n\t\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t\t}\n\n\t\t} else {\n\t\t\tvar index = command_parent.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n}\n\nfunction findBeforeOrAfterCommandToAdd (el, event, function_obj, command_type) {\n\tswitch ($(el).data('command').type) {\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tinsertCommandInBlock(el, event, function_obj, command_type);\n\t\t\treturn;\n\t}\n\n\tvar menor_distancia = 999999999;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\tt_top = el.getBoundingClientRect().top;\n\tt_bot = el.getBoundingClientRect().top + el.getBoundingClientRect().height;\n\n\tvar d_top = event.clientY - t_top; // distancia topo\n\tvar d_bot = t_bot - event.clientY; // distancia baixo\n\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif (d_top < d_bot) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(el).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, el, 1, function_obj);\n\n\t} else {\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(el).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice((index + 1), 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, el, 2, function_obj);\n\t}\n}\n\nfunction findNearbyCommandToAddInFunctionScope (el, event, node_list_commands, function_obj, command_type) {\n\n\tvar all_sub = $(node_list_commands).find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\tfunction_obj.commands.push(recentComand);\n\t\t//\n\t\trenderCommand(recentComand, node_list_commands, 3, function_obj);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t}\n}\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui attribution created_element\"> <i class=\"ui icon small arrow left\"></i> <span> x = 1 + 1 </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\t\n\tvar el = $('<div class=\"ui attribution command_container\"><i class=\"ui icon small arrow left command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_attributed\"></div> <span class=\"text_attr_receives span_command_spec\">'+LocalizedStrings.getUI('text_receives')+'</span> '\n\t\t + '<div class=\"expression_elements\"></div> </div>');\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.variable, el.find('.var_attributed'), function_obj);\n\n\tif (!command.expression || command.expression.length < 1) {\n\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.op_exp, [Models.ARITHMETIC_TYPES.none, \n\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\tcommand.expression.push(exp);\n\t}\n\n\taddHandlers(command, function_obj, el);\n\n\trenderExpressionElements(command, function_obj, el);\n\n\treturn el;\n\n}\n\nexport function manageExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, selectedItem, expression_element) {\n\t\n\tvar index_to_move = expression_element.itens.indexOf(ref_object);\n\n\tswitch (selectedItem.data('exp')) {\n\t\tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, [expression_element.itens[index_to_move],\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.op_exp, [Models.ARITHMETIC_TYPES.plus, \n\t\t\t\texpression_element.itens[index_to_move] ]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.par_exp_par, [expression_element.itens[index_to_move]]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\t}\n\n\trenderExpressionElements(command, function_obj, dom_object);\n\n}\n\nfunction renderExpressionElements (command, function_obj, el) {\n\tvar expression_div = el.find('.expression_elements');\n\tvar command_container;\n\n\tif (el.hasClass(\"command_container\") == false) {\n\t\tvar hier = el.parentsUntil(\".command_container\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"command_container\")) {\n\t\t\t\tcommand_container = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ($(hier[i]).hasClass(\"expression_elements\")) {\n\t\t\t\texpression_div = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (command_container) {\n\t\texpression_div = command_container.find('.expression_elements');\n\t}\n\n\texpression_div.text('');\n\n\tfor (var i = 0; i < command.expression.length; i++) {\n\n\t\tvar temp = $('<div class=\"expression_element\"></div>');\n\t\ttemp.data('ref_element', command.expression[i]);\n\t\ttemp.data('ref_index', i);\n\n\t\texpression_div.append(temp);\n\n\t\trenderElement(command, function_obj, temp, command.expression[i]);\n\t}\n}\n\nfunction renderOperator (command, function_obj, temp_op, expression_element, index_op) {\n\n\tvar context_menu = '<div class=\"ui dropdown\"><div class=\"text\">';\n\n\tswitch (expression_element.itens[index_op]) {\n\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\tcontext_menu += '+';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\tcontext_menu += '-';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\tcontext_menu += '*';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\tcontext_menu += '/';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\tcontext_menu += '%';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.none:\n\t\t\tcontext_menu += '...';\n\t\t\tbreak;\n\t}\n\t\n\tcontext_menu += '</div><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.plus+'\">+</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.minus+'\">-</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.multiplication+'\">*</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.division+'\">/</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.module+'\">%</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.none+'\" data-text=\"...\">Nenhum</div>';\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\ttemp_op.append(context_menu);\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t expression_element.itens[index_op] = value;\n }\n\t});\n\n}\n\nfunction renderMenuAddExpression (command, function_obj, el, dom_append_menu, expression_append_new_expression) {\n\n\tif (el.hasClass(\"command_container\") == false) {\n\t\tvar hier = el.parentsUntil(\".commands_list_div\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"command_container\")) {\n\t\t\t\tel = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom_append_menu.hasClass(\"expression_elements\") == false) {\n\t\tvar hier = el.parentsUntil(\".commands_list_div\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"expression_elements\")) {\n\t\t\t\tdom_append_menu = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tvar context_menu = '<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"ui icon arrow alternate circle right outline\"></i><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\tdom_append_menu.append(context_menu);\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t switch (value) {\n\t \tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t \tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, [new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.op_exp, [Models.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.par_exp_par, [new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\n\t\t\tbreak;\n\t\t}\n\t\t\n\t\trenderExpressionElements(command, function_obj, el);\n }\n\t});\n\n}\n\nfunction renderElement (command, function_obj, el, expression_element) {\n\n\tswitch (expression_element.type_exp) {\n\t\tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t\t\tvar temp_op = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp_1 = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp_2 = $('<div class=\"component_element\"></div>');\n\n\t\t\tel.append(temp_exp_1);\n\t\t\tel.append(temp_op);\n\t\t\tel.append(temp_exp_2);\n\t\t\t\n\t\t\tif (expression_element.itens[0].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[0], temp_exp_1, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp_1, expression_element.itens[0]);\n\t\t\t}\n\n\t\t\trenderOperator(command, function_obj, temp_op, expression_element, 1);\n\n\t\t\tif (expression_element.itens[2].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[2], temp_exp_2, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp_2, expression_element.itens[2]);\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\t\t\tvar temp_op = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp = $('<div class=\"component_element\"></div>');\n\n\t\t\tel.append(temp_op);\n\t\t\tel.append(temp_exp);\n\n\t\t\trenderOperator(command, function_obj, temp_op, expression_element, 0);\n\n\t\t\tif (expression_element.itens[1].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[1], temp_exp, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp, expression_element.itens[1]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar temp_par_1 = $('<div class=\"component_element\"> ( </div>');\n\t\t\tvar temp_exp = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_par_2 = $('<div class=\"component_element\"> ) </div>');\n\n\t\t\tel.append(temp_par_1);\n\t\t\tel.append(temp_exp);\n\n\t\t\tfor (var j = 0; j < expression_element.itens.length; j++) {\n\t\t\t\tif (expression_element.itens[j].type) {\n\t\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[j], temp_exp, function_obj, 2, expression_element);\n\t\t\t\t} else {\n\t\t\t\t\trenderElement(command, function_obj, temp_exp, expression_element.itens[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\t//renderMenuAddExpression(command, function_obj, el, el, expression_element.itens);\n\n\t\t\tel.append(temp_par_2);\n\n\t\t\tbreak;\n\t}\n\n}\n\n\nfunction renderExpression (command, function_obj, el) {\n\n\tvar expression_div = el.find('.expression_elements');\n\texpression_div.text('');\n\n\tvar menu_add_item = $('<div class=\"menu_add_item\"></div>');\n\tmenu_add_item.data('index_add', 0);\n\n\texpression_div.append(menu_add_item);\n\t\n\tfor (var i = 0; i < command.expression.length; i++) {\n\n\t\tif (command.expression[i].type) {\n\n\t\t\tvar temp = $('<div class=\"expression_element\"></div>');\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t\tVariableValueMenu.renderMenu(command, command.expression[i], temp, function_obj);\n\n\t\t} else if (command.expression[i] == \"(\" || command.expression[i] == \")\") {\n\n\t\t\tvar temp = $('<div class=\"expression_element\">'+command.expression[i]+'</div>');\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t} else {\n\n\t\t\tvar temp = '<div class=\"expression_element\">';\n\n\t\t\tswitch(command.expression[i]) {\n\t\t\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\t\t\ttemp += '+';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\t\t\ttemp += '-';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\t\t\ttemp += '*';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\t\t\ttemp += '/';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\t\t\ttemp += '%';\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttemp += '</div>';\n\t\t\ttemp = $(temp);\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t}\n\t\t\n\t\tvar menu_add_item_seq = $('<div class=\"menu_add_item\"></div>');\n\t\tvar index_temp = (i + 1);\n\t\tmenu_add_item_seq.data('index_add', index_temp);\n\t\texpression_div.append(menu_add_item_seq);\n\n\t}\n\n\taddMenuItens(command, function_obj, el);\n\n}\n\nfunction addMenuItens (command, function_obj, expression_div) {\n\tvar divs_expression = expression_div.find('.menu_add_item');\n\n\tfor (var i = 0; i < divs_expression.length; i++) {\n\n\t\tvar temp = $(divs_expression[i]).data('index_add');\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><i class=\"ui icon plus square outline\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"value\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_value')+'</div>';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"operator\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_operator')+'</div>';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"parentheses\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_parentheses')+'</div>';\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\t$(divs_expression[i]).append(context_menu);\n\n\t\tcontext_menu.dropdown({\n\t on: 'hover',\n\t onChange: function(value, text, $selectedItem) {\n \t\tswitch ($selectedItem.data('option')) {\n \t\t\tcase \"value\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t\tcase \"operator\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, Models.ARITHMETIC_TYPES.plus);\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t\tcase \"parentheses\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, \"(\");\n \t\t\t\tcommand.expression.splice($selectedItem.data('index') + 1, 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n \t\t\t\tcommand.expression.splice($selectedItem.data('index') + 2, 0, \")\");\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t }\n \t}\n\t });\n\n\t}\n}\n\n\nfunction addHandlers (command, function_obj, attribution_dom) {\n\n\tattribution_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, attribution_dom)) {\n\t\t\tattribution_dom.fadeOut(400, function() {\n\t\t\t\tattribution_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n\n\tattribution_dom.find('.button_refresh_attribution').on('click', function() {\n\t\trenderExpressionElements(command, function_obj, attribution_dom);\n\t});\n}\n\nexport function renderMenuOperations (command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected) {\n\n\t/*console.log(\"recebido o seguinte DOM: \");\n\tconsole.log(dom_object);\n\n\tif (dom_object.hasClass('var_attributed')) {\n\t\treturn;\n\t} else {\n\t\tvar hier = dom_object.parentsUntil(\".command_container\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass('var_attributed') || $(hier[i]).hasClass('parameters_function_called')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\n\t\t\n\t}\n\n\tdom_object.find('.context_menu_clear').remove();\n\n\n\tvar menu_operations = '<div class=\"ui dropdown menu_operations\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\n\tfor (var tm in Models.ARITHMETIC_TYPES) {\n\n\t\tmenu_operations += '<div class=\"item\" data-option=\"'+tm+'\">'+LocalizedStrings.getUI('btn_arithmetic_' + tm)+'</div>';\n }\n menu_operations += '<div class=\"item\" data-option=\"clear\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\t\n menu_operations += '</div></div>';\n\n menu_operations = $(menu_operations);\n\n dom_object.append(menu_operations);\n\n menu_operations.dropdown({\n \tonChange: function(value, text, $selectedItem) {\n \t\tswitch ($($selectedItem).data('option')) {\n \t\t\tcase \"clear\":\n\t \t\t\t$(dom_object).text('');\n\t\t \t \tVariableValueMenu.renderMenu(command, ref_object, dom_object, function_obj);\n \t\t\t\tbreak;\n \t\t\tdefault:\n \t\t\t\tcreateExpressionAround(command, ref_object, dom_object, function_obj);\n \t\t\t\tmenu_operations.find('.text').text('');\n \t\t}\n }\n });*/\n}\n\nfunction createExpressionAround (command, ref_object, dom_object, function_obj) {\n\t$('<span> ( </span>').insertBefore(dom_object);\n\t$('<span> ) </span>').insertAfter(dom_object);\n\n\tVariableValueMenu.renderMenu(command, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), dom_object, function_obj);\n}\n\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui comment created_element\"> <i class=\"ui icon small quote left\"></i> <span> '+LocalizedStrings.getUI('text_break')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui comment command_container\"> <i class=\"ui icon small quote left\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span>'+LocalizedStrings.getUI('text_break')+'</span> </div>');\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, break_dom) {\n\n\tbreak_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, break_dom)) {\n\t\t\tbreak_dom.fadeOut(400, function() {\n\t\t\t\tbreak_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui comment created_element\"> <i class=\"ui icon small quote left\"></i> <span class=\"span_comment_text\" \"> '+LocalizedStrings.getUI('text_comment')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui comment command_container\"> <i class=\"ui icon small quote left command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_value_menu_div\"></div> <div class=\"div_comment_text\">'+'</div> </div>');\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\trenderTextComment(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction renderTextComment (command, function_obj, el) {\n\tVariableValueMenu.renderMenu(command, command.comment_text, el.find('.var_value_menu_div'), function_obj, 20);\n}\n\nfunction addHandlers (command, function_obj, comment_dom) {\n\n\tcomment_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, comment_dom)) {\n\t\t\tcomment_dom.fadeOut(400, function() {\n\t\t\t\tcomment_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenuManagement from './variable_value_menu';\n\n\nexport function renderExpression (command, expression, function_obj, initial_el_to_render) {\n\n\texpression.dom_object = initial_el_to_render;\n\n\tif (expression.expression == null || expression.expression.length < 1) {\n\n\t\trenderStartMenu(command, expression, function_obj, initial_el_to_render);\n\n\t} else {\n\t\t\n\t\tvar main_div = $('<div class=\"expression_elements\"></div>');\n\n\t\tswitch (expression.expression.type) {\n\t\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\t\trenderLogicExpression(command, expression, expression.expression, function_obj, main_div, initial_el_to_render);\n\t\t\t\tbreak;\n\t\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\t\trenderArithmeticExpression(command, expression, expression.expression, function_obj, main_div);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tinitial_el_to_render.append(main_div);\t\n\t\tvar restartMenu = $('<div class=\"ui restart_expression\"><i class=\"ui icon undo\"></i></div>');\n\t\tinitial_el_to_render.append(restartMenu);\t\n\t\trestartMenu.on('click', function(e){\n\t \texpression.expression = null;\n\t \tinitial_el_to_render.empty();\n\t \trenderExpression(command, expression, function_obj, initial_el_to_render);\n\t \t});\n\t}\n}\n\nfunction renderArithmeticOperator (command, all_expression, expression_arithmetic, arithmetic_operator, function_obj, element_to_append) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"dropdown icon\"></i></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '>',\n\t value : Models.ARITHMETIC_COMPARISON.greater_than,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than)\n\t },\n\t {\n\t name : '<',\n\t value : Models.ARITHMETIC_COMPARISON.less_than,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than)\n\t },\n\t {\n\t name : '==',\n\t value : Models.ARITHMETIC_COMPARISON.equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.equals_to)\n\t },\n\t {\n\t name : '!=',\n\t value : Models.ARITHMETIC_COMPARISON.not_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.not_equals_to)\n\t },\n\t {\n\t name : '>=',\n\t value : Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to)\n\t },\n\t {\n\t name : '<=',\n\t value : Models.ARITHMETIC_COMPARISON.less_than_or_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than_or_equals_to)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \texpression_arithmetic.operator = value;\n\t }\n\t })\n\t;\n\n\telement_to_append.append(menu_operator);\n}\n\nfunction renderLogicOperator (command, all_expression, expression_logic, logic_operator, function_obj, element_to_append, initial_el_to_render) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"dropdown icon\"></i></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '==',\n\t value : Models.LOGIC_COMPARISON.equals_to,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.equals_to)\n\t },\n\t {\n\t name : '!=',\n\t value : Models.LOGIC_COMPARISON.not_equals_to,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.not_equals_to)\n\t },\n\t {\n\t name : '&&',\n\t value : Models.LOGIC_COMPARISON.and,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.and)\n\t },\n\t {\n\t name : '||',\n\t value : Models.LOGIC_COMPARISON.or,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.or)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \tif ($selectedItem) {\n\t\t \texpression_logic.operator = value;\n\t\t \tif (expression_logic.second_operand == null) {\n\t\t \t\texpression_logic.second_operand = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t \t\tinitial_el_to_render.empty();\n\t\t \t\trenderExpression(command, all_expression, function_obj, initial_el_to_render);\n\t\t \t}\n\t \t}\n\t }\n\t });\n\n\telement_to_append.append(menu_operator);\n\n}\n\n\nfunction renderLogicExpression (command, all_expression, expression_logic, function_obj, element_to_append, initial_el_to_render) {\n\n\tvar exp_el_par_1 = $(' <span class=\"span_command_spec\"> </span> ');\n\tvar exp_el_expr_el_1 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_operand = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_el_2 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_par_2 = $(' <span class=\"span_command_spec\"> </span> ');\n\n\tif (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else if (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_logic.first_operand, exp_el_expr_el_1, function_obj);\n\t}\n\n\telement_to_append.append(exp_el_par_1);\n\telement_to_append.append(exp_el_expr_el_1);\n\n\trenderLogicOperator(command, all_expression, expression_logic, expression_logic.operator, function_obj, exp_el_expr_operand, initial_el_to_render);\n\n\telement_to_append.append(exp_el_expr_operand);\n\n\tif (expression_logic.second_operand) {\n\t\tif (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\t\trenderLogicExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);\n\t\t} else if (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\t\trenderArithmeticExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);\n\t\t} else {\n\t\t\tVariableValueMenuManagement.renderMenu(command, expression_logic.second_operand, exp_el_expr_el_2, function_obj);\n\t\t}\n\n\t\telement_to_append.append(exp_el_expr_el_2);\n\t}\n\n\telement_to_append.append(exp_el_par_2);\n\n}\n\nfunction renderArithmeticExpression (command, all_expression, expression_arithmetic, function_obj, element_to_append) {\n\n\tvar exp_el_par_1 = $(' <span class=\"span_command_spec\"> </span> ');\n\tvar exp_el_expr_el_1 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_operand = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_el_2 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_par_2 = $(' <span class=\"span_command_spec\"> </span> ');\n\n\n\tif (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else if (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_arithmetic.first_operand, exp_el_expr_el_1, function_obj);\n\t}\n\n\tif (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);\n\t} else if (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_arithmetic.second_operand, exp_el_expr_el_2, function_obj);\n\t}\n\n\trenderArithmeticOperator(command, all_expression, expression_arithmetic, expression_arithmetic.operator, function_obj, exp_el_expr_operand);\n\n\telement_to_append.append(exp_el_par_1);\n\telement_to_append.append(exp_el_expr_el_1);\n\telement_to_append.append(exp_el_expr_operand);\n\telement_to_append.append(exp_el_expr_el_2);\n\telement_to_append.append(exp_el_par_2);\n}\n\nfunction renderStartMenu (command, expression, function_obj, initial_el_to_render) {\n\tvar start_menu = '';\n\tstart_menu += '<div class=\"ui dropdown menu_start_rendered\"><div class=\"text\"><i>'+LocalizedStrings.getUI('expression_menu_select')+'</i></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tstart_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_TYPES.exp_logic+'\">'+LocalizedStrings.getUI('text_logic_expression')+' (EL == EL and EL)</div>';\n\tstart_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\">'+LocalizedStrings.getUI('text_arithmetic_expression')+' (EA < EA)</div>';\n\tstart_menu += '</div></div>';\n\tstart_menu = $(start_menu);\n\n\tstart_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t\t\tswitch ($selectedItem.data('exp')) {\n\t\t\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\t\t\texpression.expression = \n\t\t\t\t\t\tnew Models.LogicExpression(false, \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\t\t\texpression.expression = \n\t\t\t\t\t\tnew Models.ArithmeticExpression(\n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tModels.ARITHMETIC_COMPARISON.less_than);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tinitial_el_to_render.html('');\n\n\t\t\trenderExpression(command, expression, function_obj, initial_el_to_render);\n \t},\n \tselectOnKeydown: false\n\t});\n\n\tinitial_el_to_render.append(' <span class=\"span_command_spec\"> </span> ');\n\t\n\tinitial_el_to_render.append(start_menu);\n\n\tinitial_el_to_render.append(' <span class=\"span_command_spec\"> </span> ');\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport * as SwitchManagement from './switch';\n\nimport * as RepeatNTimesManagement from './repeatNtimes';\n\nexport function renderMenu (command, dom_where_render, function_obj, dom_command) {\n\n\tvar menu_div = '<div class=\"ui dropdown menu_commands\" ><i class=\"icon code\"></i> <div class=\"menu\"> ';\n\n\tif ((command.type == Models.COMMAND_TYPES.repeatNtimes) \n\t\t|| (command.type == Models.COMMAND_TYPES.whiletrue) \n\t\t|| (command.type == Models.COMMAND_TYPES.dowhiletrue)) {\n\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.break+'\"><i class=\"download icon\"></i> '+LocalizedStrings.getUI('btn_break')+' </a>';\n\n\t} else {\n\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.break+'\"><i class=\"download icon\"></i> '+LocalizedStrings.getUI('btn_break')+' </a>';\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.switchcase+'\"><i class=\"download icon\"></i> '+LocalizedStrings.getUI('btn_case')+' </a>';\n\n\t}\n\n\tmenu_div += '</div></div>';\n\n\tmenu_div = $(menu_div);\n \t\n\tdom_where_render.append(menu_div);\n\n\taddHandlers(command, dom_where_render, function_obj, dom_command);\n}\n\nfunction addHandlers (command, dom_where_render, function_obj, dom_command) {\n\n\tdom_where_render.find('.menu_commands').dropdown({\n on: 'hover'\n });\n\t\n\tdom_where_render.find('.menu_commands a').on('click', function(evt){\n\n\t\tif ((command.type == Models.COMMAND_TYPES.repeatNtimes) \n\t\t\t|| (command.type == Models.COMMAND_TYPES.whiletrue) \n\t\t\t|| (command.type == Models.COMMAND_TYPES.dowhiletrue)) {\n\n\t\t\t\tif (command.commands_block == null || command.commands_block.length == 0) {\n\n\t\t\t command.commands_block = [];\n\n\t\t\t var new_cmd = CommandsManagement.genericCreateCommand($(this).data('command'));\n\t\t\t command.commands_block.push(new_cmd);\n\n\t\t\t CommandsManagement.renderCommand(new_cmd, dom_command.find('.block_commands'), 3, function_obj);\n\n\t\t\t } else {\n\t\t\t CommandsManagement.createFloatingCommand(function_obj, dom_command.find('.block_commands'), $(this).data('command'), evt);\n\t\t\t }\n\n\t\t} else {\n\n\t\t\tswitch ($(this).data('command')) {\n\t\t\t\tcase Models.COMMAND_TYPES.break:\n\t\t\t\t\tCommandsManagement.createFloatingCommand(function_obj, dom_command.find('.block_commands'), $(this).data('command'), evt);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.COMMAND_TYPES.switchcase:\n\t\t\t\t\taddCaseToSwitch(command, dom_where_render, function_obj, dom_command);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\n\t});\n}\n\nfunction addCaseToSwitch (command, dom_where_render, function_obj, dom_command) {\n\t\n\tif ((command.cases == null)) {\n\t\tcommand.cases = [];\n\t}\n\t\n\tvar sc = new Models.SwitchCase(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\n\tcommand.cases.push(sc);\n\n\tSwitchManagement.renderCase(sc, command, function_obj, dom_command.find('.all_cases_div'));\n\n}\n\n\n\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as ContextualizedMenu from './contextualized_menu';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui dowhiletrue created_element\"> <i class=\"ui icon small sync\"></i> <span> '+ LocalizedStrings.getUI('text_command_do') +' {<br>} ' + LocalizedStrings.getUI('text_code_while') +'(x < 10) </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui dowhiletrue command_container\"> <i class=\"ui icon small random command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"ui context_menu\"></div> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_command_do') + ' </span>';\n\tret += '<div class=\"ui block_commands\" data-subblock=\"\" data-idcommand=\"\">';\n\tret += '</div>';\n\tret += ' <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_code_while') + ' </span> <span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"span_command_spec\"> ) </span>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\n\nfunction addHandlers (command, function_obj, dowhiletrue_dom) {\n\n\tdowhiletrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, dowhiletrue_dom)) {\n\t\t\tdowhiletrue_dom.fadeOut(400, function() {\n\t\t\t\tdowhiletrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui functioncall created_element\"> <i class=\"hand point right icon\"></i> <span> funcao() </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui functioncall command_container\"> <i class=\"hand point right icon command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_value_menu_div\"></div> </div>');\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.function_called, el.find('.var_value_menu_div'), function_obj);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, functioncall_dom) {\n\n\tfunctioncall_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, functioncall_dom)) {\n\t\t\tfunctioncall_dom.fadeOut(400, function() {\n\t\t\t\tfunctioncall_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui iftrue created_element\"> <i class=\"ui icon small random\"></i> <span> if (x < 1) { } </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui iftrue command_container\"><div class=\"ui data_block_if\" data-if=\"true\"> <i class=\"ui icon small random command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i>';\n\tret += '<span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_if') + '</span>';\n\tret += ' <span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"span_command_spec\"> ) </span>';\n\tret += '<span> </span> ';\n\tret += '<div class=\"ui block_commands commands_if conditional_comands_block\" data-if=\"true\">';\n \tret += '</div></div>';\n\tret += '<div class=\"ui data_block_else\" data-else=\"true\"> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_else') + ' </span>';\n\tret += '<div class=\"ui block_commands commands_else conditional_comands_block\" data-else=\"true\">';\n\tret += '</div>';\n\tret += '<span></span></div>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\tel.find('.data_block_if').data('command', command);\n\tel.find('.data_block_else').data('command', command);\n\tel.find('.commands_if').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.commands_if')[0]), 3, function_obj);\n\t\t}\n\t}\n\tif (command.commands_else) {\n\t\tfor (var j = 0; j < command.commands_else.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_else[j], $(el.find('.commands_else')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\n\nfunction addHandlers (command, function_obj, iftrue_dom) {\n\n\tiftrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, iftrue_dom)) {\n\t\t\tiftrue_dom.fadeOut(400, function() {\n\t\t\t\tiftrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui reader created_element\"> <i class=\"ui icon small download\"></i> <span> '+LocalizedStrings.getUI('text_command_read')+' var </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = '<div class=\"ui reader command_container\"> <i class=\"ui icon small download command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span class=\"span_command_spec\">'+LocalizedStrings.getUI('text_command_read')+' ( </span> <div class=\"var_value_menu_div\"></div> <span class=\"close_parentheses span_command_spec\">)</span> </div>';\n\t\n\tel = $(el);\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.variable_value_menu, el.find('.var_value_menu_div'), function_obj);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, reader_dom) {\n\treader_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, reader_dom)) {\n\t\t\treader_dom.fadeOut(400, function() {\n\t\t\t\treader_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as ContextualizedMenu from './contextualized_menu';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui repeatNtimes created_element\"> <i class=\"ui icon small sync\"></i> <span> para (x = 0; x < 10; x ++) { } </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '<div class=\"ui repeatNtimes command_container\"> <i class=\"ui icon small random command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"ui context_menu\"></div> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_for') + ' ( </span> <div class=\"ui attribution_expression\"><div class=\"ui variable_attribution\"></div> <span class=\"text_receives span_command_spec\"></span> <div class=\"ui var_value_expression div_expression_st\"></div> </div> <span class=\"span_command_spec separator_character\">;</span> <div class=\"conditional_expression\"></div> <span class=\"span_command_spec separator_character\">;</span> <div class=\"ui incrementation_field\"><div class=\"ui incrementation_variable\"></div> <span class=\"text_inc_receives span_command_spec\"></span> <div class=\"ui first_operand\"></div><div class=\"ui operator\"></div><div class=\"ui second_operand\"></div></div> <span class=\"span_command_spec\"> ) </span>';\n\tret += '<div class=\"ui block_commands\">';\n\tret += '</div>';\n\tret += '<span> </span>';\n\tret += '</div>';\n\t\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tVariableValueMenu.renderMenu(command, command.var_attribution, el.find('.variable_attribution'), function_obj);\n\n\tConditionalExpressionManagement.renderExpression(command, command.expression2, function_obj, el.find('.conditional_expression'));\n\n\tVariableValueMenu.renderMenu(command, command.var_incrementation, el.find('.incrementation_variable'), function_obj);\t\n\n\tif (command.expression1) {\n\t\tel.find('.text_receives').text(LocalizedStrings.getUI('text_receives'));\n\t\tVariableValueMenu.renderMenu(command, command.expression1, el.find('.var_value_expression'), function_obj);\n\t}\n\n\tif (command.expression3) {\n\t\tel.find('.text_inc_receives').text(LocalizedStrings.getUI('text_receives'));\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[0], el.find('.first_operand'), function_obj);\n\t\trenderOperator(command, function_obj, el.find('.operator'), command.expression3, 1);\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[2], el.find('.second_operand'), function_obj);\n\t}\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\nexport function manageExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element) {\n\n\tif (dom_object.hasClass('variable_attribution')) {\n\t\tif (!command.expression3) {\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t\t[command.var_attribution,\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"1\", null, null, true)]);\n\n\t\t\tcommand.expression3 = exp;\n\t\t\tcommand.var_incrementation = command.var_attribution;\n\n\t\t\tvar cond_exp = \n\t\t\t\t\t\tnew Models.ArithmeticExpression(\n\t\t\t\t\t\t\tcommand.var_attribution, \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tModels.ARITHMETIC_COMPARISON.less_than);\n\n\t\t\tcommand.expression2.expression = cond_exp;\n\t\t}\n\n\t\tdom_object.parent().find('.text_receives').text(LocalizedStrings.getUI('text_receives'));\n\n\t\tcommand.expression1 = new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"0\", null, null, true);\n\n\t\tdom_object.parent().find('.var_value_expression').empty();\n\t\t\n\t\tVariableValueMenu.renderMenu(command, command.expression1, dom_object.parent().find('.var_value_expression'), function_obj);\n\n\t\trenderAlgorithm();\n\t}\n\n\tif (dom_object.hasClass('incrementation_variable')) {\n\t\tdom_object.parent().find('.text_inc_receives').text(LocalizedStrings.getUI('text_receives'));\n\t\t\n\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t\t[new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\tcommand.expression3 = exp;\n\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[0], dom_object.parent().find('.first_operand'), function_obj);\n\n\t\trenderOperator(command, function_obj, dom_object.parent().find('.operator'), command.expression3, 1);\n\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[2], dom_object.parent().find('.second_operand'), function_obj);\t\t\n\n\t}\n\n}\n\nexport function manageClearExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element) {\n\tif (dom_object.hasClass('variable_attribution')) {\n\t\t$(dom_object).parent().find('.text_receives').text('');\n\t\tcommand.expression1 = null;\n\t\t$(dom_object).parent().find('.var_value_expression').empty();\n\t}\n\n\tif (dom_object.hasClass('incrementation_variable')) {\n\t\t$(dom_object).parent().find('.text_inc_receives').text('');\n\t\tcommand.expression3 = null;\n\t\t$(dom_object).parent().find('.first_operand').empty();\n\t\t$(dom_object).parent().find('.operator').empty();\n\t\t$(dom_object).parent().find('.second_operand').empty();\n\t}\n}\n\nfunction addHandlers (command, function_obj, repeatNtimes_dom) {\n\n\trepeatNtimes_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, repeatNtimes_dom)) {\n\t\t\trepeatNtimes_dom.fadeOut(400, function() {\n\t\t\t\trepeatNtimes_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction renderOperator (command, function_obj, temp_op, expression_element, index_op) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '+',\n\t value : Models.ARITHMETIC_TYPES.plus,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.plus)\n\t },\n\t {\n\t name : '-',\n\t value : Models.ARITHMETIC_TYPES.minus,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.minus)\n\t },\n\t {\n\t name : '*',\n\t value : Models.ARITHMETIC_TYPES.multiplication,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.multiplication)\n\t },\n\t {\n\t name : '/',\n\t value : Models.ARITHMETIC_TYPES.division,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.division)\n\t },\n\t {\n\t name : '%',\n\t value : Models.ARITHMETIC_TYPES.module,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.module)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \texpression_element.itens[index_op] = value;\n\t }\n\t });\n\ttemp_op.append(menu_operator);\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui return created_element\"> <i class=\"ui icon small reply\"></i> <span> '+LocalizedStrings.getUI('text_return')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui return command_container\"> <i class=\"ui icon small reply command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span class=\"span_command_spec\"> '+LocalizedStrings.getUI('text_return')+' </span> <div class=\"var_value_menu_div\"></div></div>');\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tif (function_obj.return_type != Types.VOID) {\n\t\tVariableValueMenu.renderMenu(command, command.variable_value_menu, el.find('.var_value_menu_div'), function_obj);\n\t} else {\n\t\tel.find('.var_value_menu_div').remove();\n\t\tcommand.variable_value_menu = null;\n\t}\n\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, return_dom) {\n\n\treturn_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, return_dom)) {\n\t\t\treturn_dom.fadeOut(400, function() {\n\t\t\t\treturn_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as CommandsManagement from '../commands';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as ContextualizedMenu from './contextualized_menu';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui switch created_element\"> <i class=\"ui icon small random\"></i> <span> '+LocalizedStrings.getUI('text_code_switch')+' ( x ) { <br> '+LocalizedStrings.getUI('text_code_case')+' 1: <br> '+LocalizedStrings.getUI('text_code_case')+' 2: <br> } </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui switch command_container\"> <i class=\"ui icon small random command_drag\" ></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"ui context_menu\"></div> <span> '+LocalizedStrings.getUI('text_code_switch')+' ( <div class=\"ui variable_to_switch\"></div> ) <div class=\"ui all_cases_div\"></div></span>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tVariableValueMenu.renderMenu(command, command.variable, el.find('.variable_to_switch'), function_obj);\n\n\tif (command.cases) {\n\t\tfor (var i = 0; i < command.cases.length; i++) {\n\t\t\trenderCase(command.cases[i], command, function_obj, el.find('.all_cases_div'));\n\t\t}\n\t}\n\n\treturn el;\n}\n\nexport function renderCase (switchcase, command, function_obj, el) {\n\n\tvar casediv = $('<div class=\"ui case_div\"><i class=\"ui icon times red button_remove_command\"></i><span>'+LocalizedStrings.getUI('text_code_case')+'</span> <div class=\"ui variable_case\"></div>: <div class=\"case_commands_block\"></div></div>');\n\n\tVariableValueMenu.renderMenu(command, switchcase.variable_value_menu, casediv.find('.variable_case'), function_obj);\n\n\tcasediv.data('switchcase', switchcase);\n\tcasediv.find('.case_commands_block').data('switchcase', switchcase);\n\n\tel.append(casediv);\n\n\tif (switchcase.commands_block) {\n\t\tfor (var j = 0; j < switchcase.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(switchcase.commands_block[j], $(casediv.find('.case_commands_block')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\tcasediv.find('.button_remove_command').on('click', function() {\n\t\tfor (var i = 0; i < command.cases.length; i++) {\n\t\t\tif (switchcase == command.cases[i]) {\n\t\t\t\tdelete command.cases[i];\n\t\t\t\tcommand.cases.splice(i, 1);\n\t\t\t\tcasediv.remove();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\n}\n\nfunction addHandlers (command, function_obj, switch_dom) {\n\n\tswitch_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, switch_dom)) {\n\t\t\tswitch_dom.fadeOut(400, function() {\n\t\t\t\tswitch_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as AttribuitionsManagement from './attribution';\nimport * as WritersManagement from './writer';\nimport * as RepeatNTimesManagement from './repeatNtimes';\n\nexport const VAR_OR_VALUE_TYPES = Object.freeze({only_variable: 1, only_value: 2, only_function: 3, variable_and_function: 4, variable_and_value_opt: 5,\n\tvalue_and_function: 6, all: 7});\n\nexport function renderMenu (command, ref_object, dom_object, function_obj, size_field = 2, expression_element) {\n\t// Verificar se o objeto atual trata-se de uma chamada de função e conferir se possui a quantidade correta de parâmetros\n\t// Caso não possua, tem que adicionar as variáveis que servirão de parâmetros:\n\tif (ref_object.function_called) {\n\t\tif (ref_object.function_called.parameters_list) {\n\n\t\t\twhile (ref_object.function_called.parameters_list.length != ref_object.parameters_list.length) {\n\t\t\t\tif (ref_object.parameters_list.length > ref_object.function_called.parameters_list.length) {\n\t\t\t\t\tref_object.parameters_list.pop();\n\t\t\t\t} else {\n\t\t\t\t\tref_object.parameters_list.push(new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tvar menu_var_or_value = '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\n\tif (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_variable) {\n\n\t\tmenu_var_or_value = '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu menu_only_vars\">';\n\t\tmenu_var_or_value += '</div>';\n\t}\n\n\tif ((ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_value_opt) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all)) {\n\t\t\n\t\tmenu_var_or_value += '<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('variable');\n\t\tmenu_var_or_value += '<div class=\"menu menu_only_vars\">';\n\t\tmenu_var_or_value += '</div></div>';\n\t}\n\n\tif (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_value) {\n\t\tmenu_var_or_value = '<input type=\"text\" class=\"width-dynamic\" size=\"'+size_field+'\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />';\n\t}\n\n\tif ((ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_value_opt) \n\t\t|| (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all)) {\n\n\t\tmenu_var_or_value += '<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_value+'\">'+LocalizedStrings.getUI('text_value')+'</div>';\n\n\t}\n\n\tif (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_function) {\n\n\t\tmenu_var_or_value = '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu menu_only_functions\">';\n\t\tmenu_var_or_value += '</div>';\n\t} \n\n\tif ((ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function) \n\t\t|| (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all)) {\n\t\t\n\t\tmenu_var_or_value += '<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_function+'\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('btn_function');\n\t\tmenu_var_or_value += '<div class=\"menu menu_only_functions\">';\n\t\tmenu_var_or_value += '</div></div>';\n\n\t\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tmenu_var_or_value += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tmenu_var_or_value += '<div class=\"menu\">';\n\t\t\tmenu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tmenu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tmenu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tmenu_var_or_value += '</div></div>';\n\t\t}\n\t}\n\n menu_var_or_value += '</div></div>';\n\n menu_var_or_value = $(menu_var_or_value);\n\n dom_object.append(menu_var_or_value);\n \n ref_object.dom_object = menu_var_or_value;\n\n addHandlers(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element);\n\n addVariablesToMenu(function_obj, menu_var_or_value, ref_object, expression_element);\n\n addFunctionsToMenu(function_obj, menu_var_or_value, ref_object, expression_element);\n\n\taddIVProgFunctionsToMenu(function_obj, menu_var_or_value, ref_object, expression_element);\n\n if (ref_object.content || ref_object.function_called) {\n \tif (ref_object.content) {\n \t\t// Verificar se a variável ainda existe:\n \t\tvar variable_fun = isVarInProgram(ref_object.content, function_obj);\n \t\tif (variable_fun) {\n \t\t\tref_object.content = variable_fun;\n \t\t\trenderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);\n\t \t} else {\n\t \t\tif (ref_object.content && ref_object.content.type) {\n\t \t\t\tref_object.content = null;\n\t \t\t\tappendSelectText(ref_object, menu_var_or_value);\n\t \t\t} else {\n\t \t\t\trenderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);\n\t \t\t}\n\t \t}\n \t} else if (ref_object.function_called) {\n \t\t// Verificar se a função ainda existe:\n \t\tvar ret_function = isFunctionInProgram(ref_object.function_called);\n \t\tif (ret_function) {\n \t\t\tref_object.function_called = ret_function;\n \t\t\trenderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);\n \t\t} else {\n \t\t\tref_object.content = null;\n\t\t \tref_object.row = null;\n\t\t \tref_object.column = null;\n\t\t \tdelete ref_object.function_called;\n\t\t \tdelete ref_object.parameters_list;\n \t\t\tappendSelectText(ref_object, menu_var_or_value);\n \t\t}\n \t}\n\n } else {\n \tappendSelectText(ref_object, menu_var_or_value);\n }\n\n}\n\nfunction appendSelectText (ref_object, menu_var_or_value) {\n\tswitch(ref_object.variable_and_value) {\n\t\tcase VAR_OR_VALUE_TYPES.only_variable:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_var')+'</i>');\n\t\t\tbreak;\n\t\tcase VAR_OR_VALUE_TYPES.all:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_all')+'</i>');\n\t\t\tbreak;\n\t\tcase VAR_OR_VALUE_TYPES.variable_and_function:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_all')+'</i>');\n\t\t\tbreak;\n\t\tcase VAR_OR_VALUE_TYPES.only_function:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_function')+'</i>');\n\t\t\tbreak;\n\t}\n}\n\nfunction isFunctionInProgram (function_called_obj) {\n\tif (function_called_obj.name) {\n\t\tif (window.program_obj.functions) {\n\t\t\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\t\t\tif (window.program_obj.functions[i] == function_called_obj) {\n\t\t\t\t\treturn window.program_obj.functions[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\t\t\tif (window.program_obj.functions[i].name == function_called_obj.name) {\n\t\t\t\t\treturn window.program_obj.functions[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (function_called_obj.identifier) {\n\t\tfor (var i = 0; i < window.system_functions.length; i++) {\n\t\t\tif (window.system_functions[i].identifier == function_called_obj.identifier) {\n\t\t\t\treturn window.system_functions[i];\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\nfunction isVarInProgram (var_obj, function_obj) {\n\t// Verify in locals:\n\tif (function_obj.variables_list) {\n\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\tif (function_obj.variables_list[i] == var_obj) {\n\t\t\t\treturn function_obj.variables_list[i];\n\t\t\t}\n\t\t}\n\t}\n\t// Verify in parameters:\n\tif (function_obj.parameters_list) {\n\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\tif (function_obj.parameters_list[i] == var_obj) {\n\t\t\t\treturn function_obj.parameters_list[i];\n\t\t\t}\n\t\t}\n\t}\n\t// Verify in globals:\n\tif (window.program_obj.globals) {\n\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\tif (window.program_obj.globals[i] == var_obj) {\n\t\t\t\treturn window.program_obj.globals[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t// If not found, verify if the reference was lost\n\tif (var_obj) {\n\t\tif (function_obj.variables_list) {\n\t\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\t\tif (function_obj.variables_list[i].name == var_obj.name) {\n\t\t\t\t\treturn function_obj.variables_list[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (function_obj.parameters_list) {\n\t\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\t\tif (function_obj.parameters_list[i].name == var_obj.name) {\n\t\t\t\t\treturn function_obj.parameters_list[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (window.program_obj.globals) {\n\t\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\t\tif (window.program_obj.globals[i].name == var_obj.name) {\n\t\t\t\t\treturn window.program_obj.globals[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction renderPreviousContent (function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element) {\n\n\t\n\tif (ref_object.function_called) {\n\n\t\tmenu_var_or_value.remove();\n\t\tvariableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);\n\n\t} else if (ref_object.content.type) { \n\n\t\tmenu_var_or_value.remove();\n\t\tvariableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);\n\n\t} else {\n\n\t\tmenu_var_or_value.remove();\n\t\tvariableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);\n\n\t}\n}\n\nfunction variableValueMenuCode (command, variable_obj, dom_object, function_obj, menu_var_or_value, expression_element) {\n\t\n\tif (variable_obj.content || variable_obj.function_called) {\n \t// Verificar se a variável ainda existe:\n \tvar var_fun = isVarInProgram(variable_obj.content, function_obj);\n\n \tif (var_fun) {\n\t \tvariable_obj.content = var_fun;\n \t} else {\n \t\tif (variable_obj.content && variable_obj.content.type) {\n \t\t\tvariable_obj.content = null;\n \t\t\tappendSelectText(variable_obj, menu_var_or_value);\n \t\t}\n \t}\n } else {\n \tappendSelectText(variable_obj, menu_var_or_value);\n }\n\n\tif (variable_obj.content == null && variable_obj.function_called == null) {\n\t\trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\treturn;\n\t}\n\n\tvar ret = '';\n\tif (variable_obj.function_called) {\n\n\t\tif (variable_obj.function_called.parameters_list == null || variable_obj.function_called.length == 0) {\n\n\t\t\tmenu_var_or_value.find('.text').text(' ');\n\t\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\t\tvar parameters_menu;\n\t\t\t\n\t\t\tif (variable_obj.function_called.name) {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+variable_obj.function_called.name+' <span> ( </span>';\n\t\t\t} else {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+LocalizedStrings.getUI(variable_obj.function_called.category)+'.'+LocalizedStrings.getUI(variable_obj.function_called.identifier)+'</i> <span> ( </span>';\n\t\t\t}\n\n\t\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\t\tparameters_menu = $(parameters_menu);\n\n\t\t\tdom_object.append(parameters_menu);\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tcontext_menu.insertAfter( dom_object.find('.parameters_function_called') );\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t console.log('S1');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP1');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t\t \tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\t\t} else {\n\n\t\t\tmenu_var_or_value.find('.text').text(' ');\n\t\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\t\tvar parameters_menu;\n\n\t\t\tif (variable_obj.function_called.name) {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+variable_obj.function_called.name+' <span> ( </span>';\n\t\t\t} else {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+LocalizedStrings.getUI(variable_obj.function_called.category)+'.'+LocalizedStrings.getUI(variable_obj.function_called.identifier)+'</i> <span> ( </span>';\n\t\t\t}\n\n\t\t\tfor (var j = 0; j < variable_obj.function_called.parameters_list.length; j++) {\n\t\t\t\tparameters_menu += '<div class=\"render_style_param parameter_'+j+'\"></div>';\n\t\t\t\tif ((j + 1) != variable_obj.function_called.parameters_list.length) {\n\t\t\t\t\tparameters_menu += ' , ';\n\t\t\t\t}\n\t\t\t}\n\t\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\t\tparameters_menu = $(parameters_menu);\n\n\t\t\tdom_object.append(parameters_menu);\n\n\t\t\tfor (var j = 0; j < variable_obj.function_called.parameters_list.length; j++) {\n\t\t\t\trenderMenu(command, variable_obj.parameters_list[j], parameters_menu.find('.parameter_'+j), function_obj, 2, expression_element);\n\t\t\t}\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tcontext_menu.insertAfter( parameters_menu );\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S2');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP2');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t\t \tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\t\t}\n\n\n\t} else if (variable_obj.content.type) {\n\n\t\tvar variable_render = \"\";\n\n\t\tif (variable_obj.content.dimensions == 1 && variable_obj.dimensions != 1) {\n\n\t\t\tvariable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content.name+'</span>';\n\n\t\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n\t\t\t\n\t\t\tvariable_render += '</div>';\n\n\t\t\tvariable_render = $(variable_render);\n\n\t\t\tdom_object.append(variable_render);\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tvariable_render.append(context_menu);\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S3');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP3');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t \t\tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\n\t\t\tif (!variable_obj.column) {\n\t\t\t\tvariable_obj.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\n\t\t\tvariableValueMenuCode(command, variable_obj.column, $(variable_render.find('.column_container')), function_obj, menu_var_or_value, expression_element);\n\n\t\t} else if (variable_obj.content.dimensions == 2 && variable_obj.dimensions != 2) {\n\n\t\t\tvariable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content.name+'</span>';\n\n\t\t\tvariable_render += ' <span>[ </span> <div class=\"row_container\"></div> <span> ]</span>';\n\t\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ] </span>';\n\t\t\t\n\t\t\tvariable_render += '</div>';\n\n\t\t\tvariable_render = $(variable_render);\n\n\t\t\tdom_object.append(variable_render);\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tvariable_render.append(context_menu);\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S4');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP4');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t \t\tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\n\t\t\tif (!variable_obj.column) {\n\t\t\t\tvariable_obj.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\t\t\tif (!variable_obj.row) {\n\t\t\t\tvariable_obj.row = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\n\t\t\tvariableValueMenuCode(command, variable_obj.row, $(variable_render.find('.row_container')), function_obj, menu_var_or_value, expression_element);\n\t\t\tvariableValueMenuCode(command, variable_obj.column, $(variable_render.find('.column_container')), function_obj, menu_var_or_value, expression_element);\n\n\t\t} else {\n\n\t\t\tvariable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content.name+'</span>';\n\n\t\t\tvariable_render += '</div>';\n\n\t\t\tvariable_render = $(variable_render);\n\n\t\t\tdom_object.append(variable_render);\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\tif (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {\n\t\t\t\tconsole.log('dom_object6');\n\t\t\t\tconsole.log(dom_object);\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tvariable_render.append(context_menu);\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S5');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP5');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\n\t\t\t \tdelete variable_obj.function_called;\n\t\t \t\tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\n\t\t}\n\n\t} else {\n\n\t\tvar variable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content+'</span>';\n\t\tvariable_render += '</div>';\n\n\t\tvariable_render = $(variable_render);\n\n\t\tdom_object.append(variable_render);\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tcontext_menu += '</div></div>';\n\t\t}\n\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\tif (variable_obj.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n\t\t\tcontext_menu.insertAfter( variable_render );\n\t\t}\n\n\t\tcontext_menu.dropdown({\n\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\tconsole.log('S6');\n\t\t if ($selectedItem.data('clear')) {\n\t\t \tconsole.log('PP6');\n\t\t \tdom_object.text('');\n\n \t\t\t\tvariable_obj.content = null;\n\t\t\t variable_obj.row = null;\n\t\t\t variable_obj.column = null;\n\n\t\t \tdelete variable_obj.function_called;\n\t\t \tdelete variable_obj.parameters_list;\n\n\t\t \tdom_object.find('.value_rendered').remove();\n\t\t\t\tdom_object.find('.context_menu_clear').remove();\n\t\t\t\tdom_object.find('.width-dynamic-minus').remove();\n\n\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t\t});\n\n\t\tvariable_render.on('click', function(e) {\n\t\t\tvariable_render.remove();\n\t\t\tvariable_render.empty();\n\t\t\tvariable_render.remove();\n\t\t\tdom_object.empty();\n\t\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\t\n\t\t\topenInputToValue(command, variable_obj, dom_object, menu_var_or_value, function_obj, expression_element);\n\t\t});\n\t}\n}\n\nfunction addIVProgFunctionsToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {\n\tvar sub_menu = menu_var_or_value.find('.menu_only_functions');\n\tsub_menu.append('<div class=\"divider\"></div><div class=\"header\">'+LocalizedStrings.getUI('text_header_ivprog_functions')+'</div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_math')+'<div class=\"menu menu_math_functions\"></div></div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_text')+'<div class=\"menu menu_text_functions\"></div></div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_arrangement')+'<div class=\"menu menu_arrangement_functions\"></div></div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_conversion')+'<div class=\"menu menu_conversion_functions\"></div></div>');\n\n\t// Insert Math functions:\n\tfor (var i = 0; i < window.system_functions.length; i++) {\n\t\tvar t = $('<div class=\"item\"></div>');\n\t\tt.data('function_reference', window.system_functions[i]);\n\t\tt.data('option', VAR_OR_VALUE_TYPES.only_function);\n\t\tt.text(LocalizedStrings.getUI(window.system_functions[i].identifier));\n\t\t\n\t\tswitch(window.system_functions[i].category) {\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.math:\n\t\t\t\tsub_menu.find('.menu_math_functions').append(t);\n\t\t\t\tbreak;\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.text:\n\t\t\t\tsub_menu.find('.menu_text_functions').append(t);\n\t\t\t\tbreak;\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement:\n\t\t\t\tsub_menu.find('.menu_arrangement_functions').append(t);\n\t\t\t\tbreak;\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion:\n\t\t\t\tsub_menu.find('.menu_conversion_functions').append(t);\n\t\t\t\tbreak;\n\t\t}\t\n\t}\n}\n\nfunction addFunctionsToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {\n\tvar sub_menu = menu_var_or_value.find('.menu_only_functions');\n\tsub_menu.text('');\n\n\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_function+'\">' + window.program_obj.functions[i].name + ' </div>');\n\t\ttemp.data('function_reference', window.program_obj.functions[i]);\n\t\tsub_menu.append(temp);\n\t}\n}\n\nfunction addVariablesToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {\n\n\tvar sub_menu = menu_var_or_value.find('.menu_only_vars');\n\tsub_menu.text('');\n\tvar is_there = false;\n\n\tif (window.program_obj.globals) {\n\n\t\tif (ref_object.include_constant) {\n\t\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + window.program_obj.globals[i].name + ' </div>');\n\t\t\t\ttemp.data('variable_reference', window.program_obj.globals[i]);\n\t\t\t\tsub_menu.append(temp);\n\t\t\t\tis_there = true;\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\t\tif (!window.program_obj.globals[i].is_constant) {\n\t\t\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + window.program_obj.globals[i].name + ' </div>');\n\t\t\t\t\ttemp.data('variable_reference', window.program_obj.globals[i]);\n\t\t\t\t\tsub_menu.append(temp);\n\t\t\t\t\tis_there = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (function_obj.parameters_list) {\n\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + function_obj.parameters_list[i].name + ' </div>');\n\t\t\ttemp.data('variable_reference', function_obj.parameters_list[i]);\n\t\t\tsub_menu.append(temp);\n\t\t\tis_there = true;\n\t\t}\n\t}\n\n\tif (function_obj.variables_list) {\n\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + function_obj.variables_list[i].name + ' </div>');\n\t\t\ttemp.data('variable_reference', function_obj.variables_list[i]);\n\t\t\tsub_menu.append(temp);\n\t\t\tis_there = true;\n\t\t}\n\t}\n\tif (!is_there) {\n\t\tsub_menu.append($('<div class=\"header\">'+LocalizedStrings.getUI('text_none_variable')+'</div>'));\n\t\tsub_menu.append($('<div class=\"item disabled\">'+LocalizedStrings.getUI('text_none_variable_instruction')+'</div>'));\n\t}\n\n}\n\nfunction addHandlers (command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element) {\n\n\tif (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n\t\tmenu_var_or_value.dropdown({\n\t\t onChange: function(value, text, $selectedItem) {\n\t\t \tconsole.log('S7');\n\t\t \tdom_object.find('.var_name').remove();\n\t\t switch ($selectedItem.data('option')) {\n\t\t \tcase VAR_OR_VALUE_TYPES.only_function:\n\t\t \t\topenInputToFunction(command, ref_object, dom_object, menu_var_or_value, function_obj, $($selectedItem).data('function_reference'), expression_element);\n\t\t \t\tbreak;\n\n\t\t \tcase VAR_OR_VALUE_TYPES.only_value:\n\t\t \t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element);\n\t\t \t\tbreak;\n\n\t\t \tcase VAR_OR_VALUE_TYPES.only_variable:\n\t\t \t\topenInputToVariable(command, ref_object, dom_object, menu_var_or_value, function_obj, $($selectedItem).data('variable_reference'), expression_element);\n\t\t \t\tbreak;\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\n\t\t if (command.type == Models.COMMAND_TYPES.repeatNtimes) {\n\t\t \tRepeatNTimesManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t });\n\t}\n\n\tdom_object.find('.width-dynamic').on('input', function() {\n\t var inputWidth = $(this).textWidth()+10;\n\t $(this).focus();\n\n\t var tmpStr = $(this).val();\n\t\t$(this).val('');\n\t\t$(this).val(tmpStr);\n\n\t $(this).css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\n\tif (command.type == Models.COMMAND_TYPES.comment) {\n\t\tdom_object.parent().on('click', function(e) {\n\t\t\tdom_object.find('.value_rendered').remove();\n\t\t\tdom_object.find('.value_rendered').empty();\n\t\t\tdom_object.find('.value_rendered').remove();\n\t\t\tdom_object.empty();\n\t\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\t\n\t\t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)\n\t\t});\n\t}\n\t\n}\n\nfunction openInputToFunction (command, ref_object, dom_object, menu_var_or_value, function_obj, function_selected, expression_element) {\n\t\n\tref_object.function_called = function_selected;\n\tref_object.parameters_list = [];\n\n\n\tif (function_selected.parameters_list != null && function_selected.parameters_list.length > 0) {\n\n\t\tmenu_var_or_value.find('.text').text(' ');\n\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\tvar parameters_menu;\n\t\tif (function_selected.name) {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+function_selected.name+' <span> ( </span>';\n\t\t} else {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+LocalizedStrings.getUI(function_selected.category)+'.'+LocalizedStrings.getUI(function_selected.identifier)+'</i> <span> ( </span>';\n\t\t}\n\t\tfor (var j = 0; j < function_selected.parameters_list.length; j++) {\n\t\t\tparameters_menu += '<div class=\"render_style_param parameter_'+j+'\"></div>';\n\t\t\tif ((j + 1) != function_selected.parameters_list.length) {\n\t\t\t\tparameters_menu += ' , ';\n\t\t\t}\n\t\t}\n\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\tparameters_menu = $(parameters_menu);\n\n\t\tdom_object.append(parameters_menu);\n\n\t\tfor (var j = 0; j < function_selected.parameters_list.length; j++) {\n\t\t\tvar temp;\n\t\t\tif (function_selected.parameters_list[j].dimensions > 0) {\n\t\t\t\ttemp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, function_selected.parameters_list[j].dimensions);\n\t\t\t} else {\n\t\t\t\ttemp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\t\t\tref_object.parameters_list.push(temp);\n\t\t\trenderMenu(command, temp, parameters_menu.find('.parameter_'+j), function_obj, 2, expression_element);\n\t\t}\n\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tcontext_menu += '</div></div>';\n\t\t}\n\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\tcontext_menu.insertAfter( dom_object.find('.parameters_function_called') );\n\n\t\tcontext_menu.dropdown({\n\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\tconsole.log('S8');\n\t\t if ($selectedItem.data('clear')) {\n\t\t \tconsole.log('PP7');\n\t\t \tdom_object.text('');\n\n\t\t \tref_object.content = null;\n\t\t \tref_object.row = null;\n\t\t \tref_object.column = null;\n\t\t \tdelete ref_object.function_called;\n\t\t \tdelete ref_object.parameters_list;\n\n\t\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t\t});\n\n\t} else {\n\t\tmenu_var_or_value.find('.text').text(' ');\n\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\tvar parameters_menu;\n\n\t\tif (function_selected.name) {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+function_selected.name+' <span> ( </span>';\n\t\t} else {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+LocalizedStrings.getUI(function_selected.category)+'.'+LocalizedStrings.getUI(function_selected.identifier)+'</i> <span> ( </span>';\n\t\t}\n\t\t\n\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\tparameters_menu = $(parameters_menu);\n\n\t\tdom_object.append(parameters_menu);\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tcontext_menu += '</div></div>';\n\t\t}\n\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\tcontext_menu.insertAfter( dom_object.find('.parameters_function_called') );\n\n\t\tcontext_menu.dropdown({\n\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\tconsole.log('S9');\n\t\t if ($selectedItem.data('clear')) {\n\t\t \tconsole.log('PP8');\n\t\t \tdom_object.text('');\n\n\t\t \tref_object.content = null;\n\t\t \tref_object.row = null;\n\t\t \tref_object.column = null;\n\t\t \tdelete ref_object.function_called;\n\t\t \tdelete ref_object.parameters_list;\n\n\t\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t\t});\n\t}\n\n\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tAttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);\n\t}\n}\n\nfunction openInputToVariable (command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected, expression_element) {\n\t\n\tref_object.content = variable_selected;\n\n\tmenu_var_or_value.find('.text').text(' ');\n\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\tvar variable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_selected.name+'</span>';\n\n\tif (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {\n\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n\t}\n\tif (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {\n\t\tvariable_render += ' <span>[ </span> <div class=\"row_container\"></div> <span> ]</span> ';\n\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n\t}\n\n\n\tvariable_render += '</div>';\n\n\tvariable_render = $(variable_render);\n\n\tdom_object.append(variable_render);\n\n\tif (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {\n\t\tref_object.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\trenderMenu(command, ref_object.column, variable_render.find('.column_container'), function_obj, 2, expression_element);\n\t}\n\tif (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {\n\t\tref_object.row = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\trenderMenu(command, ref_object.row, variable_render.find('.row_container'), function_obj, 2, expression_element);\n\n\t\tref_object.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\trenderMenu(command, ref_object.column, variable_render.find('.column_container'), function_obj, 2, expression_element);\n\t}\n\n\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\tif (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {\n\t\tconsole.log(\"dom_object 10: \");\n\t\tconsole.log(dom_object);\n\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\tcontext_menu += '<div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\tcontext_menu += '</div></div>';\n\t}\n\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\tcontext_menu.insertAfter( dom_object.find('.variable_rendered') );\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t\t\tconsole.log('S10');\n\t if ($selectedItem.data('clear')) {\n\t \tconsole.log('PP9');\n\t \tdom_object.text('');\n\n\t \tref_object.content = null;\n\t \tref_object.row = null;\n\t \tref_object.column = null;\n\n\t \tdelete ref_object.function_called;\n\t\t delete ref_object.parameters_list;\n\n\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t }\n\n\t if ($selectedItem.data('exp')) {\n\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t }\n\n\t if (command.type == Models.COMMAND_TYPES.repeatNtimes) {\n\t \tRepeatNTimesManagement.manageClearExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t }\n },\n\t selectOnKeydown: false\n\t});\n\n\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tAttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected);\n\t}\n}\n\n\nfunction openInputToValue (command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element) {\n\n\tif (ref_object.content == null) {\n\t\tref_object.content = \"\";\n\t}\n\n\tmenu_var_or_value.find('.text').text(' ');\n\tvar field = $('<input type=\"text\" size=\"2\" class=\"width-dynamic-minus\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />');\n\tfield.insertBefore(dom_object.find('.menu_var_or_value_dom'));\n\tvar rendered = $('<div class=\"value_rendered\"></div>');\n\trendered.insertBefore(field);\n\n\tfield.focus();\n\tfield.val(ref_object.content);\n\n\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\tcontext_menu += '<div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\tcontext_menu += '</div></div>';\n\t}\n\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\tif (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n\t\tcontext_menu.insertAfter( field );\n\t}\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t\t\tconsole.log('S11');\n\t if ($selectedItem.data('clear')) {\n\t \tconsole.log('PP10');\n\t \tdom_object.text('');\n\n\t \tdom_object.find('.value_rendered').remove();\n\t\t\tdom_object.find('.context_menu_clear').remove();\n\t\t\tdom_object.find('.width-dynamic-minus').remove();\n\n\t\t\tref_object.content = null;\n\t\t ref_object.row = null;\n\t\t ref_object.column = null;\n\n\t\t\tdelete ref_object.function_called;\n\t\t delete ref_object.parameters_list;\n\n\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t }\n\n\t if ($selectedItem.data('exp')) {\n\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t }\n },\n\t selectOnKeydown: false\n\t});\n\n\tdom_object.find('.width-dynamic-minus').focusout(function() {\n\t\tif ($(this).val().trim()) {\n\t\t\tref_object.content = $(this).val().trim();\n\t\t}\n\n\t\trendered.text(ref_object.content);\n\t\t$(this).remove();\n\n\t});\n\n\tdom_object.find('.width-dynamic-minus').on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif ($(this).val().trim()) {\n\t\t\t\tref_object.content = $(this).val().trim();\n\t\t\t}\n\t\t\trendered.text(ref_object.content);\n\n\t\t\t$(this).remove();\n\t\t}\n\t\tif(code == 27) {\n\t\t\trendered.text(ref_object.content);\n\n\t\t\t$(this).remove();\n\t\t}\n\t});\n\n\tif (command.type == Models.COMMAND_TYPES.comment) {\n\t\t/*rendered.parent().on('click', function(e) {\n\t\t\trendered.parent().off();\n\t\t\tconsole.log(\"TTT14\");\n\t\t\trendered.remove();\n\t\t\trendered.empty();\n\t\t\trendered.remove();\n\t\t\tdom_object.empty();\n\t\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\t\n\t\t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)\n\t\t});*/\n\t}\n\n\trendered.on('click', function(e) {\n\t\tconsole.log(\"TTT2\");\n\t\trendered.remove();\n\t\trendered.empty();\n\t\trendered.remove();\n\t\tdom_object.empty();\n\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\n\t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)\n\t});\n\n\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tAttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);\n\t}\n}\n\n\n$.fn.textWidth = function(text, font) {\n \n if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body);\n \n $.fn.textWidth.fakeEl.text(text || this.val() || this.text() || this.attr('placeholder')).css('font', font || this.css('font'));\n \n return $.fn.textWidth.fakeEl.width();\n};\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as ContextualizedMenu from './contextualized_menu';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui whiletrue created_element\"> <i class=\"ui icon small sync\"></i> <span> ' + LocalizedStrings.getUI('text_code_while') + ' ( x < 10 ) { } </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui whiletrue command_container\"> <i class=\"ui icon small random command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"ui context_menu\"></div> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_code_while') + ' </span>';\n\tret += '<span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"span_command_spec\"> ) </span>';\n\tret += ' </span>';\n\tret += '<div class=\"ui block_commands\">';\n\tret += '</div>';\n\tret += '<span> </span>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, whiletrue_dom) {\n\n\twhiletrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, whiletrue_dom)) {\n\t\t\twhiletrue_dom.fadeOut(400, function() {\n\t\t\t\twhiletrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nimport '../../Sortable.js';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui writer created_element\"> <i class=\"ui icon small upload\"></i> <span> '+LocalizedStrings.getUI('text_command_write')+' var </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui writer command_container\"> <i class=\"ui icon small upload command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span class=\"span_command_spec\">'+LocalizedStrings.getUI('text_command_write')+' ( </span><div class=\"all_elements_write\"></div> <span class=\"close_parentheses span_command_spec\">)</span> </div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\n\tfor (var i = 0; i < command.content.length; i ++) {\n\t\tvar new_div_item = $( '<div class=\"var_value_menu_div\"></div>' );\n\t\tvar div_parent_with_handler = $( '<div class=\"div_parent_handler\"></div>' );\n\t\tdiv_parent_with_handler.append($('<i class=\"ui icon ellipsis vertical inverted handler\"></i>'));\n\t\tdiv_parent_with_handler.append(new_div_item);\n\t\tdiv_parent_with_handler.append($('<i class=\"white inverted icon times handler\"></i>'));\n\n\t\tel.find('.all_elements_write').append(div_parent_with_handler);\n\t\tVariableValueMenu.renderMenu(command, command.content[i], new_div_item, function_obj);\n\n\t\taddHandlerIconAdd(el.find('.all_elements_write'), command, function_obj);\n\n\t\taddHandlersManager(command, function_obj, el, div_parent_with_handler, command.content[i]);\n\t}\n\n\tif (command.content.length == 0) {\n\t\taddHandlerIconAdd(el.find('.all_elements_write'), command, function_obj);\n\t}\n\n\taddHandlers(command, function_obj, el);\n\treturn el;\n}\n\nfunction addHandlersManager (command, function_obj, writer_dom, item_div, content_element) {\n\n\titem_div.find('.times').on('click', function() {\n\t\tfor (var i = 0; i < command.content.length; i++) {\n\t\t\tif (command.content[i] == content_element) {\n\t\t\t\tdelete command.content[i];\n\t \t\t\tcommand.content.splice(i, 1);\n\t\t\t\t\n\t\t\t\titem_div.children().off();\n\t\t\t\titem_div.off();\n\t\t\t\titem_div.fadeOut();\n\n\t\t\t\tif (command.content.length > 0) {\n\t\t\t\t\titem_div.next('.icon_add_item_to_writer').fadeOut();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction addHandlers (command, function_obj, writer_dom) {\n\n\twriter_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, writer_dom)) {\n\t\t\twriter_dom.fadeOut(400, function() {\n\t\t\t\twriter_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n\n\tSortable.create(writer_dom.find(\".all_elements_write\")[0], {\n\t handle: '.ellipsis',\n\t animation: 100,\n\t ghostClass: 'ghost',\n\t group: 'writer_' + Math.floor(Math.random() * 10000000),\n\t draggable: '.div_parent_handler',\n\t onEnd: function (evt) {\n\t \t\n\t \tcommand.content.splice(evt.newIndex, 0, command.content.splice(evt.oldIndex, 1)[0]);\n\n\t \twriter_dom.empty();\n\t \twriter_dom.replaceWith(renderCommand(command, function_obj));\n\t }\n\t });\n\n\n}\n\nfunction addHandlerIconAdd (dom_object, command, function_obj, insert_after = false, after_which = null) {\n\tvar icon_add_item = $( '<i class=\"ui icon plus square outline icon_add_item_to_writer\"></i> ' );\n\tif (!insert_after) {\n\t\tdom_object.append(icon_add_item);\n\t} else {\n\t\ticon_add_item.insertAfter(after_which);\n\t}\n\t\n\ticon_add_item.on('click', function(e) {\n\t\tvar div_parent_with_handler = $( '<div class=\"div_parent_handler\" style=\"display:none;\"></div>' );\n\t\tvar new_div_item = $( '<div class=\"var_value_menu_div\"></div>' );\n\t\tdiv_parent_with_handler.append($('<i class=\"ui icon ellipsis vertical inverted handler\"></i>'));\n\t\tdiv_parent_with_handler.append(new_div_item);\n\t\tdiv_parent_with_handler.append($('<i class=\"white inverted icon times handler\"></i>'));\n\t\tdiv_parent_with_handler.insertAfter(icon_add_item);\n\n\t\tvar new_related_menu = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\n\t\tVariableValueMenu.renderMenu(command, new_related_menu, new_div_item, function_obj);\n\n\t\taddHandlerIconAdd(dom_object, command, function_obj, true, div_parent_with_handler);\n\n\t\taddHandlersManager(command, function_obj, dom_object, div_parent_with_handler, new_related_menu);\n\t\tvar pos = 1;\n\t\tdom_object.find('.icon_add_item_to_writer').each(function() {\n\t\t\tif ($(this).get(0) === icon_add_item.get(0)) {\n\t\t\t\tcommand.content.splice(pos, 0, new_related_menu);\n\t\t\t} else {\n\t\t\t\tpos ++;\n\t\t\t}\n\t\t});\n\t\tif (command.content.length == 1) {\n\t\t\ticon_add_item.remove();\n\t\t}\n\t\tdiv_parent_with_handler.fadeIn();\n\t});\n}\n\nexport function addContent (command, ref_object, dom_object, menu_var_or_value, function_obj, ref_object_content) {\n\t\n\tif (dom_object.hasClass('var_value_menu_div')) {\n\t\tvar icon_add_item = $( '<i class=\"ui icon plus square outline icon_add_item_to_writer\"></i> ' );\n\t\ticon_add_item.insertAfter(dom_object);\n\n\t\ticon_add_item.on('click', function(e) {\n\t\t\tvar div_parent_with_handler = $( '<div class=\"div_parent_handler\"></div>' );\n\t\t\tdiv_parent_with_handler.append($('<i class=\"ui icon ellipsis vertical inverted handler\"></i>'));\n\t\t\tdiv_parent_with_handler.append(new_div_item);\n\t\t\tdiv_parent_with_handler.append($('<i class=\"white inverted icon times handler\"></i>'));\n\n\t\t\tdiv_parent_with_handler.insertAfter(icon_add_item);\n\t\t\tvar new_related_menu = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\n\t\t\tVariableValueMenu.renderMenu(command, new_related_menu, new_div_item, function_obj);\n\n\t\t\taddHandlersManager(command, function_obj, dom_object, div_parent_with_handler, new_related_menu);\n\n\t\t\tcommand.content.push(new_related_menu);\n\n\t\t\tif (command.content.length == 1) {\n\t\t\t\ticon_add_item.remove();\n\t\t\t}\n\t\t});\n\t}\n}\n","import $ from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as GlobalsManagement from './globals';\nimport * as VariablesManagement from './variables';\nimport * as CommandsManagement from './commands';\nimport * as CodeManagement from './code_generator';\nimport * as VariableValueMenu from './commands/variable_value_menu';\nimport { DOMConsole } from './../io/domConsole';\nimport { IVProgParser } from './../ast/ivprogParser';\nimport { IVProgProcessor } from './../processor/ivprogProcessor';\nimport WatchJS from 'melanke-watchjs';\nimport { SemanticAnalyser } from '../processor/semantic/semanticAnalyser';\nimport { IVProgAssessment } from '../assessment/ivprogAssessment';\nimport * as AlgorithmManagement from './algorithm';\nimport * as Utils from './utils';\nimport VersionInfo from './../../.ima_version.json';\n\nimport '../Sortable.js'; \n\nvar counter_new_functions = 0;\nvar counter_new_parameters = 0;\nvar ivprog_version = VersionInfo.version;\n\nlet studentTemp = null;\nlet domConsole = null;\nwindow.studentGrade = null;\nwindow.LocalizedStrings = LocalizedStrings;\nconst program = new Models.Program();\n\nwindow.system_functions = [];\n// Adding math functions:\nwindow.system_functions.push(new Models.SystemFunction('$sin', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$cos', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$tan', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$sqrt', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$pow', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$log', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$abs', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$negate', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$invert', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$max', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$min', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\n// Adding text functions:\nwindow.system_functions.push(new Models.SystemFunction('$substring', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$length', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$uppercase', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$lowercase', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$charAt', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\n// Adding arrangement functions:\nwindow.system_functions.push(new Models.SystemFunction('$numElements', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 1)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\nwindow.system_functions.push(new Models.SystemFunction('$matrixLines', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 2)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\nwindow.system_functions.push(new Models.SystemFunction('$matrixColumns', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 2)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\n// Adding conversion functions:\nwindow.system_functions.push(new Models.SystemFunction('$isReal', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$isInt', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$isBool', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castReal', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castInt', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castBool', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castString', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\n\nconsole.log(' ___ ___ ________ \\n / / / / / ____/ \\n / / / / / / \\n / / / / ______ ___ / /__ \\n / / / / / \\\\ / / / ___/ \\n / /______ / / / /\\\\ \\\\/ / / / \\n / / / / / / \\\\ / / /____ \\n/__________/ /___/ /___/ \\\\___/ /________/ \\n\\n Laboratório de Informática na Educação\\n http://line.ime.usp.br');\n\nconst mainFunction = new Models.Function(LocalizedStrings.getUI(\"start\"), Types.VOID, 0, [], true, false);\nmainFunction.function_comment = new Models.Comment(LocalizedStrings.getUI('text_comment_main'));\nprogram.addFunction(mainFunction);\n\nwindow.program_obj = program;\n\nwindow.generator = CodeManagement.generate;\nwindow.runCodeAssessment = runCodeAssessment;\nwindow.renderAlgorithm = AlgorithmManagement.renderAlgorithm;\nwindow.insertContext = false;\nwindow.watchW = WatchJS;\n\nWatchJS.watch(window.program_obj.globals, function(){\n if (window.insertContext) {\n setTimeout(function(){ AlgorithmManagement.renderAlgorithm(); }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n}, 1);\n\nWatchJS.watch(window.program_obj.functions, function(){\n if (window.insertContext) {\n setTimeout(function(){ AlgorithmManagement.renderAlgorithm(); }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n}, 1);\n\nfunction addFunctionHandler () {\n\n\tvar new_function = new Models.Function(LocalizedStrings.getUI(\"new_function\") + \"_\" + counter_new_functions, Types.VOID, 0, [], false, false, [], new Models.Comment(LocalizedStrings.getUI('text_comment_start')));\n\tprogram.addFunction(new_function);\n\n\tcounter_new_functions ++;\n\n window.insertContext = true;\n\n var newe = renderFunction(new_function);\n\n /*newe.css('display', 'none');\n newe.fadeIn();*/\n}\n\nfunction addParameter (function_obj, function_container, is_from_click = false) {\n if (function_obj.parameters_list == null) {\n function_obj.parameters_list = [];\n }\n var new_parameter = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI(\"new_parameter\") + \"_\" + counter_new_parameters);\n function_obj.parameters_list.push(new_parameter);\n counter_new_parameters ++;\n\n var newe = renderParameter(function_obj, new_parameter, function_container);\n\n if (is_from_click) {\n /*newe.css('display', 'none');\n newe.fadeIn();*/\n }\n}\n\nfunction updateReturnType (function_obj, new_type, new_dimensions = 0) {\n function_obj.return_type = new_type;\n function_obj.return_dimensions = new_dimensions;\n}\n\nfunction removeFunction (function_obj) {\n var index = program.functions.indexOf(function_obj);\n if (index > -1) {\n program.functions.splice(index, 1);\n }\n}\n\nfunction minimizeFunction (function_obj) {\n function_obj.is_hidden = !function_obj.is_hidden;\n}\n\nfunction addHandlers (function_obj, function_container) {\n\n function_container.find('.ui.dropdown.function_return').dropdown({\n onChange: function(value, text, $selectedItem) {\n if ($selectedItem.data('dimensions')) {\n updateReturnType(function_obj, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n } else {\n updateReturnType(function_obj, Types[$selectedItem.data('type')]);\n }\n },\n selectOnKeydown: false\n });\n\n function_container.find( \".name_function_updated\" ).on('click', function(e){\n enableNameFunctionUpdate(function_obj, function_container);\n });\n\n function_container.find( \".add_parameter_button\" ).on('click', function(e){\n window.insertContext = true;\n addParameter(function_obj, function_container, true);\n });\n\n function_container.find('.menu_commands').dropdown({\n on: 'hover'\n });\n\n function_container.find('.menu_commands a').on('click', function(evt){\n if (function_obj.commands == null || function_obj.commands.length == 0) {\n function_obj.commands = [];\n var new_cmd = CommandsManagement.genericCreateCommand($(this).data('command'));\n function_obj.commands.push(new_cmd);\n\n CommandsManagement.renderCommand(new_cmd, function_container.find('.commands_list_div'), 3, function_obj);\n } else {\n CommandsManagement.createFloatingCommand(function_obj, function_container, $(this).data('command'), evt);\n }\n\n });\n\n function_container.find('.add_var_button_function').on('click', function(e){\n window.insertContext = true;\n VariablesManagement.addVariable(function_obj, function_container, true);\n });\n\n function_container.find('.remove_function_button').on('click', function(e){\n removeFunction(function_obj);\n function_container.fadeOut();\n });\n\n function_container.find('.minimize_function_button').on('click', function(e){\n minimizeFunction(function_obj);\n if (function_obj.is_hidden) {\n function_container.find(\".add_var_button_function\").toggle();\n function_container.find(\".inline_add_command\").toggle();\n function_container.find(\".function_area\").slideToggle();\n } else {\n function_container.find(\".function_area\").slideToggle(function(){\n function_container.find(\".add_var_button_function\").toggle();\n function_container.find(\".inline_add_command\").toggle();\n });\n }\n \n });\n}\n\n// Essa função imprime o tipo de retorno da função e cria o menu do tipo 'select' para alteração\nfunction renderFunctionReturn (function_obj, function_element) {\n\n var ret = '<div class=\"ui dropdown function_return\">';\n \n if (function_obj.return_dimensions > 0) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI(\"vector\") +':'+ LocalizedStrings.getUI(function_obj.return_type);\n if (function_obj.return_dimensions == 1) {\n ret += ' [ ] ';\n } else {\n ret += ' [ ] [ ] ';\n }\n ret += '</div>';\n } else {\n ret += '<div class=\"text\">'+LocalizedStrings.getUI(function_obj.return_type)+'</div>';\n }\n\n ret += '<div class=\"menu\">';\n\n\n for (var tm in Types) {\n ret += '<div class=\"item ' + (function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions < 1 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(tm.toLowerCase())+'</div>';\n }\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n ret += '<div class=\"item\">'\n + '<i class=\"dropdown icon\"></i>'\n + LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())\n + '<div class=\"menu\">'\n + '<div class=\"item '+(function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions > 0 ? ' selected ' : '')+'\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\">[ ]</div>'\n + '<div class=\"item '+(function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions > 0 ? ' selected ' : '')+'\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\">[ ] [ ] </div>'\n + '</div>'\n + '</div>'; \n }\n\n ret += '</div></div>';\n\n ret = $(ret);\n \n function_element.find('.function_return').append(ret);\n}\n\nvar cont = 0;\n\nexport function renderFunction (function_obj) {\n \n var appender = '<div class=\"ui secondary segment function_div list-group-item function_cont_'+cont+'\">';\n\n if (function_obj.function_comment) {\n //appender += renderComment(function_obj.function_comment, sequence, true, -1);\n }\n \n appender += '<span class=\"glyphicon glyphicon-move move_function\" aria-hidden=\"true\"><i class=\"icon sort alternate vertical\"></i></span>';\n\n appender += (function_obj.is_main ? '<div class=\"div_start_minimize_v\"> </div>' : '<button class=\"ui icon button large remove_function_button\"><i class=\"red icon times\"></i></button>')\n + '<button class=\"ui icon button tiny minimize_function_button\"><i class=\"icon window minimize\"></i></button>';\n\n appender += '<div class=\"function_signature_div\">'+LocalizedStrings.getUI(\"function\")+' ';\n\n if (function_obj.is_main) {\n appender += '<div class=\"function_name_div\"> ' + LocalizedStrings.getUI('void') + ' <span class=\"span_name_function\" >'+function_obj.name+'</span> </div> '\n + ' <span class=\"parethesis_function\">( </span> <div class=\"ui large labels parameters_list\">';\n } else {\n appender += '<div class=\"ui function_return\"></div>';\n\n appender += '<div class=\"function_name_div function_name_div_updated\"><span class=\"span_name_function name_function_updated\">'+function_obj.name+'</span> </div> ' \n + ' <span class=\"parethesis_function\"> ( </span> <i class=\"ui icon plus square outline add_parameter_button\"></i> <div class=\"ui large labels parameters_list container_parameters_list\">';\n }\n \n appender += '</div> <span class=\"parethesis_function\"> ) </span> </div>'\n + (function_obj.is_hidden ? ' <div class=\"function_area\" style=\"display: none;\"> ' : ' <div class=\"function_area\"> ');\n\n appender += '<div class=\"ui add_var_context add_var_button_function\" style=\"float: left;\"><i class=\"icon plus circle purple\"></i><i class=\"icon circle white back\"></i><div class=\"ui icon button purple\"><i class=\"icon superscript\"></i></div></div>';\n\n appender += '<div class=\"ui top attached segment variables_list_div\"></div>';\n\n \n\n appender += '<div class=\"ui bottom attached segment commands_list_div commands_cont_'+cont+'\">'\n + '<div class=\"ui rail\" style=\"width: 35px; margin-left: -36px;\"><div class=\"ui sticky sticky_cont_'+cont+'\" style=\"top: 50px !important;\">';\n\n\n appender += '<i class=\"icon plus circle purple\"></i><i class=\"icon circle white back\"></i><div class=\"ui icon button dropdown menu_commands orange\" ><i class=\"icon code\"></i> <div class=\"menu\"> ';\n appender += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.reader+'\"><i class=\"download icon\"></i> ' +LocalizedStrings.getUI('text_read_var')+ '</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.writer+'\"><i class=\"upload icon\"></i> '+LocalizedStrings.getUI('text_write_var')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.comment+'\"><i class=\"quote left icon\"></i> '+LocalizedStrings.getUI('text_comment')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.attribution+'\"><i class=\"arrow left icon\"></i> '+LocalizedStrings.getUI('text_attribution')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.functioncall+'\"><i class=\"hand point right icon\"></i> '+LocalizedStrings.getUI('text_functioncall')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.iftrue+'\" ><i class=\"random icon\"></i> '+LocalizedStrings.getUI('text_iftrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.repeatNtimes+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_repeatNtimes')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.whiletrue+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_whiletrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.dowhiletrue+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_dowhiletrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.switch+'\"><i class=\"list icon\"></i> '+LocalizedStrings.getUI('text_switch')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.return+'\"><i class=\"reply icon\"></i> '+LocalizedStrings.getUI('text_btn_return')+'</a>'\n + '</div></div>';\n\n\n appender += '</div></div>'\n +'</div>';\n\n appender += '</div></div>';\n\n appender = $(appender);\n\n $('.all_functions').append(appender);\n\n appender.data('fun', function_obj);\n appender.find('.commands_list_div').data('fun', function_obj);\n\n renderFunctionReturn(function_obj, appender);\n\n addHandlers(function_obj, appender);\n\n // Rendering parameters: \n for (var j = 0; j < function_obj.parameters_list.length; j++) {\n renderParameter(function_obj, function_obj.parameters_list[j], appender);\n }\n\n // Rendering variables:\n for (var j = 0; j < function_obj.variables_list.length; j++) {\n VariablesManagement.renderVariable(appender, function_obj.variables_list[j], function_obj);\n }\n // Rendering commands:\n for (var j = 0; j < function_obj.commands.length; j++) {\n CommandsManagement.renderCommand(function_obj.commands[j], $(appender.find('.commands_list_div')[0]), 3, function_obj);\n }\n $('.minimize_function_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_minimize\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n var function_index = program.functions.indexOf(function_obj);\n\n Sortable.create(appender.find(\".variables_list_div\")[0], {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'local_vars_drag_' + function_index,\n onEnd: function (evt) {\n updateSequenceLocals(evt.oldIndex, evt.newIndex, function_obj);\n }\n });\n\n addSortableHandler(appender.find(\".commands_list_div\")[0], function_index);\n\n if (!function_obj.is_main) {\n Sortable.create(appender.find(\".container_parameters_list\")[0], {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'parameters_drag_' + program.functions.indexOf(function_obj),\n onEnd: function (evt) {\n updateSequenceParameters(evt.oldIndex, evt.newIndex, function_obj);\n }\n });\n }\n\n var teste = '.ui.sticky.sticky_cont_'+cont;\n $(teste).sticky({\n context: '.ui.bottom.attached.segment.commands_list_div.commands_cont_'+cont,\n scrollContext: '.ivprog_visual_panel',\n observeChanges: true,\n offset: 40,\n onStick: function (evt) {\n $(teste).css('top', '20px', 'important');\n }, \n onBottom: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onUnstick: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onReposition: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onScroll: function (evt) {\n $(teste).css('top', '20px', 'important');\n if (!isVisible($(teste), $(teste).parent())) {\n $(teste).removeClass('fixed');\n }\n },\n onTop: function (evt) {\n $(teste).css('top', '20px', 'important');\n }\n });\n cont ++;\n\n return appender;\n}\n\nfunction isVisible (element, container) {\n\n var elementTop = $(element).offset().top,\n elementHeight = $(element).height(),\n containerTop = $(container).offset().top,\n containerHeight = $(container).height() - 30;\n\n return ((((elementTop - containerTop) + elementHeight) > 0)\n && ((elementTop - containerTop) < containerHeight));\n}\n\n\nwindow.evento_drag;\n\nfunction updateProgramObjDrag () {\n var nodes = Array.prototype.slice.call( $('.all_functions').children() );\n var function_index;\n var start_index;\n var function_obj;\n $(evento_drag.item).parentsUntil(\".all_functions\").each(function (index) {\n if ($(this).hasClass('function_div')) {\n function_index = nodes.indexOf(this);\n start_index = index;\n function_obj = $(this);\n }\n });\n\n console.log(function_index);\n\n var path_target = [];\n $(evento_drag.item).parentsUntil(\".all_functions\").each(function (index) {\n if ($(this).hasClass('command_container')) {\n path_target.push(this);\n }\n });\n if (path_target.length == 0) {\n //console.log('soltou na raiz, na posição: ' + evento_drag.newIndex + ' mas ainda não sei de onde saiu ');\n } else {\n //console.log('soltou dentro de algum bloco, sequência vem logo abaixo (de baixo pra cima): ');\n //console.log(path_target);\n }\n\n var index_each = [];\n var path_relative = [];\n for (var i = path_target.length - 1; i >= 0; i --) {\n console.log('da vez', $(path_target[i + 1]));\n if (i == (path_target.length - 1)) { // está na raiz\n var indice_na_raiz = function_obj.find('.command_container').index(path_target[i]);\n console.log('índice na raiz: ', indice_na_raiz);\n } else {\n if ($(path_target[i + 1]).hasClass('iftrue')) {\n if ($(path_target[i]).parent().hasClass('commands_if')) {\n path_relative.push('if');\n index_each.push($(path_target[i]).parent().find('.command_container').index(path_target[i]));\n } else {\n path_relative.push('else');\n index_each.push($(path_target[i]).parent().find('.command_container').index(path_target[i]));\n }\n } else if ($(path_target[i + 1]).hasClass('dowhiletrue')) {\n path_relative.push('dowhiletrue');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('repeatNtimes')) {\n path_relative.push('repeatNtimes');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('whiletrue')) {\n path_relative.push('whiletrue');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('switch')) {\n path_relative.push('switch');\n //index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n }\n }\n }\n var index_in_block = -1;\n var is_in_else = $(evento_drag.item).parent().hasClass('commands_else');\n\n index_in_block = $(evento_drag.item).parent().find('.command_container').index(evento_drag.item);\n\n var is_in_case_switch = $(evento_drag.item).parent().hasClass('case_commands_block');\n var index_case_of_switch = -1;\n if (is_in_case_switch) {\n index_case_of_switch = $(evento_drag.item).parent().parent().parent().find('.case_div').index($(evento_drag.item).parent().parent());\n }\n\n /*console.log('path_relative:');\n console.log(path_relative);\n console.log('index_each:');\n console.log(index_each);\n console.log('index_in_block:');\n console.log(index_in_block);\n console.log('ele está em algum bloco de senão? ');\n console.log(is_in_else);\n console.log('ele está dentro de um case de switch?');\n console.log(is_in_case_switch);\n console.log('qual é o índice do case: ');\n console.log(index_case_of_switch);*/\n\n // encontrar o elemento na árvore:\n var command_start_point = window.program_obj.functions[function_index].commands[indice_na_raiz];\n var block_to_insert = command_start_point;\n for (var i = 0; i < index_each.length; i++) {\n if (path_relative[i] == \"else\") {\n block_to_insert = block_to_insert.commands_else[index_each[i]];\n } else if (path_relative[i] == \"switch\") {\n\n } else {\n block_to_insert = block_to_insert.commands_block[index_each[i]]\n }\n }\n\n //console.log('command_start_point', command_start_point);\n //console.log('block_to_insert', block_to_insert);\n\n // agora tem que alocar o comando na árvore, mas considerar as quatro situações:\n // (1) se está em um else ou (2) se está em switch ou (3) será um caso padrão ou (4) se será na raiz.\n \n if (path_target.length == 0) { // soltou na raiz:\n window.program_obj.functions[function_index].commands.splice(evento_drag.newIndex, 0, command_in_drag);\n } else if (is_in_else) {\n if (block_to_insert.commands_else) {\n block_to_insert.commands_else.splice(evento_drag.newIndex, 0, command_in_drag);\n } else {\n block_to_insert.commands_else = [];\n block_to_insert.commands_else.push(command_in_drag);\n }\n } else if (is_in_case_switch) {\n\n } else {\n // verificar se tem alguma coisa no bloco:\n if (block_to_insert.commands_block) {\n block_to_insert.commands_block.splice(evento_drag.newIndex, 0, command_in_drag);\n } else {\n block_to_insert.commands_block = [];\n block_to_insert.commands_block.push(command_in_drag);\n }\n }\n\n window.draging = false;\n renderAlgorithm();\n \n\n}\n\nfunction prepareDragHandler (evt) {\n window.draging = true;\n\n var nodes = Array.prototype.slice.call( $('.all_functions').children() );\n var function_index;\n var function_obj;\n $(evt.item).parentsUntil(\".all_functions\").each(function (index) {\n if ($(this).hasClass('function_div')) {\n function_index = nodes.indexOf(this);\n function_obj = window.program_obj.functions[function_index];\n }\n });\n\n command_in_drag = $(evt.item).data(\"command\");\n\n //console.log('$(evt.item).parent(): ');\n //console.log($(evt.item).parent());\n\n // descobrir qual das quatro situações:\n if ($(evt.item).parent().hasClass('commands_list_div')) { // está na raiz:\n if (function_obj.commands.indexOf(command_in_drag) > -1) {\n function_obj.commands.splice(function_obj.commands.indexOf(command_in_drag), 1);\n }\n } else if ($(evt.item).parent().hasClass('commands_else')) { // está no else:\n if ($(evt.item).parent().data('command').commands_else.indexOf(command_in_drag) > -1) {\n $(evt.item).parent().data('command').commands_else.splice($(evt.item).parent().data('command').commands_else.indexOf(command_in_drag), 1);\n }\n } else if ($(evt.item).parent().hasClass('case_commands_block')) { // está em um switch:\n\n } else { // caso padrão:\n if ($(evt.item).parent().data('command').commands_block.indexOf(command_in_drag) > -1) {\n $(evt.item).parent().data('command').commands_block.splice($(evt.item).parent().data('command').commands_block.indexOf(command_in_drag), 1);\n }\n }\n\n}\n\nvar command_in_drag;\n\nfunction addSortableHandler (element, id_function) {\n var n_group = 'commands_drag_' + id_function;\n Sortable.create(element, {\n handle: '.command_drag',\n ghostClass: 'ghost',\n animation: 300,\n group: {name: n_group},\n onEnd: function (evt) {\n //updateSequenceLocals(evt.oldIndex, evt.newIndex, function_obj);\n var itemEl = evt.item; // dragged HTMLElement\n evt.to; // target list\n evt.from; // previous list\n evt.oldIndex; // element's old index within old parent\n evt.newIndex; // element's new index within new parent\n //console.log('::EVT::');\n //console.log(evt);\n\n window.evento_drag = evt;\n\n try {\n updateProgramObjDrag();\n } catch (e) {\n window.draging = false;\n }\n },\n onStart: function (evt) {\n //console.log(\"START::EVT::\");\n //console.log(evt);\n //console.log(\"\\n\\ncommand_in_drag\");\n try {\n prepareDragHandler(evt);\n } catch (e) {\n window.draging = false;\n }\n }\n });\n element = $(element);\n element.find(\".iftrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n addSortableHandler($(this).find(\".block_commands\")[1], id_function);\n });\n\n element.find(\".repeatNtimes\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".dowhiletrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".whiletrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".switch\").each(function( index ) {\n\n $(this).find(\".case_div\").each(function( index ) {\n addSortableHandler($(this).find(\".case_commands_block\")[0], id_function);\n });\n\n }); \n}\n\nexport function initVisualUI () {\n // MUST USE CONST, LET, OR VAR !!!!!!\n const mainDiv = $('#visual-main-div');\n // fill mainDiv with functions and globals...\n // renderAlgorithm()...\n $('.add_function_button').on('click', () => {\n addFunctionHandler();\n });\n $('.add_global_button').on('click', () => {\n window.insertContext = true;\n GlobalsManagement.addGlobal(program, true);\n });\n\n $('.run_button').on('click', () => {\n runCode();\n });\n\n $('.visual_coding_button').on('click', () => {\n toggleVisualCoding();\n });\n\n $('.textual_coding_button').on('click', () => {\n toggleTextualCoding();\n });\n\n $('.assessment').on('click', () => {\n runCodeAssessment();\n is_iassign = true;\n });\n\n $('.div_toggle_console').on('click', () => {\n toggleConsole();\n });\n $('.expand_button').on('click', () => {\n full_screen();\n });\n $('.main_title h2').prop('title', LocalizedStrings.getUI('text_ivprog_description'));\n}\n\nvar is_iassign = false;\n\n$( document ).ready(function() {\n\n var time_show = 750;\n $('.visual_coding_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_visual\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.textual_coding_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_textual\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.upload_file_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_upload\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.download_file_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_download\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.undo_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_undo\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.redo_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_redo\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.run_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_run\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.assessment_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_evaluate\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.help_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_help\") + ' - ' + LocalizedStrings.getUI(\"text_ivprog_version\") + ' ' + ivprog_version,\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.add_global_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_add_global\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.div_toggle_console').popup({\n content : LocalizedStrings.getUI(\"tooltip_console\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n\n Sortable.create(listWithHandle, {\n handle: '.glyphicon-move',\n animation: 100,\n ghostClass: 'ghost',\n group: 'functions_divs_drag',\n onEnd: function (evt) {\n updateSequenceFunction(evt.oldIndex, evt.newIndex);\n }\n });\n\n var listGlobalsHandle = document.getElementById(\"listGlobalsHandle\");\n Sortable.create(listGlobalsHandle, {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'globals_divs_drag',\n onEnd: function (evt) {\n updateSequenceGlobals(evt.oldIndex, evt.newIndex);\n }\n });\n\n});\n\nfunction updateSequenceParameters (oldIndex, newIndex, function_obj) {\n function_obj.parameters_list.splice(newIndex, 0, function_obj.parameters_list.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceLocals (oldIndex, newIndex, function_obj) {\n function_obj.variables_list.splice(newIndex, 0, function_obj.variables_list.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceGlobals (oldIndex, newIndex) {\n program_obj.globals.splice(newIndex, 0, program_obj.globals.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceFunction (oldIndex, newIndex) {\n program_obj.functions.splice(newIndex, 0, program_obj.functions.splice(oldIndex, 1)[0]);\n}\n\nfunction runCodeAssessment () {\n \n window.studentGrade = null;\n studentTemp = null;\n const strCode = CodeManagement.generate();\n if (strCode == null) {\n return;\n }\n\n toggleConsole(true);\n\n if(domConsole == null)\n domConsole = new DOMConsole(\"#ivprog-term\");\n $(\"#ivprog-term\").slideDown(500);\n const runner = new IVProgAssessment(strCode, testCases, domConsole);\n\n runner.runTest().then(grade => {\n if (!is_iassign) {\n parent.getEvaluationCallback(grade);\n } else {\n is_iassign = false;\n }\n }).catch( err => console.log(err));\n \n}\n\nfunction runCode () {\n \n const strCode = CodeManagement.generate();\n if (strCode == null) {\n return;\n }\n \n toggleConsole(true);\n\n if(domConsole == null)\n domConsole = new DOMConsole(\"#ivprog-term\");\n $(\"#ivprog-term\").slideDown(500);\n try {\n const parser = IVProgParser.createParser(strCode);\n const analyser = new SemanticAnalyser(parser.parseTree());\n const data = analyser.analyseTree();\n const proc = new IVProgProcessor(data);\n proc.registerInput(domConsole);\n proc.registerOutput(domConsole);\n $(\"#ivprog-term\").addClass('ivprog-term-active');\n\n proc.interpretAST().then( _ => {\n domConsole.info(\"Programa executado com sucesso!\");\n $(\"#ivprog-term\").removeClass('ivprog-term-active');\n }).catch(err => {\n domConsole.err(err.message);\n $(\"#ivprog-term\").removeClass('ivprog-term-active');\n }) \n } catch (error) {\n domConsole.err(error.message);\n console.log(error);\n }\n \n}\n\nfunction toggleConsole (is_running) {\n\n if (is_running) {\n $('.ivprog-term-div').css('display', 'block');\n $('#ivprog-term').css('min-height', '160px');\n $('#ivprog-term').css('margin-top', '-170px');\n return;\n }\n\n if ($('#ivprog-term').css('min-height') == '160px') {\n // esconder\n $('.ivprog-term-div').css('display', 'none');\n $('#ivprog-term').css('min-height', '0');\n $('#ivprog-term').css('margin-top', '-30px');\n $('#ivprog-term').css('padding', '5px');\n } else {\n // mostrar\n $('.ivprog-term-div').css('display', 'block');\n $('#ivprog-term').css('min-height', '160px');\n $('#ivprog-term').css('margin-top', '-170px');\n }\n}\n\nfunction waitToCloseConsole () {\n domConsole.info(\"Aperte qualquer tecla para fechar...\");\n const p = new Promise((resolve, _) => {\n domConsole.requestInput(resolve, true);\n });\n p.then( _ => {\n domConsole.dispose();\n domConsole = null;\n $(\"#ivprog-term\").hide();\n })\n}\n\nfunction toggleTextualCoding () {\n var code = CodeManagement.generate();\n\n if (code == null) {\n return;\n }\n\n $('.ivprog_visual_panel').css('display', 'none');\n $('.ivprog_textual_panel').css('display', 'block');\n $('.ivprog_textual_panel').removeClass('loading');\n $('.ivprog_textual_code').text(code);\n\n $('.visual_coding_button').removeClass('active');\n $('.textual_coding_button').addClass('active');\n}\n\nfunction toggleVisualCoding () {\n $('.ivprog_textual_panel').addClass('loading');\n $('.ivprog_textual_panel').css('display', 'none');\n $('.ivprog_visual_panel').css('display', 'block');\n\n $('.textual_coding_button').removeClass('active');\n $('.visual_coding_button').addClass('active');\n}\n\nfunction removeParameter (function_obj, parameter_obj, parameter_container) {\n var index = function_obj.parameters_list.indexOf(parameter_obj);\n if (index > -1) {\n window.insertContext = true;\n function_obj.parameters_list.splice(index, 1);\n }\n $(parameter_container).fadeOut();\n}\n\nfunction updateParameterType (parameter_obj, new_type, new_dimensions = 0) {\n parameter_obj.type = new_type;\n parameter_obj.dimensions = new_dimensions;\n\n if (new_dimensions > 0) {\n parameter_obj.rows = new_dimensions;\n parameter_obj.columns = 2;\n }\n\n}\n\nfunction renderParameter (function_obj, parameter_obj, function_container) {\n var ret = \"\";\n\n ret += '<div class=\"ui label function_name_parameter pink\"><i class=\"ui icon ellipsis vertical inverted\"></i>';\n\n ret += '<div class=\"ui dropdown parameter_type\">';\n\n if (parameter_obj.dimensions > 0) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(parameter_obj.type);\n if (parameter_obj.dimensions == 1) {\n ret += ' [ ] ';\n } else {\n ret += ' [ ] [ ] ';\n }\n ret += '</div>';\n } else {\n ret += '<div class=\"text\">'+LocalizedStrings.getUI(parameter_obj.type)+'</div>';\n }\n\n ret += '<div class=\"menu\">';\n\n \n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n ret += '<div class=\"item ' + (parameter_obj.type == tm.toLowerCase() ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(tm.toLowerCase())+'</div>';\n }\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n ret += '<div class=\"item\">'\n + '<i class=\"dropdown icon\"></i>'\n + LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())\n + '<div class=\"menu\">'\n + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\">[ ]</div>'\n + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\">[ ] [ ] </div>'\n + '</div>'\n + '</div>'; \n }\n\n ret += '</div></div>';\n\n ret += '<div class=\"parameter_div_edit\"><span class=\"span_name_parameter label_enable_name_parameter\">'+parameter_obj.name+'</span></div> ';\n\n ret += ' <i class=\"yellow inverted icon times remove_parameter\"></i></div>';\n\n ret = $(ret);\n \n function_container.find('.container_parameters_list').append(ret);\n\n ret.find('.remove_parameter').on('click', function(e){\n removeParameter(function_obj, parameter_obj, ret);\n });\n \n ret.find('.ui.dropdown.parameter_type').dropdown({\n onChange: function(value, text, $selectedItem) {\n if ($selectedItem.data('dimensions')) {\n updateParameterType(parameter_obj, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n } else {\n updateParameterType(parameter_obj, Types[$selectedItem.data('type')]);\n }\n },\n selectOnKeydown: false\n });\n\n ret.find('.label_enable_name_parameter').on('click', function(e){\n enableNameParameterUpdate(parameter_obj, ret, function_obj);\n });\n\n return ret;\n}\n\nfunction updateParameterName (parameter_var, new_name, parameter_obj_dom, function_obj) {\n \n if (parameter_var.name == new_name) {\n return;\n }\n\n if (isValidIdentifier(new_name)) {\n if (variableNameAlreadyExists(new_name, function_obj)) {\n Utils.renderErrorMessage(parameter_obj_dom.find('.parameter_div_edit'), LocalizedStrings.getUI('inform_valid_variable_duplicated'));\n } else {\n parameter_var.name = new_name;\n }\n } else {\n Utils.renderErrorMessage(parameter_obj_dom.find('.parameter_div_edit'), LocalizedStrings.getUI('inform_valid_name'));\n }\n}\n\nfunction variableNameAlreadyExists (name_var, function_obj) {\n\n if (function_obj.parameters_list) {\n for (var i = 0; i < function_obj.parameters_list.length; i++) {\n if (function_obj.parameters_list[i].name == name_var) {\n return true;\n }\n }\n }\n\n if (function_obj.variables_list) {\n for (var i = 0; i < function_obj.variables_list.length; i++) {\n if (function_obj.variables_list[i].name == name_var) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction updateFunctionName (function_var, new_name, function_obj_dom) {\n \n if (function_var.name == new_name) {\n return;\n }\n \n if (isValidIdentifier(new_name)) {\n if (functionNameAlreadyExists(new_name)) {\n Utils.renderErrorMessage(function_obj_dom.find('.function_name_div'), LocalizedStrings.getUI('inform_valid_name_duplicated'));\n } else {\n function_var.name = new_name;\n }\n } else {\n Utils.renderErrorMessage(function_obj_dom.find('.function_name_div'), LocalizedStrings.getUI('inform_valid_name'));\n }\n}\n\nfunction functionNameAlreadyExists (function_name) {\n for (var i = 0; i < window.program_obj.functions.length; i++) {\n if (window.program_obj.functions[i].name == function_name) {\n return true;\n }\n }\n return false;\n}\n\nfunction isValidIdentifier (identifier_str) {\n return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier_str);\n}\n\nvar opened_name_parameter = false;\nvar opened_input_parameter = null;\nfunction enableNameParameterUpdate (parameter_obj, parent_node, function_obj) {\n if (opened_name_parameter) {\n opened_input_parameter.focus();\n return;\n }\n opened_name_parameter = true;\n parent_node = $(parent_node);\n\n var input_field;\n\n parent_node.find('.span_name_parameter').text('');\n input_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+parameter_obj.name+\"' />\" );\n input_field.insertBefore(parent_node.find('.span_name_parameter'));\n\n input_field.on('input', function() {\n var inputWidth = input_field.textWidth()+10;\n opened_input_parameter = input_field;\n input_field.focus();\n\n var tmpStr = input_field.val();\n input_field.val('');\n input_field.val(tmpStr);\n\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n input_field.focusout(function() {\n /// update array:\n if (input_field.val().trim()) {\n updateParameterName(parameter_obj, input_field.val().trim(), parent_node, function_obj);\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n }\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n });\n\n input_field.on('keydown', function(e) {\n var code = e.keyCode || e.which;\n if(code == 13) {\n if (input_field.val().trim()) {\n updateParameterName(parameter_obj, input_field.val().trim(), parent_node, function_obj);\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n }\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n\n }\n if(code == 27) {\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n }\n });\n input_field.select();\n}\n\nvar opened_name_function = false;\nvar opened_input = null;\nvar previousPadding = null;\nfunction enableNameFunctionUpdate (function_obj, parent_node) {\n if (opened_name_function) {\n opened_input.focus();\n return;\n }\n parent_node = $(parent_node);\n parent_node.find('.span_name_function').text('');\n var input_field;\n if (!previousPadding) {\n previousPadding = parent_node.find('.span_name_function').css('padding-left');\n }\n parent_node.find('.span_name_function').css('padding-left', '0');\n parent_node.find('.span_name_function').css('padding-right', '0');\n \n input_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+function_obj.name+\"' />\" );\n input_field.insertBefore(parent_node.find('.span_name_function'));\n\n input_field.on('input', function() {\n var inputWidth = input_field.textWidth()+10;\n opened_input = input_field;\n input_field.focus();\n\n var tmpStr = input_field.val();\n input_field.val('');\n input_field.val(tmpStr);\n\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n input_field.focusout(function() {\n /// update array:\n if (input_field.val().trim()) {\n updateFunctionName(function_obj, input_field.val().trim(), parent_node);\n }\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n });\n\n input_field.on('keydown', function(e) {\n var code = e.keyCode || e.which;\n if(code == 13) {\n if (input_field.val().trim()) {\n updateFunctionName(function_obj, input_field.val().trim(), parent_node);\n }\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n }\n if(code == 27) {\n\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n }\n });\n input_field.select();\n \n}","import $ from 'jquery';\nimport jQuery from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as Utils from './utils';\n\n\nwindow.jQuery = jQuery;\n\nimport '../semantic/semantic.min.js';\n\nvar counter_new_globals = 0;\n\nexport function addGlobal (program, is_from_click = false) {\n\n\tvar new_global = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI('new_global') + '_' + counter_new_globals, 1);\n\tcounter_new_globals ++;\n\n\tprogram.addGlobal(new_global);\n\n\tvar newe = renderGlobal(new_global);\n\n\tif (is_from_click) {\n\t\tnewe.css('display', 'none');\n\t\tnewe.fadeIn();\n\t}\n\n}\n\nfunction toggleConstant (global_var) {\n\tglobal_var.is_constant = !global_var.is_constant;\n}\n\nfunction updateName (global_var, new_name, global_obj_dom) {\n\n\tif (global_var.name == new_name) {\n\t\treturn;\n\t}\n\n\tif (isValidIdentifier(new_name)) {\n\t\tif (globalNameAlreadyExists(new_name)) {\n\t\t\tUtils.renderErrorMessage(global_obj_dom.find('.editing_name_var'), LocalizedStrings.getUI('inform_valid_global_duplicated'));\n\t\t} else {\n\t\t\tglobal_var.name = new_name;\n\t\t}\n\t} else {\n\t\tUtils.renderErrorMessage(global_obj_dom.find('.editing_name_var'), LocalizedStrings.getUI('inform_valid_name'));\n\t}\n}\n\nfunction globalNameAlreadyExists (global_name) {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n if (window.program_obj.globals[i].name == global_name) {\n return true;\n }\n }\n return false;\n}\n\nfunction isValidIdentifier (identifier_str) {\n\treturn /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier_str);\n}\n\nfunction updateType (global_var, new_type, new_dimensions = 0) {\n\tglobal_var.type = new_type;\n\tglobal_var.dimensions = new_dimensions;\n\n\tif (new_dimensions > 0) {\n\t\tglobal_var.rows = new_dimensions;\n\t\tglobal_var.columns = 2;\n\t}\n\n\tupdateInitialValues(global_var);\n}\n\nfunction removeGlobal (global_var, global_container) {\n\tvar index = window.program_obj.globals.indexOf(global_var);\n\tif (index > -1) {\n\t\twindow.insertContext = true;\n\t window.program_obj.globals.splice(index, 1);\n\t}\n\tglobal_container.children().off();\n\tglobal_container.off();\n\tglobal_container.fadeOut();\n}\n\nfunction updateInitialValues (global_var) {\n\tif (global_var.type == Types.INTEGER) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = 1;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [1, 1];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[1, 1], [1, 1]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.REAL) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = 1.0;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [1.0, 1.0];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[1.0, 1.0], [1.0, 1.0]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.TEXT) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = LocalizedStrings.getUI('text_start');\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')], \n\t\t\t\t\t\t\t\t\t[LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = true;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [true, true];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[true, true], [true, true]];\n\t\t}\n\t}\n}\n\nfunction alternateBooleanGlobalValue (global_var, value_container) {\n\tglobal_var.value = !global_var.value;\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(global_var.value));\n}\n\nfunction alternateBooleanGlobalVectorValue (global_var, index, value_container) {\n\tglobal_var.value[index] = !global_var.value[index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(global_var.value[index]));\n}\n\nfunction removeGlobalColumnVector (global_var) {\n\tif (global_var.columns == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.columns --;\n\tglobal_var.value.splice(global_var.value.length - 1, 1);\n}\n\nfunction addGlobalColumnVector (global_var) {\n\tglobal_var.columns ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tglobal_var.value.push(1);\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tglobal_var.value.push(1.0);\n\t}\n\tif (global_var.type == Types.TEXT) {\n\t\tglobal_var.value.push(LocalizedStrings.getUI('text_start'));\n\t}\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tglobal_var.value.push(true);\n\t}\n}\n\nfunction removeColumnGlobalMatrix (global_var) {\n\tif (global_var.columns == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.columns --;\n\n\tfor (var i = 0; i < global_var.rows; i++) {\n\t\tglobal_var.value[i].splice(global_var.value[i].length - 1, 1);\n\t}\n}\n\nfunction addColumnGlobalMatrix (global_var) {\n\tglobal_var.columns ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(1);\n\t\t}\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(1.0);\n\t\t}\n\t}\n\tif (global_var.type == Types.TEXT) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(LocalizedStrings.getUI('text_start'));\n\t\t}\n\t}\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(true);\n\t\t}\n\t}\n}\n\nfunction removeLineGlobalMatrix (global_var) {\n\tif (global_var.rows == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.rows --;\n\tglobal_var.value.splice(global_var.value.length - 1, 1);\n}\n\nfunction addLineGlobalMatrix (global_var) {\n\tglobal_var.rows ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tvar n_l = [];\n\t\tfor (var i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(1);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(1.0);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\n\tif (global_var.type == Types.TEXT) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('text_start'));\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(true);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n}\n\nfunction alternateBooleanGlobalMatrixValue (global_var, row, index, value_container) {\n\tglobal_var.value[row][index] = !global_var.value[row][index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(global_var.value[row][index]));\n}\n\nfunction renderValues (global_var, global_container) {\n\n\tvar ret = \"\";\n\tvar j = 0;\n\n\tif (global_var.dimensions == 0) {\n\t\tif (global_var.type == Types.REAL) {\n\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+global_var.value.toFixed(1)+'</span> </div> ';\n\t\t} else {\n\t\t\tif (global_var.type == Types.BOOLEAN) {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable boolean_simple_type\">'+LocalizedStrings.getUI(global_var.value)+'</span> </div> ';\n\t\t\t} else {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+global_var.value+'</span> </div> ';\n\t\t\t}\n\t\t}\n\t} else {\n\t\tret += '<table class=\"tabela_var\">';\n\n\t\tif (global_var.dimensions == 1) {\n\t\t\tret += '<tr>';\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+global_var.value[k].toFixed(1)+'</span></td>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n\t\t\t\t\tif (global_var.type == Types.BOOLEAN) {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_vector_var\" data-index=\"'+k+'\">'+LocalizedStrings.getUI(global_var.value[k])+'</span></td>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+global_var.value[k]+'</span>'+'</td>';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tret += '</tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_vector_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_vector_column\"></i></div>';\n\t\t}\n\n\t\tif (global_var.dimensions == 2) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tfor (var l = 0; l < global_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n \t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+global_var.value[l][k].toFixed(1)+'</span>'+'</td>';\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var l = 0; l < global_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n \t\t\t\t\tif (global_var.type == Types.BOOLEAN) { \n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+LocalizedStrings.getUI(global_var.value[l][k])+'</span></td>';\n \t\t\t\t\t} else {\n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+global_var.value[l][k]+'</span></td>';\n \t\t\t\t\t}\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.rows == 0) {\n\t\t\t\tret += '<tr><td></td></tr>';\n\t\t\t}\n\t\t\tret += '<tr><td colspan=\"'+global_var.columns+'\" class=\"tr_manage_lines\"><i class=\"ui icon minus square outline remove_global_matrix_line\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_line\"></i></td></tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_matrix_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_column\"></i></div>';\n\t\t}\n\t\t\n\t}\n\n\tglobal_container.find( \".div_valor_var\" ).html('');\n\n\tret = $(ret);\n\n\tret.find('.span_value_variable').data('associatedOject', global_var);\n\n\tret.find( \".boolean_simple_type\" ).on('click', function(e){\n\t\talternateBooleanGlobalValue(global_var, this.parentNode);\n\t});\n\tret.find( \".simple_var\" ).on('click', function(e){\n\t\tenableGlobalValueUpdate(global_var, this.parentNode);\n\t});\n\n\tret.find( \".boolean_vector_var\" ).on('click', function(e){\n\t\talternateBooleanGlobalVectorValue(global_var, $(this).data('index'), this.parentNode);\n\t});\n\tret.find( \".vector_var\" ).on('click', function(e){\n\t\tenableGlobalVectorValueUpdate(global_var, $(this).data('index'), this.parentNode);\n\t});\n\tret.find( \".remove_global_vector_column\" ).on('click', function(e){\n\t\tremoveGlobalColumnVector(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_vector_column\" ).on('click', function(e){\n\t\taddGlobalColumnVector(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".remove_global_matrix_column\" ).on('click', function(e){\n\t\tremoveColumnGlobalMatrix(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_matrix_column\" ).on('click', function(e){\n\t\taddColumnGlobalMatrix(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".remove_global_matrix_line\" ).on('click', function(e){\n\t\tremoveLineGlobalMatrix(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_matrix_line\" ).on('click', function(e){\n\t\taddLineGlobalMatrix(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".boolean_matrix_var\" ).on('click', function(e){\n\t\talternateBooleanGlobalMatrixValue(global_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t});\n\tret.find( \".matrix_var\" ).on('click', function(e){\n\t\tenableGlobalMatrixValueUpdate(global_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t});\n\tglobal_container.find( \".div_valor_var\" ).append(ret);\n\n\n\tupdateColumnsAndRowsText(global_container, global_var);\n\n}\n\nfunction addHandlers (global_container) {\n\tvar global_var = global_container.data('associatedOject'); \n\t// Manage constant option:\n\tglobal_container.find( \".alternate_constant\" ).on('click', function(e){\n\t\ttoggleConstant(global_var);\n\n\t\t$( this ).removeClass( \"on off\" );\n\t\tif (global_var.is_constant) {\n\t\t\t$( this ).addClass( \"on\" );\n\t\t} else {\n\t\t\t$( this ).addClass( \"off\" );\n\t\t}\n\t});\n\n\t// Manage global name: \n\tglobal_container.find( \".enable_edit_name_parameter\" ).on('click', function(e){\n\t\tenableNameUpdate(global_container);\n\t});\n\n\t// Menu to change type:\n\tglobal_container.find('.ui.dropdown.global_type').dropdown({\n\t onChange: function(value, text, $selectedItem) {\n\t \tif ($selectedItem.data('dimensions')) {\n\t \t\tupdateType(global_var, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n\t \t} else {\n\t \t\tupdateType(global_var, Types[$selectedItem.data('type')]);\n\t \t}\n\n\t \trenderValues(global_var, global_container);\n\n\t },\n\t selectOnKeydown: false\n\t});\n\n\t// Remove global: \n\tglobal_container.find( \".remove_global\" ).on('click', function(e){\n\t\tremoveGlobal(global_var, global_container);\n\t});\n\n}\n\nfunction updateColumnsAndRowsText (global_container, global_var) {\n\tvar prev = global_container.find('.text').text().split('[');\n\tif (prev.length == 2) {\n\t\tvar ff = prev[0] + '[ ' + global_var.columns + ' ] ';\n\t\tglobal_container.find('.text').empty();\n\t\tglobal_container.find('.text').text(ff);\n\t}\n\tif (prev.length == 3) {\n\t\tvar ff = prev[0] + '[ ' + global_var.columns + ' ] [ ' + global_var.rows + ' ] ';\n\t\tglobal_container.find('.text').empty();\n\t\tglobal_container.find('.text').text(ff);\n\t}\n}\n\nexport function renderGlobal (global_var) {\n\n\tvar element = '<div class=\"ui label global_container pink\"><i class=\"ui icon ellipsis vertical inverted\"></i><div class=\"global_const\">const: ';\n\n\telement += '<i class=\"ui icon toggle '+(global_var.is_constant?\"on\":\"off\")+' alternate_constant\"></i></div>';\n \t\n \telement += '<div class=\"ui dropdown global_type\">';\n\n \tif (global_var.dimensions > 0) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('vector')+ ':' + LocalizedStrings.getUI(global_var.type);\n \t\tfor (var i = 0; i < global_var.dimensions; i ++) {\n \t\t\telement += ' [ <span class=\"dimensions_'+i+'\"></span> ] ';\n \t\t}\n \t\telement += '</div>';\n \t} else {\n \t\telement += '<div class=\"text\">' + LocalizedStrings.getUI(global_var.type.toLowerCase()) + '</div>';\n \t}\n\telement += '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item ' + (global_var.type == tm.toLowerCase() ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(tm.toLowerCase())+'</div>';\n\t}\n\n \tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item\">'\n\t \t+ '<i class=\"dropdown icon\"></i>'\n\t \t+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())\n\t \t+ '<div class=\"menu\">'\n\t\t + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\">[ ]</div>'\n\t\t + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\">[ ] [ ] </div>'\n\t \t+ '</div>'\n\t \t+ '</div>';\t\n \t}\n\n element += '</div></div> <div class=\"editing_name_var\"> <span class=\"span_name_variable enable_edit_name_parameter\">'+global_var.name+'</span> </div> <span class=\"character_equals\"> = </span> ';\n\n\telement += '<div class=\"ui div_valor_var\">'+global_var.value+'</div>'; \n\n\telement += ' <i class=\"yellow inverted icon times remove_global\"></i></div>';\n\n\tvar complete_element = $(element);\n\n\tcomplete_element.data('associatedOject', global_var);\n\n\t$('.list_globals').append(complete_element);\n\n\taddHandlers(complete_element);\n\n\trenderValues(global_var, complete_element);\n\n\tif (global_var.dimensions == 1) {\n\t\tcomplete_element.find('.dimensions_0').text(global_var.columns);\n\t}\n\tif (global_var.dimensions == 2) {\n\t\tcomplete_element.find('.dimensions_0').text(global_var.columns);\n\t\tcomplete_element.find('.dimensions_1').text(global_var.rows);\n\t}\n\n\treturn complete_element;\n}\n\nvar opened_name_value_matrix_global_v = false;\nvar opened_input_value_matrix_global_v = null;\nfunction enableGlobalMatrixValueUpdate (global_var, row, index, parent_node) {\n\tif (opened_name_value_matrix_global_v) {\n\t\topened_input_value_matrix_global_v.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_matrix_global_v = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[row][index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[row][index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_matrix_global_v = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value[row][index] = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value[row][index] = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_matrix_global_v = false;\n\t\topened_input_value_matrix_global_v = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value[row][index] = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value[row][index] = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t});\n\tinput_field.select();\n}\n\nvar opened_name_value_global_var = false;\nvar opened_input_value_global_ar = null;\nfunction enableGlobalValueUpdate (global_var, parent_node) {\n\tif (opened_name_value_global_var) {\n\t\topened_input_value_global_ar.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_global_var = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value.toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_global_ar = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value = parseFloat(input_field.val().trim());\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t\n\t\t\t}\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_global_var = false;\n\t\topened_input_value_global_ar = false;\n\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value = parseFloat(input_field.val().trim());\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\n\nvar opened_name_global = false;\nvar opened_input_global = null;\nfunction enableNameUpdate (global_container) {\n\n\tvar global_var = global_container.data('associatedOject'); \n\n\tif (opened_name_global) {\n\t\topened_input_global.focus();\n\t\treturn;\n\t}\n\topened_name_global = true;\n\n\tglobal_container.find('.span_name_variable').text('');\n\tvar input_name = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+global_var.name+\"' />\" );\n\tinput_name.insertBefore(global_container.find('.span_name_variable'));\n\n\tinput_name.on('input', function() {\n\t var inputWidth = input_name.textWidth()+10;\n\t opened_input_global = input_name;\n\t opened_input_global.focus();\n\n\t opened_input_global.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_name.focusout(function() {\n\t\t/// update array:\n\t\tif (input_name.val().trim().length > 0) {\n\t\t\tupdateName(global_var, input_name.val().trim(), global_container);\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t} else {\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t}\n\t\tinput_name.off();\n\t\tinput_name.remove();\n\n\t\t/// update elements:\n\t\topened_name_global = false;\n\t\topened_input_global = false;\n\t});\n\n\tinput_name.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_name.val().trim()) {\n\t\t\t\tupdateName(global_var, input_name.val().trim(), global_container);\n\t\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\t} else {\n\t\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\t}\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t\tif(code == 27) {\n\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t});\n\n\tinput_name.select();\n\t\n}\n\n\nvar opened_name_value_vector_global_ = false;\nvar opened_input_value_vector_global_ = null;\nfunction enableGlobalVectorValueUpdate (global_var, index, parent_node) {\n\tif (opened_name_value_vector_global_) {\n\t\topened_input_value_vector_global_.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_vector_global_ = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_vector_global_ = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t} else {\n\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value[index] = input_field.val().trim();\n\t\t\t\t}\n\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\n\t\t\t}\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value[index] = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_vector_global_ = false;\n\t\topened_input_value_vector_global_ = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t\t} else {\n\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value[index] = input_field.val().trim();\n\t\t\t\t\t}\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value[index] = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\n\n$.fn.textWidth = function(text, font) {\n \n if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body);\n \n $.fn.textWidth.fakeEl.text(text || this.val() || this.text() || this.attr('placeholder')).css('font', font || this.css('font'));\n \n return $.fn.textWidth.fakeEl.width();\n};","import * as VariableValueMenuManagement from './commands/variable_value_menu';\nimport { Types } from './types';\nimport WatchJS from 'melanke-watchjs';\nimport * as AlgorithmManagement from './algorithm';\n\nexport const COMMAND_TYPES = Object.freeze({function:\"function\", comment:\"comment\", reader:\"reader\", writer:\"writer\", attribution:\"attribution\", iftrue:\"iftrue\",\n repeatNtimes:\"repeatNtimes\", whiletrue:\"whiletrue\", dowhiletrue:\"dowhiletrue\", switch:\"switch\", switchcase:\"switchcase\", functioncall:\"functioncall\", break:\"break\",\n return:\"return\"});\n\nexport const ARITHMETIC_TYPES = Object.freeze({plus:\"plus\", minus:\"minus\", multiplication:\"multiplication\", division:\"division\", module:\"module\", none:\"none\"});\n\nexport const EXPRESSION_ELEMENTS = Object.freeze({exp_op_exp:\"exp_op_exp\", op_exp:\"op_exp\", par_exp_par:\"par_exp_par\", start_point:\"start_point\"});\n\nexport const EXPRESSION_TYPES = Object.freeze({exp_conditional:\"exp_conditional\", exp_logic:\"exp_logic\", exp_arithmetic:\"exp_arithmetic\"});\n\nexport const ARITHMETIC_COMPARISON = Object.freeze({greater_than:\"greater_than\", less_than:\"less_than\", equals_to:\"equals_to\", not_equals_to:\"not_equals_to\", greater_than_or_equals_to:\"greater_than_or_equals_to\", less_than_or_equals_to:\"less_than_or_equals_to\"});\n\nexport const LOGIC_COMPARISON = Object.freeze({equals_to:\"equals_to\", not_equals_to:\"not_equals_to\", and:\"and\", or:\"or\"});\n\nexport const SYSTEM_FUNCTIONS_CATEGORIES = Object.freeze({math:\"math\", text:\"text_t\", arrangement:\"arrangement\", conversion:\"conversion\"});\n\nexport class Variable {\n\n constructor (type, name, value, dimensions = 0, is_constant = false, rows = 0, columns = 0) {\n this.type = type;\n this.name = name;\n this.value = value;\n this.dimensions = dimensions;\n this.is_constant = is_constant;\n this.rows = rows;\n this.columns = columns;\n }\n}\n\nexport class Function {\n\n constructor (name, return_type = Types.VOID, return_dimensions = 0, parameters_list = [], is_main = false, is_hidden = false, variables_list = [], function_comment = null, commands = []) {\n this.type = COMMAND_TYPES.function;\n this.name = name;\n this.return_type = return_type;\n this.return_dimensions = return_dimensions;\n this.parameters_list = parameters_list;\n this.is_main = is_main;\n this.is_hidden = is_hidden;\n this.variables_list = variables_list;\n this.function_comment = function_comment;\n this.commands = commands;\n }\n}\n\nexport class SystemFunction {\n\n constructor (identifier, return_type, return_dimensions, parameters_list, function_comment = null, category) {\n this.type = COMMAND_TYPES.function;\n this.identifier = identifier;\n this.return_type = return_type;\n this.return_dimensions = return_dimensions;\n this.parameters_list = parameters_list;\n this.function_comment = function_comment;\n this.category = category;\n }\n}\n\nexport class Comment {\n \n constructor (comment_text) {\n this.type = COMMAND_TYPES.comment;\n this.comment_text = comment_text;\n }\n}\n\nexport class Break {\n \n constructor () {\n this.type = COMMAND_TYPES.break;\n }\n}\n\nexport class Reader {\n \n constructor (variable_value_menu = new VariableValueMenu()) {\n this.type = COMMAND_TYPES.reader;\n this.variable_value_menu = variable_value_menu;\n }\n}\n\nexport class Writer {\n\n constructor (content) {\n this.type = COMMAND_TYPES.writer;\n this.content = content;\n }\n}\n\nexport class Attribution {\n\n constructor (variable, expression = []) {\n this.type = COMMAND_TYPES.attribution;\n this.variable = variable;\n this.expression = expression;\n }\n}\n\nexport class ExpressionElement {\n\n constructor (type_exp, itens = []) {\n this.type_exp = type_exp;\n this.itens = itens;\n }\n}\n\nexport class ConditionalExpression {\n\n constructor (expression) {\n this.type = EXPRESSION_TYPES.exp_conditional;\n this.expression = expression;\n }\n}\n\nexport class LogicExpression {\n\n constructor (has_neg, first_operand, second_operand, operator) {\n this.type = EXPRESSION_TYPES.exp_logic;\n this.has_neg = has_neg;\n this.first_operand = first_operand;\n this.second_operand = second_operand;\n this.operator = operator;\n }\n}\n\nexport class ArithmeticExpression {\n\n constructor (first_operand, second_operand, operator) {\n this.type = EXPRESSION_TYPES.exp_arithmetic;\n this.first_operand = first_operand;\n this.second_operand = second_operand;\n this.operator = operator;\n }\n}\n\nexport class IfTrue {\n\n constructor (expression, commands_block, commands_else) {\n this.type = COMMAND_TYPES.iftrue;\n this.expression = expression;\n this.commands_block = commands_block;\n this.commands_else = commands_else;\n }\n}\n\nexport class RepeatNTimes {\n\n constructor (var_attribution, var_incrementation, expression1, expression2, expression3, commands_block) {\n this.type = COMMAND_TYPES.repeatNtimes;\n this.var_attribution = var_attribution;\n this.var_incrementation = var_incrementation;\n this.expression1 = expression1;\n this.expression2 = expression2;\n this.expression3 = expression3;\n this.commands_block = commands_block;\n }\n}\n\nexport class WhileTrue {\n\n constructor (expression, commands_block) {\n this.type = COMMAND_TYPES.whiletrue;\n this.expression = expression;\n this.commands_block = commands_block;\n }\n}\n\nexport class DoWhileTrue {\n\n constructor (expression, commands_block) {\n this.type = COMMAND_TYPES.dowhiletrue;\n this.expression = expression;\n this.commands_block = commands_block;\n }\n}\n\nexport class Switch {\n\n constructor (variable, cases = []) {\n this.type = COMMAND_TYPES.switch;\n this.variable = variable;\n this.cases = cases;\n }\n}\n\nexport class Return {\n\n constructor (variable_value_menu) {\n this.type = COMMAND_TYPES.return;\n this.variable_value_menu = variable_value_menu;\n } \n}\n\nexport class SwitchCase {\n\n constructor (variable_value_menu, commands_block = []) {\n this.type = COMMAND_TYPES.switchcase;\n this.variable_value_menu = variable_value_menu;\n this.commands_block = commands_block;\n } \n}\n\nexport class FunctionCall {\n\n constructor (function_called, parameters_list) {\n this.type = COMMAND_TYPES.functioncall;\n this.function_called = function_called;\n this.parameters_list = parameters_list;\n }\n}\n\nexport class VariableValueMenu {\n\n constructor (variable_and_value = 7, content = null, row = null, column = null, include_constant = true, dimensions = 0) {\n this.type = \"var_value\";\n this.variable_and_value = variable_and_value;\n this.content = content;\n this.row = row;\n this.column = column;\n this.include_constant = include_constant;\n this.dimensions = dimensions;\n }\n}\n\nexport class FunctionCallMenu {\n \n constructor (function_called = null, parameters_list = []) {\n this.type = \"function_call\";\n this.function_called = function_called;\n this.parameters_list = parameters_list;\n }\n}\n\nexport class Program {\n\n constructor () {\n this.functions = [];\n this.globals = [];\n }\n\n addFunction (function_to_add) {\n\n WatchJS.watch(function_to_add.parameters_list, function(){\n if (window.insertContext) {\n setTimeout(function(){ AlgorithmManagement.renderAlgorithm(); }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n }, 1);\n\n WatchJS.watch(function_to_add.variables_list, function(){\n if (window.insertContext) {\n setTimeout(function(){ AlgorithmManagement.renderAlgorithm(); }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n }, 1);\n\n this.functions.push(function_to_add);\n }\n\n addVariable (function_to_receive, variable) {\n if (this.functions[function_to_receive].variable === null) {\n this.functions[function_to_receive].variables_list = [];\n }\n this.functions[function_to_receive].variables_list.push(variable);\n }\n\n addGlobal (variable) {\n this.globals.push(variable);\n }\n}\n","export const Types = Object.freeze({\n INTEGER: \"integer\",\n REAL: \"real\",\n TEXT: \"text\",\n BOOLEAN: \"boolean\",\n VOID: \"void\"\n});","\nimport $ from 'jquery';\n\nexport function renderErrorMessage (dom_obj_target, message_text) {\n\n\tdom_obj_target.popup({\n\t\thtml : '<i class=\"ui icon inverted exclamation triangle yellow\"></i>' + message_text,\n\t\ttransition : \"fade up\",\n\t\ton : 'click',\n \t\tclosable : true,\n \t\tmovePopup : true,\n \t\tboundary : window,\n \t\tpreserve : false,\n \t\ttarget : false,\n\t\tclassName : {\n\t\t popup : 'ui popup invalid-identifier'\n\t\t},\n\t\tonHidden : function($module) {\n\t\t\tdom_obj_target.popup('destroy');\n\t\t}\n\n\t}).popup('toggle');\n\n}","import $ from 'jquery';\nimport jQuery from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as Utils from './utils';\n\nwindow.jQuery = jQuery;\n\nimport '../semantic/semantic.min.js';\n\nvar counter_new_variables = 0;\n\nexport function addVariable (function_obj, function_container, is_in_click = false) {\n\tvar new_var = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI('new_variable') + '_' + counter_new_variables, 1);\n\tif (function_obj.variables_list == null) {\n\t\tfunction_obj.variables_list = [];\n\t}\n\tfunction_obj.variables_list.push(new_var);\n\n\tcounter_new_variables ++;\n\n\tvar newe = renderVariable(function_container, new_var, function_obj);\n\n\tif (is_in_click) {\n\t\tnewe.css('display', 'none');\n\t\tnewe.fadeIn();\n\t}\n}\n\nfunction updateName (variable_obj, new_name, variable_obj_dom, function_obj) {\n\n\tif (variable_obj.name == new_name) {\n\t\treturn;\n\t}\n\n\tif (isValidIdentifier(new_name)) {\n\t\tif (variableNameAlreadyExists(new_name, function_obj)) {\n\t\t\tUtils.renderErrorMessage(variable_obj_dom.find('.editing_name_var'), LocalizedStrings.getUI('inform_valid_variable_duplicated'));\n\t\t} else {\n\t\t\tvariable_obj.name = new_name;\n\t\t}\n\t} else {\n\t\tUtils.renderErrorMessage(variable_obj_dom.find('.editing_name_var'), LocalizedStrings.getUI('inform_valid_name'));\n\t}\n}\n\nfunction variableNameAlreadyExists (name_var, function_obj) {\n\n\tif (function_obj.parameters_list) {\n\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\tif (function_obj.parameters_list[i].name == name_var) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (function_obj.variables_list) {\n\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\tif (function_obj.variables_list[i].name == name_var) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction isValidIdentifier (identifier_str) {\n\treturn /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier_str);\n}\n\nfunction removeVariable (variable_obj, variable_container) {\n\tvar function_associated = variable_container.data('associatedFunction');\n\n\tvar index = function_associated.variables_list.indexOf(variable_obj);\n\tif (index > -1) {\n\t window.insertContext = true;\n\t delete function_associated.variables_list[index];\n\t function_associated.variables_list.splice(index, 1);\n\t}\n\tvariable_container.children().off();\n\tvariable_container.off();\n\tvariable_container.fadeOut();\n}\n\nfunction updateType (variable_obj, new_type, new_dimensions = 0) {\n\tvariable_obj.type = new_type;\n\tvariable_obj.dimensions = new_dimensions;\n\n\tif (new_dimensions > 0) {\n\t\tvariable_obj.rows = new_dimensions;\n\t\tvariable_obj.columns = 2;\n\t}\n\n\tupdateInitialValues(variable_obj);\n}\n\nfunction addHandlers (variable_obj, variable_container, function_obj) {\n\n\t// Manage variable name: \n\tvariable_container.find( \".enable_edit_name_variable\" ).on('click', function(e){\n\t\tenableNameUpdate(variable_obj, variable_container, function_obj);\n\t});\n\n\t// Menu to change type:\n\tvariable_container.find('.ui.dropdown.variable_type').dropdown({\n\t onChange: function(value, text, $selectedItem) {\n\t \tif ($selectedItem.data('dimensions')) {\n\t \t\tupdateType(variable_obj, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n\t \t} else {\n\t \t\tupdateType(variable_obj, Types[$selectedItem.data('type')]);\n\t \t}\n\n\t \trenderValues(variable_obj, variable_container);\n\t },\n\t selectOnKeydown: false\n\t});\n\n\t// Remove variable: \n\tvariable_container.find( \".remove_variable\" ).on('click', function(e){\n\t\tremoveVariable(variable_obj, variable_container);\n\t});\n\n}\n\n\nexport function renderVariable (function_container, new_var, function_obj) {\n\n\tvar element = '<div class=\"ui label variable_container pink\"><i class=\"ui icon ellipsis vertical inverted\"></i>';\n\n\telement += '<div class=\"ui dropdown variable_type\">';\n\n \tif (new_var.dimensions > 0) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('vector') + ':' + LocalizedStrings.getUI(new_var.type.toLowerCase());\n \t\tfor (var i = 0; i < new_var.dimensions; i ++) {\n \t\t\telement += ' [ ] ';\n \t\t}\n \t\telement += '</div>';\n \t} else {\n \t\telement += '<div class=\"text\">' + LocalizedStrings.getUI(new_var.type.toLowerCase()) + '</div>';\n \t}\n\telement += '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item ' + (new_var.type == tm.toLowerCase() ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(tm.toLowerCase())+'</div>';\n\t}\n\n \tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item\">'\n \t\t\t+ '<i class=\"dropdown icon\"></i>'\n\t \t+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())\n\t \t+ '<div class=\"menu\">'\n\t\t + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\">[ ]</div>'\n\t\t + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\">[ ] [ ] </div>'\n\t \t+ '</div>'\n\t \t+ '</div>';\t\n \t}\n\n element += '</div></div> ';\n\n element += '<div class=\"editing_name_var\"><span class=\"span_name_variable enable_edit_name_variable\">'+new_var.name+'</span> </div>';\n\n\telement += ' <span class=\"character_equals\"> = </span> <div class=\"ui div_valor_var\">'+new_var.value+'</div>'; \n\n\telement += ' <i class=\"yellow inverted icon times remove_variable\"></i></div>';\n\n\telement = $(element);\n\n\telement.data('associatedFunction', function_obj);\n\n\tfunction_container.find('.variables_list_div').append(element);\n\n\taddHandlers(new_var, element, function_obj);\n\n\trenderValues(new_var, element);\n\n\treturn element;\n}\n\nfunction updateColumnsAndRowsText (variable_container, variable_var) {\n\tvar prev = variable_container.find('.text').text().split('[');\n\tif (prev.length == 2) {\n\t\tvar ff = prev[0] + '[ ' + variable_var.columns + ' ] ';\n\t\tvariable_container.find('.text').empty();\n\t\tvariable_container.find('.text').text(ff);\n\t}\n\tif (prev.length == 3) {\n\t\tvar ff = prev[0] + '[ ' + variable_var.columns + ' ] [ ' + variable_var.rows + ' ] ';\n\t\tvariable_container.find('.text').empty();\n\t\tvariable_container.find('.text').text(ff);\n\t}\n}\n\nfunction renderValues (new_var, variable_container) {\n\n\tvar ret = \"\";\n\tvar j = 0;\n\n\tif (new_var.dimensions == 0) {\n\t\tif (new_var.type == Types.REAL) {\n\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+new_var.value.toFixed(1)+'</span> </div> ';\n\t\t} else {\n\t\t\tif (new_var.type == Types.BOOLEAN) {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable boolean_simple_type\">'+LocalizedStrings.getUI(new_var.value)+'</span> </div> ';\n\t\t\t} else {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+new_var.value+'</span> </div> ';\n\t\t\t}\n\t\t}\n\t} else {\n\t\tret += '<table class=\"tabela_var\">';\n\n\t\tif (new_var.dimensions == 1) {\n\t\t\tret += '<tr>';\n\t\t\tif (new_var.type == Types.REAL) {\n\t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+new_var.value[k].toFixed(1)+'</span></td>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n\t\t\t\t\tif (new_var.type == Types.BOOLEAN) {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_vector_var\" data-index=\"'+k+'\">'+LocalizedStrings.getUI(new_var.value[k])+'</span></td>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+new_var.value[k]+'</span>'+'</td>';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tret += '</tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_vector_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_vector_column\"></i></div>';\n\t\t}\n\n\t\tif (new_var.dimensions == 2) {\n\t\t\tif (new_var.type == Types.REAL) {\n\t\t\t\tfor (var l = 0; l < new_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n \t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+new_var.value[l][k].toFixed(1)+'</span>'+'</td>';\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var l = 0; l < new_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n \t\t\t\t\tif (new_var.type == Types.BOOLEAN) { \n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+LocalizedStrings.getUI(new_var.value[l][k])+'</span></td>';\n \t\t\t\t\t} else {\n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+new_var.value[l][k]+'</span></td>';\n \t\t\t\t\t}\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (new_var.rows == 0) {\n\t\t\t\tret += '<tr><td></td></tr>';\n\t\t\t}\n\t\t\tret += '<tr><td colspan=\"'+new_var.columns+'\" class=\"tr_manage_lines\"><i class=\"ui icon minus square outline remove_global_matrix_line\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_line\"></i></td></tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_matrix_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_column\"></i></div>';\n\t\t}\n\t\t\n\t}\n\n\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\n\tret = $(ret);\n\n\t$(ret).find('.span_value_variable').data('associatedOject', new_var);\n\n\t$( ret ).find( \".boolean_simple_type\" ).on('click', function(e){\n\t\talternateBooleanValue(new_var, this.parentNode);\n\t});\n\t$( ret ).find( \".simple_var\" ).on('click', function(e){\n\t\tenableValueUpdate(new_var, this.parentNode);\n\t});\n\n\t$( ret ).find( \".boolean_vector_var\" ).on('click', function(e){\n\t\talternateBooleanVectorValue(new_var, $(this).data('index'), this.parentNode);\n\t});\n\t$( ret ).find( \".vector_var\" ).on('click', function(e){\n\t\tenableVectorValueUpdate(new_var, $(this).data('index'), this.parentNode);\n\t});\n\t$( ret ).find( \".remove_global_vector_column\" ).on('click', function(e){\n\t\tremoveColumnVector(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".add_global_vector_column\" ).on('click', function(e){\n\t\taddColumnVector(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".remove_global_matrix_column\" ).on('click', function(e){\n\t\tremoveColumnMatrix(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".add_global_matrix_column\" ).on('click', function(e){\n\t\taddColumnMatrix(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".remove_global_matrix_line\" ).on('click', function(e){\n\t\tremoveLineMatrix(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".add_global_matrix_line\" ).on('click', function(e){\n\t\taddLineMatrix(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".boolean_matrix_var\" ).on('click', function(e){\n\t\talternateBooleanMatrixValue(new_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t});\n\t$( ret ).find( \".matrix_var\" ).on('click', function(e){\n\t\tenableMatrixValueUpdate(new_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t});\n\t$( variable_container ).find( \".div_valor_var\" ).append(ret);\n\n\tupdateColumnsAndRowsText(variable_container, new_var);\n\n}\n\nfunction alternateBooleanMatrixValue (var_obj, row, index, value_container) {\n\tvar_obj.value[row][index] = !var_obj.value[row][index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(var_obj.value[row][index]));\n}\n\nfunction addLineMatrix (var_obj) {\n\tvar_obj.rows ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tvar n_l = [];\n\t\tfor (var i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(1);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(1.0);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\n\tif (var_obj.type == Types.TEXT) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('text_start'));\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(true);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n}\n\nfunction removeLineMatrix (var_obj) {\n\tif (var_obj.rows == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.rows --;\n\tvar_obj.value.splice(var_obj.value.length - 1, 1);\n}\n\nfunction addColumnMatrix (var_obj) {\n\tvar_obj.columns ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(1);\n\t\t}\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(1.0);\n\t\t}\n\t}\n\tif (var_obj.type == Types.TEXT) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(LocalizedStrings.getUI('text_start'));\n\t\t}\n\t}\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(true);\n\t\t}\n\t}\n}\n\nfunction removeColumnMatrix (var_obj) {\n\tif (var_obj.columns == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.columns --;\n\n\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\tvar_obj.value[i].splice(var_obj.value[i].length - 1, 1);\n\t}\n}\n\nfunction addColumnVector (var_obj) {\n\tvar_obj.columns ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tvar_obj.value.push(1);\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tvar_obj.value.push(1.0);\n\t}\n\tif (var_obj.type == Types.TEXT) {\n\t\tvar_obj.value.push(LocalizedStrings.getUI('text_start'));\n\t}\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tvar_obj.value.push(true);\n\t}\n}\n\nfunction removeColumnVector (var_obj) {\n\tif (var_obj.columns == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.columns --;\n\tvar_obj.value.splice(var_obj.value.length - 1, 1);\n}\n\nfunction alternateBooleanValue (var_obj, value_container) {\n\tvar_obj.value = !var_obj.value;\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(var_obj.value));\n}\n\nfunction alternateBooleanVectorValue (var_obj, index, value_container) {\n\tvar_obj.value[index] = !var_obj.value[index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(var_obj.value[index]));\n}\n\nfunction updateInitialValues (variable_obj) {\n\tif (variable_obj.type == Types.INTEGER) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = 1;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [1, 1];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[1, 1], [1, 1]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.REAL) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = 1.0;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [1.0, 1.0];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[1.0, 1.0], [1.0, 1.0]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.TEXT) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = LocalizedStrings.getUI('text_start');\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')], \n\t\t\t\t\t\t\t\t\t[LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.BOOLEAN) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = true;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [true, true];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[true, true], [true, true]];\n\t\t}\n\t}\n}\n\nvar opened_name_value_vector_global_ = false;\nvar opened_input_value_vector_global_ = null;\nfunction enableVectorValueUpdate (var_obj, index, parent_node) {\n\tif (opened_name_value_vector_global_) {\n\t\topened_input_value_vector_global_.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_vector_global_ = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_vector_global_ = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value[index] = input_field.val().trim();\n\t\t\t\t}\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\n\t\t\t}\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value[index] = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_vector_global_ = false;\n\t\topened_input_value_vector_global_ = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t\t} else {\n\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value[index] = input_field.val().trim();\n\t\t\t\t\t}\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value[index] = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\nvar opened_name_value_global_var = false;\nvar opened_input_value_global_ar = null;\nfunction enableValueUpdate (var_obj, parent_node) {\n\tif (opened_name_value_global_var) {\n\t\topened_input_value_global_ar.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_global_var = true;\n\n\tvar input_field;\n\n\tparent_node.find('.span_value_variable').text('');\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value.toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_global_ar = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value = parseFloat(input_field.val().trim());\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t\n\t\t\t}\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_global_var = false;\n\t\topened_input_value_global_ar = false;\n\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value = parseFloat(input_field.val().trim());\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t\t} else{\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\nvar opened_name_global = false;\nvar opened_input_global = null;\nfunction enableNameUpdate (variable_obj, variable_container, function_obj) {\n\n\tif (opened_name_global) {\n\t\topened_input_global.focus();\n\t\treturn;\n\t}\n\topened_name_global = true;\n\n\tvariable_container.find('.span_name_variable').text('');\n\n\tvar input_name;\n\n\tinput_name = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+variable_obj.name+\"' />\" );\n\tinput_name.insertBefore(variable_container.find('.span_name_variable'));\n\n\tinput_name.on('input', function() {\n\t var inputWidth = input_name.textWidth()+10;\n\t opened_input_global = input_name;\n\t input_name.focus();\n\n\t var tmpStr = input_name.val();\n\t\tinput_name.val('');\n\t\tinput_name.val(tmpStr);\n\n\t input_name.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_name.focusout(function() {\n\t\t/// update array:\n\t\tif (input_name.val().trim().length > 0) {\n\t\t\tupdateName(variable_obj, input_name.val().trim(), variable_container, function_obj);\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t} else {\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t}\n\t\tinput_name.off();\n\t\tinput_name.remove();\n\n\t\t/// update elements:\n\t\topened_name_global = false;\n\t\topened_input_global = false;\n\t});\n\n\tinput_name.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_name.val().trim().length > 0) {\n\t\t\t\tupdateName(variable_obj, input_name.val().trim(), variable_container, function_obj);\n\t\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\t} else {\n\t\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\t}\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t\tif(code == 27) {\n\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t});\n\n\tinput_name.select();\n\t\n}\n\n\nvar opened_name_value_matrix_global_v = false;\nvar opened_input_value_matrix_global_v = null;\nfunction enableMatrixValueUpdate (var_obj, row, index, parent_node) {\n\tif (opened_name_value_matrix_global_v) {\n\t\topened_input_value_matrix_global_v.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_matrix_global_v = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[row][index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[row][index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_matrix_global_v = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value[row][index] = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value[row][index] = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_matrix_global_v = false;\n\t\topened_input_value_matrix_global_v = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value[row][index] = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value[row][index] = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// This implementation of {@link TokenStream} loads tokens from a\n// {@link TokenSource} on-demand, and places the tokens in a buffer to provide\n// access to any previous token by index.\n//\n// <p>\n// This token stream ignores the value of {@link Token//getChannel}. If your\n// parser requires the token stream filter tokens to only those on a particular\n// channel, such as {@link Token//DEFAULT_CHANNEL} or\n// {@link Token//HIDDEN_CHANNEL}, use a filtering token stream such a\n// {@link CommonTokenStream}.</p>\n\nvar Token = require('./Token').Token;\nvar Lexer = require('./Lexer').Lexer;\nvar Interval = require('./IntervalSet').Interval;\n\n// this is just to keep meaningful parameter types to Parser\nfunction TokenStream() {\n\treturn this;\n}\n\nfunction BufferedTokenStream(tokenSource) {\n\n\tTokenStream.call(this);\n\t// The {@link TokenSource} from which tokens for this stream are fetched.\n\tthis.tokenSource = tokenSource;\n\n\t// A collection of all tokens fetched from the token source. The list is\n\t// considered a complete view of the input once {@link //fetchedEOF} is set\n\t// to {@code true}.\n\tthis.tokens = [];\n\n\t// The index into {@link //tokens} of the current token (next token to\n\t// {@link //consume}). {@link //tokens}{@code [}{@link //p}{@code ]} should\n\t// be\n\t// {@link //LT LT(1)}.\n\t//\n\t// <p>This field is set to -1 when the stream is first constructed or when\n\t// {@link //setTokenSource} is called, indicating that the first token has\n\t// not yet been fetched from the token source. For additional information,\n\t// see the documentation of {@link IntStream} for a description of\n\t// Initializing Methods.</p>\n\tthis.index = -1;\n\n\t// Indicates whether the {@link Token//EOF} token has been fetched from\n\t// {@link //tokenSource} and added to {@link //tokens}. This field improves\n\t// performance for the following cases:\n\t//\n\t// <ul>\n\t// <li>{@link //consume}: The lookahead check in {@link //consume} to\n\t// prevent\n\t// consuming the EOF symbol is optimized by checking the values of\n\t// {@link //fetchedEOF} and {@link //p} instead of calling {@link\n\t// //LA}.</li>\n\t// <li>{@link //fetch}: The check to prevent adding multiple EOF symbols\n\t// into\n\t// {@link //tokens} is trivial with this field.</li>\n\t// <ul>\n\tthis.fetchedEOF = false;\n\treturn this;\n}\n\nBufferedTokenStream.prototype = Object.create(TokenStream.prototype);\nBufferedTokenStream.prototype.constructor = BufferedTokenStream;\n\nBufferedTokenStream.prototype.mark = function() {\n\treturn 0;\n};\n\nBufferedTokenStream.prototype.release = function(marker) {\n\t// no resources to release\n};\n\nBufferedTokenStream.prototype.reset = function() {\n\tthis.seek(0);\n};\n\nBufferedTokenStream.prototype.seek = function(index) {\n\tthis.lazyInit();\n\tthis.index = this.adjustSeekIndex(index);\n};\n\nBufferedTokenStream.prototype.get = function(index) {\n\tthis.lazyInit();\n\treturn this.tokens[index];\n};\n\nBufferedTokenStream.prototype.consume = function() {\n\tvar skipEofCheck = false;\n\tif (this.index >= 0) {\n\t\tif (this.fetchedEOF) {\n\t\t\t// the last token in tokens is EOF. skip check if p indexes any\n\t\t\t// fetched token except the last.\n\t\t\tskipEofCheck = this.index < this.tokens.length - 1;\n\t\t} else {\n\t\t\t// no EOF token in tokens. skip check if p indexes a fetched token.\n\t\t\tskipEofCheck = this.index < this.tokens.length;\n\t\t}\n\t} else {\n\t\t// not yet initialized\n\t\tskipEofCheck = false;\n\t}\n\tif (!skipEofCheck && this.LA(1) === Token.EOF) {\n\t\tthrow \"cannot consume EOF\";\n\t}\n\tif (this.sync(this.index + 1)) {\n\t\tthis.index = this.adjustSeekIndex(this.index + 1);\n\t}\n};\n\n// Make sure index {@code i} in tokens has a token.\n//\n// @return {@code true} if a token is located at index {@code i}, otherwise\n// {@code false}.\n// @see //get(int i)\n// /\nBufferedTokenStream.prototype.sync = function(i) {\n\tvar n = i - this.tokens.length + 1; // how many more elements we need?\n\tif (n > 0) {\n\t\tvar fetched = this.fetch(n);\n\t\treturn fetched >= n;\n\t}\n\treturn true;\n};\n\n// Add {@code n} elements to buffer.\n//\n// @return The actual number of elements added to the buffer.\n// /\nBufferedTokenStream.prototype.fetch = function(n) {\n\tif (this.fetchedEOF) {\n\t\treturn 0;\n\t}\n\tfor (var i = 0; i < n; i++) {\n\t\tvar t = this.tokenSource.nextToken();\n\t\tt.tokenIndex = this.tokens.length;\n\t\tthis.tokens.push(t);\n\t\tif (t.type === Token.EOF) {\n\t\t\tthis.fetchedEOF = true;\n\t\t\treturn i + 1;\n\t\t}\n\t}\n\treturn n;\n};\n\n// Get all tokens from start..stop inclusively///\nBufferedTokenStream.prototype.getTokens = function(start, stop, types) {\n\tif (types === undefined) {\n\t\ttypes = null;\n\t}\n\tif (start < 0 || stop < 0) {\n\t\treturn null;\n\t}\n\tthis.lazyInit();\n\tvar subset = [];\n\tif (stop >= this.tokens.length) {\n\t\tstop = this.tokens.length - 1;\n\t}\n\tfor (var i = start; i < stop; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (t.type === Token.EOF) {\n\t\t\tbreak;\n\t\t}\n\t\tif (types === null || types.contains(t.type)) {\n\t\t\tsubset.push(t);\n\t\t}\n\t}\n\treturn subset;\n};\n\nBufferedTokenStream.prototype.LA = function(i) {\n\treturn this.LT(i).type;\n};\n\nBufferedTokenStream.prototype.LB = function(k) {\n\tif (this.index - k < 0) {\n\t\treturn null;\n\t}\n\treturn this.tokens[this.index - k];\n};\n\nBufferedTokenStream.prototype.LT = function(k) {\n\tthis.lazyInit();\n\tif (k === 0) {\n\t\treturn null;\n\t}\n\tif (k < 0) {\n\t\treturn this.LB(-k);\n\t}\n\tvar i = this.index + k - 1;\n\tthis.sync(i);\n\tif (i >= this.tokens.length) { // return EOF token\n\t\t// EOF must be last token\n\t\treturn this.tokens[this.tokens.length - 1];\n\t}\n\treturn this.tokens[i];\n};\n\n// Allowed derived classes to modify the behavior of operations which change\n// the current stream position by adjusting the target token index of a seek\n// operation. The default implementation simply returns {@code i}. If an\n// exception is thrown in this method, the current stream index should not be\n// changed.\n//\n// <p>For example, {@link CommonTokenStream} overrides this method to ensure\n// that\n// the seek target is always an on-channel token.</p>\n//\n// @param i The target token index.\n// @return The adjusted target token index.\n\nBufferedTokenStream.prototype.adjustSeekIndex = function(i) {\n\treturn i;\n};\n\nBufferedTokenStream.prototype.lazyInit = function() {\n\tif (this.index === -1) {\n\t\tthis.setup();\n\t}\n};\n\nBufferedTokenStream.prototype.setup = function() {\n\tthis.sync(0);\n\tthis.index = this.adjustSeekIndex(0);\n};\n\n// Reset this token stream by setting its token source.///\nBufferedTokenStream.prototype.setTokenSource = function(tokenSource) {\n\tthis.tokenSource = tokenSource;\n\tthis.tokens = [];\n\tthis.index = -1;\n\tthis.fetchedEOF = false;\n};\n\n\n// Given a starting index, return the index of the next token on channel.\n// Return i if tokens[i] is on channel. Return -1 if there are no tokens\n// on channel between i and EOF.\n// /\nBufferedTokenStream.prototype.nextTokenOnChannel = function(i, channel) {\n\tthis.sync(i);\n\tif (i >= this.tokens.length) {\n\t\treturn -1;\n\t}\n\tvar token = this.tokens[i];\n\twhile (token.channel !== this.channel) {\n\t\tif (token.type === Token.EOF) {\n\t\t\treturn -1;\n\t\t}\n\t\ti += 1;\n\t\tthis.sync(i);\n\t\ttoken = this.tokens[i];\n\t}\n\treturn i;\n};\n\n// Given a starting index, return the index of the previous token on channel.\n// Return i if tokens[i] is on channel. Return -1 if there are no tokens\n// on channel between i and 0.\nBufferedTokenStream.prototype.previousTokenOnChannel = function(i, channel) {\n\twhile (i >= 0 && this.tokens[i].channel !== channel) {\n\t\ti -= 1;\n\t}\n\treturn i;\n};\n\n// Collect all tokens on specified channel to the right of\n// the current token up until we see a token on DEFAULT_TOKEN_CHANNEL or\n// EOF. If channel is -1, find any non default channel token.\nBufferedTokenStream.prototype.getHiddenTokensToRight = function(tokenIndex,\n\t\tchannel) {\n\tif (channel === undefined) {\n\t\tchannel = -1;\n\t}\n\tthis.lazyInit();\n\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t}\n\tvar nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\tvar from_ = tokenIndex + 1;\n\t// if none onchannel to right, nextOnChannel=-1 so set to = last token\n\tvar to = nextOnChannel === -1 ? this.tokens.length - 1 : nextOnChannel;\n\treturn this.filterForChannel(from_, to, channel);\n};\n\n// Collect all tokens on specified channel to the left of\n// the current token up until we see a token on DEFAULT_TOKEN_CHANNEL.\n// If channel is -1, find any non default channel token.\nBufferedTokenStream.prototype.getHiddenTokensToLeft = function(tokenIndex,\n\t\tchannel) {\n\tif (channel === undefined) {\n\t\tchannel = -1;\n\t}\n\tthis.lazyInit();\n\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t}\n\tvar prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\tif (prevOnChannel === tokenIndex - 1) {\n\t\treturn null;\n\t}\n\t// if none on channel to left, prevOnChannel=-1 then from=0\n\tvar from_ = prevOnChannel + 1;\n\tvar to = tokenIndex - 1;\n\treturn this.filterForChannel(from_, to, channel);\n};\n\nBufferedTokenStream.prototype.filterForChannel = function(left, right, channel) {\n\tvar hidden = [];\n\tfor (var i = left; i < right + 1; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (channel === -1) {\n\t\t\tif (t.channel !== Lexer.DEFAULT_TOKEN_CHANNEL) {\n\t\t\t\thidden.push(t);\n\t\t\t}\n\t\t} else if (t.channel === channel) {\n\t\t\thidden.push(t);\n\t\t}\n\t}\n\tif (hidden.length === 0) {\n\t\treturn null;\n\t}\n\treturn hidden;\n};\n\nBufferedTokenStream.prototype.getSourceName = function() {\n\treturn this.tokenSource.getSourceName();\n};\n\n// Get the text of all tokens in this buffer.///\nBufferedTokenStream.prototype.getText = function(interval) {\n\tthis.lazyInit();\n\tthis.fill();\n\tif (interval === undefined || interval === null) {\n\t\tinterval = new Interval(0, this.tokens.length - 1);\n\t}\n\tvar start = interval.start;\n\tif (start instanceof Token) {\n\t\tstart = start.tokenIndex;\n\t}\n\tvar stop = interval.stop;\n\tif (stop instanceof Token) {\n\t\tstop = stop.tokenIndex;\n\t}\n\tif (start === null || stop === null || start < 0 || stop < 0) {\n\t\treturn \"\";\n\t}\n\tif (stop >= this.tokens.length) {\n\t\tstop = this.tokens.length - 1;\n\t}\n\tvar s = \"\";\n\tfor (var i = start; i < stop + 1; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (t.type === Token.EOF) {\n\t\t\tbreak;\n\t\t}\n\t\ts = s + t.text;\n\t}\n\treturn s;\n};\n\n// Get all tokens from lexer until EOF///\nBufferedTokenStream.prototype.fill = function() {\n\tthis.lazyInit();\n\twhile (this.fetch(1000) === 1000) {\n\t\tcontinue;\n\t}\n};\n\nexports.BufferedTokenStream = BufferedTokenStream;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar InputStream = require('./InputStream').InputStream;\n\nvar isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';\nvar fs = isNodeJs ? require(\"fs\") : null;\n\n// Utility functions to create InputStreams from various sources.\n//\n// All returned InputStreams support the full range of Unicode\n// up to U+10FFFF (the default behavior of InputStream only supports\n// code points up to U+FFFF).\nvar CharStreams = {\n // Creates an InputStream from a string.\n fromString: function(str) {\n return new InputStream(str, true);\n },\n\n // Asynchronously creates an InputStream from a blob given the\n // encoding of the bytes in that blob (defaults to 'utf8' if\n // encoding is null).\n //\n // Invokes onLoad(result) on success, onError(error) on\n // failure.\n fromBlob: function(blob, encoding, onLoad, onError) {\n var reader = FileReader();\n reader.onload = function(e) {\n var is = new InputStream(e.target.result, true);\n onLoad(is);\n };\n reader.onerror = onError;\n reader.readAsText(blob, encoding);\n },\n\n // Creates an InputStream from a Buffer given the\n // encoding of the bytes in that buffer (defaults to 'utf8' if\n // encoding is null).\n fromBuffer: function(buffer, encoding) {\n return new InputStream(buffer.toString(encoding), true);\n },\n\n // Asynchronously creates an InputStream from a file on disk given\n // the encoding of the bytes in that file (defaults to 'utf8' if\n // encoding is null).\n //\n // Invokes callback(error, result) on completion.\n fromPath: function(path, encoding, callback) {\n fs.readFile(path, encoding, function(err, data) {\n var is = null;\n if (data !== null) {\n is = new InputStream(data, true);\n }\n callback(err, is);\n });\n },\n\n // Synchronously creates an InputStream given a path to a file\n // on disk and the encoding of the bytes in that file (defaults to\n // 'utf8' if encoding is null).\n fromPathSync: function(path, encoding) {\n var data = fs.readFileSync(path, encoding);\n return new InputStream(data, true);\n }\n};\n\nexports.CharStreams = CharStreams;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This default implementation of {@link TokenFactory} creates\n// {@link CommonToken} objects.\n//\n\nvar CommonToken = require('./Token').CommonToken;\n\nfunction TokenFactory() {\n\treturn this;\n}\n\nfunction CommonTokenFactory(copyText) {\n\tTokenFactory.call(this);\n // Indicates whether {@link CommonToken//setText} should be called after\n // constructing tokens to explicitly set the text. This is useful for cases\n // where the input stream might not be able to provide arbitrary substrings\n // of text from the input after the lexer creates a token (e.g. the\n // implementation of {@link CharStream//getText} in\n // {@link UnbufferedCharStream} throws an\n // {@link UnsupportedOperationException}). Explicitly setting the token text\n // allows {@link Token//getText} to be called at any time regardless of the\n // input stream implementation.\n //\n // <p>\n // The default value is {@code false} to avoid the performance and memory\n // overhead of copying text for every token unless explicitly requested.</p>\n //\n this.copyText = copyText===undefined ? false : copyText;\n\treturn this;\n}\n\nCommonTokenFactory.prototype = Object.create(TokenFactory.prototype);\nCommonTokenFactory.prototype.constructor = CommonTokenFactory;\n\n//\n// The default {@link CommonTokenFactory} instance.\n//\n// <p>\n// This token factory does not explicitly copy token text when constructing\n// tokens.</p>\n//\nCommonTokenFactory.DEFAULT = new CommonTokenFactory();\n\nCommonTokenFactory.prototype.create = function(source, type, text, channel, start, stop, line, column) {\n var t = new CommonToken(source, type, channel, start, stop);\n t.line = line;\n t.column = column;\n if (text !==null) {\n t.text = text;\n } else if (this.copyText && source[1] !==null) {\n t.text = source[1].getText(start,stop);\n }\n return t;\n};\n\nCommonTokenFactory.prototype.createThin = function(type, text) {\n var t = new CommonToken(null, type);\n t.text = text;\n return t;\n};\n\nexports.CommonTokenFactory = CommonTokenFactory;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n//\n// This class extends {@link BufferedTokenStream} with functionality to filter\n// token streams to tokens on a particular channel (tokens where\n// {@link Token//getChannel} returns a particular value).\n//\n// <p>\n// This token stream provides access to all tokens by index or when calling\n// methods like {@link //getText}. The channel filtering is only used for code\n// accessing tokens via the lookahead methods {@link //LA}, {@link //LT}, and\n// {@link //LB}.</p>\n//\n// <p>\n// By default, tokens are placed on the default channel\n// ({@link Token//DEFAULT_CHANNEL}), but may be reassigned by using the\n// {@code ->channel(HIDDEN)} lexer command, or by using an embedded action to\n// call {@link Lexer//setChannel}.\n// </p>\n//\n// <p>\n// Note: lexer rules which use the {@code ->skip} lexer command or call\n// {@link Lexer//skip} do not produce tokens at all, so input text matched by\n// such a rule will not be available as part of the token stream, regardless of\n// channel.</p>\n///\n\nvar Token = require('./Token').Token;\nvar BufferedTokenStream = require('./BufferedTokenStream').BufferedTokenStream;\n\nfunction CommonTokenStream(lexer, channel) {\n\tBufferedTokenStream.call(this, lexer);\n this.channel = channel===undefined ? Token.DEFAULT_CHANNEL : channel;\n return this;\n}\n\nCommonTokenStream.prototype = Object.create(BufferedTokenStream.prototype);\nCommonTokenStream.prototype.constructor = CommonTokenStream;\n\nCommonTokenStream.prototype.adjustSeekIndex = function(i) {\n return this.nextTokenOnChannel(i, this.channel);\n};\n\nCommonTokenStream.prototype.LB = function(k) {\n if (k===0 || this.index-k<0) {\n return null;\n }\n var i = this.index;\n var n = 1;\n // find k good tokens looking backwards\n while (n <= k) {\n // skip off-channel tokens\n i = this.previousTokenOnChannel(i - 1, this.channel);\n n += 1;\n }\n if (i < 0) {\n return null;\n }\n return this.tokens[i];\n};\n\nCommonTokenStream.prototype.LT = function(k) {\n this.lazyInit();\n if (k === 0) {\n return null;\n }\n if (k < 0) {\n return this.LB(-k);\n }\n var i = this.index;\n var n = 1; // we know tokens[pos] is a good one\n // find k good tokens\n while (n < k) {\n // skip off-channel tokens, but make sure to not look past EOF\n if (this.sync(i + 1)) {\n i = this.nextTokenOnChannel(i + 1, this.channel);\n }\n n += 1;\n }\n return this.tokens[i];\n};\n\n// Count EOF just once.///\nCommonTokenStream.prototype.getNumberOfOnChannelTokens = function() {\n var n = 0;\n this.fill();\n for (var i =0; i< this.tokens.length;i++) {\n var t = this.tokens[i];\n if( t.channel===this.channel) {\n n += 1;\n }\n if( t.type===Token.EOF) {\n break;\n }\n }\n return n;\n};\n\nexports.CommonTokenStream = CommonTokenStream;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This is an InputStream that is loaded from a file all at once\n// when you construct the object.\n//\nvar InputStream = require('./InputStream').InputStream;\nvar isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';\nvar fs = isNodeJs ? require(\"fs\") : null;\n\nfunction FileStream(fileName, decodeToUnicodeCodePoints) {\n\tvar data = fs.readFileSync(fileName, \"utf8\");\n\tInputStream.call(this, data, decodeToUnicodeCodePoints);\n\tthis.fileName = fileName;\n\treturn this;\n}\n\nFileStream.prototype = Object.create(InputStream.prototype);\nFileStream.prototype.constructor = FileStream;\n\nexports.FileStream = FileStream;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./Token').Token;\nrequire('./polyfills/codepointat');\nrequire('./polyfills/fromcodepoint');\n\n// Vacuum all input from a string and then treat it like a buffer.\n\nfunction _loadString(stream, decodeToUnicodeCodePoints) {\n\tstream._index = 0;\n\tstream.data = [];\n\tif (stream.decodeToUnicodeCodePoints) {\n\t\tfor (var i = 0; i < stream.strdata.length; ) {\n\t\t\tvar codePoint = stream.strdata.codePointAt(i);\n\t\t\tstream.data.push(codePoint);\n\t\t\ti += codePoint <= 0xFFFF ? 1 : 2;\n\t\t}\n\t} else {\n\t\tfor (var i = 0; i < stream.strdata.length; i++) {\n\t\t\tvar codeUnit = stream.strdata.charCodeAt(i);\n\t\t\tstream.data.push(codeUnit);\n\t\t}\n\t}\n\tstream._size = stream.data.length;\n}\n\n// If decodeToUnicodeCodePoints is true, the input is treated\n// as a series of Unicode code points.\n//\n// Otherwise, the input is treated as a series of 16-bit UTF-16 code\n// units.\nfunction InputStream(data, decodeToUnicodeCodePoints) {\n\tthis.name = \"<empty>\";\n\tthis.strdata = data;\n\tthis.decodeToUnicodeCodePoints = decodeToUnicodeCodePoints || false;\n\t_loadString(this);\n\treturn this;\n}\n\nObject.defineProperty(InputStream.prototype, \"index\", {\n\tget : function() {\n\t\treturn this._index;\n\t}\n});\n\nObject.defineProperty(InputStream.prototype, \"size\", {\n\tget : function() {\n\t\treturn this._size;\n\t}\n});\n\n// Reset the stream so that it's in the same state it was\n// when the object was created *except* the data array is not\n// touched.\n//\nInputStream.prototype.reset = function() {\n\tthis._index = 0;\n};\n\nInputStream.prototype.consume = function() {\n\tif (this._index >= this._size) {\n\t\t// assert this.LA(1) == Token.EOF\n\t\tthrow (\"cannot consume EOF\");\n\t}\n\tthis._index += 1;\n};\n\nInputStream.prototype.LA = function(offset) {\n\tif (offset === 0) {\n\t\treturn 0; // undefined\n\t}\n\tif (offset < 0) {\n\t\toffset += 1; // e.g., translate LA(-1) to use offset=0\n\t}\n\tvar pos = this._index + offset - 1;\n\tif (pos < 0 || pos >= this._size) { // invalid\n\t\treturn Token.EOF;\n\t}\n\treturn this.data[pos];\n};\n\nInputStream.prototype.LT = function(offset) {\n\treturn this.LA(offset);\n};\n\n// mark/release do nothing; we have entire buffer\nInputStream.prototype.mark = function() {\n\treturn -1;\n};\n\nInputStream.prototype.release = function(marker) {\n};\n\n// consume() ahead until p==_index; can't just set p=_index as we must\n// update line and column. If we seek backwards, just set p\n//\nInputStream.prototype.seek = function(_index) {\n\tif (_index <= this._index) {\n\t\tthis._index = _index; // just jump; don't update stream state (line,\n\t\t\t\t\t\t\t\t// ...)\n\t\treturn;\n\t}\n\t// seek forward\n\tthis._index = Math.min(_index, this._size);\n};\n\nInputStream.prototype.getText = function(start, stop) {\n\tif (stop >= this._size) {\n\t\tstop = this._size - 1;\n\t}\n\tif (start >= this._size) {\n\t\treturn \"\";\n\t} else {\n\t\tif (this.decodeToUnicodeCodePoints) {\n\t\t\tvar result = \"\";\n\t\t\tfor (var i = start; i <= stop; i++) {\n\t\t\t\tresult += String.fromCodePoint(this.data[i]);\n\t\t\t}\n\t\t\treturn result;\n\t\t} else {\n\t\t\treturn this.strdata.slice(start, stop + 1);\n\t\t}\n\t}\n};\n\nInputStream.prototype.toString = function() {\n\treturn this.strdata;\n};\n\nexports.InputStream = InputStream;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/*jslint smarttabs:true */\n\nvar Token = require('./Token').Token;\n\n/* stop is not included! */\nfunction Interval(start, stop) {\n\tthis.start = start;\n\tthis.stop = stop;\n\treturn this;\n}\n\nInterval.prototype.contains = function(item) {\n\treturn item >= this.start && item < this.stop;\n};\n\nInterval.prototype.toString = function() {\n\tif(this.start===this.stop-1) {\n\t\treturn this.start.toString();\n\t} else {\n\t\treturn this.start.toString() + \"..\" + (this.stop-1).toString();\n\t}\n};\n\n\nObject.defineProperty(Interval.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.stop - this.start;\n\t}\n});\n\nfunction IntervalSet() {\n\tthis.intervals = null;\n\tthis.readOnly = false;\n}\n\nIntervalSet.prototype.first = function(v) {\n\tif (this.intervals === null || this.intervals.length===0) {\n\t\treturn Token.INVALID_TYPE;\n\t} else {\n\t\treturn this.intervals[0].start;\n\t}\n};\n\nIntervalSet.prototype.addOne = function(v) {\n\tthis.addInterval(new Interval(v, v + 1));\n};\n\nIntervalSet.prototype.addRange = function(l, h) {\n\tthis.addInterval(new Interval(l, h + 1));\n};\n\nIntervalSet.prototype.addInterval = function(v) {\n\tif (this.intervals === null) {\n\t\tthis.intervals = [];\n\t\tthis.intervals.push(v);\n\t} else {\n\t\t// find insert pos\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tvar i = this.intervals[k];\n\t\t\t// distinct range -> insert\n\t\t\tif (v.stop < i.start) {\n\t\t\t\tthis.intervals.splice(k, 0, v);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// contiguous range -> adjust\n\t\t\telse if (v.stop === i.start) {\n\t\t\t\tthis.intervals[k].start = v.start;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// overlapping range -> adjust and reduce\n\t\t\telse if (v.start <= i.stop) {\n\t\t\t\tthis.intervals[k] = new Interval(Math.min(i.start, v.start), Math.max(i.stop, v.stop));\n\t\t\t\tthis.reduce(k);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// greater than any existing\n\t\tthis.intervals.push(v);\n\t}\n};\n\nIntervalSet.prototype.addSet = function(other) {\n\tif (other.intervals !== null) {\n\t\tfor (var k = 0; k < other.intervals.length; k++) {\n\t\t\tvar i = other.intervals[k];\n\t\t\tthis.addInterval(new Interval(i.start, i.stop));\n\t\t}\n\t}\n\treturn this;\n};\n\nIntervalSet.prototype.reduce = function(k) {\n\t// only need to reduce if k is not the last\n\tif (k < this.intervalslength - 1) {\n\t\tvar l = this.intervals[k];\n\t\tvar r = this.intervals[k + 1];\n\t\t// if r contained in l\n\t\tif (l.stop >= r.stop) {\n\t\t\tthis.intervals.pop(k + 1);\n\t\t\tthis.reduce(k);\n\t\t} else if (l.stop >= r.start) {\n\t\t\tthis.intervals[k] = new Interval(l.start, r.stop);\n\t\t\tthis.intervals.pop(k + 1);\n\t\t}\n\t}\n};\n\nIntervalSet.prototype.complement = function(start, stop) {\n var result = new IntervalSet();\n result.addInterval(new Interval(start,stop+1));\n for(var i=0; i<this.intervals.length; i++) {\n result.removeRange(this.intervals[i]);\n }\n return result;\n};\n\nIntervalSet.prototype.contains = function(item) {\n\tif (this.intervals === null) {\n\t\treturn false;\n\t} else {\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tif(this.intervals[k].contains(item)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n};\n\nObject.defineProperty(IntervalSet.prototype, \"length\", {\n\tget : function() {\n\t\tvar len = 0;\n\t\tthis.intervals.map(function(i) {len += i.length;});\n\t\treturn len;\n\t}\n});\n\nIntervalSet.prototype.removeRange = function(v) {\n if(v.start===v.stop-1) {\n this.removeOne(v.start);\n } else if (this.intervals!==null) {\n var k = 0;\n for(var n=0; n<this.intervals.length; n++) {\n var i = this.intervals[k];\n // intervals are ordered\n if (v.stop<=i.start) {\n return;\n }\n // check for including range, split it\n else if(v.start>i.start && v.stop<i.stop) {\n this.intervals[k] = new Interval(i.start, v.start);\n var x = new Interval(v.stop, i.stop);\n this.intervals.splice(k, 0, x);\n return;\n }\n // check for included range, remove it\n else if(v.start<=i.start && v.stop>=i.stop) {\n this.intervals.splice(k, 1);\n k = k - 1; // need another pass\n }\n // check for lower boundary\n else if(v.start<i.stop) {\n this.intervals[k] = new Interval(i.start, v.start);\n }\n // check for upper boundary\n else if(v.stop<i.stop) {\n this.intervals[k] = new Interval(v.stop, i.stop);\n }\n k += 1;\n }\n }\n};\n\nIntervalSet.prototype.removeOne = function(v) {\n\tif (this.intervals !== null) {\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tvar i = this.intervals[k];\n\t\t\t// intervals is ordered\n\t\t\tif (v < i.start) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for single value range\n\t\t\telse if (v === i.start && v === i.stop - 1) {\n\t\t\t\tthis.intervals.splice(k, 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for lower boundary\n\t\t\telse if (v === i.start) {\n\t\t\t\tthis.intervals[k] = new Interval(i.start + 1, i.stop);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for upper boundary\n\t\t\telse if (v === i.stop - 1) {\n\t\t\t\tthis.intervals[k] = new Interval(i.start, i.stop - 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// split existing range\n\t\t\telse if (v < i.stop - 1) {\n\t\t\t\tvar x = new Interval(i.start, v);\n\t\t\t\ti.start = v + 1;\n\t\t\t\tthis.intervals.splice(k, 0, x);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nIntervalSet.prototype.toString = function(literalNames, symbolicNames, elemsAreChar) {\n\tliteralNames = literalNames || null;\n\tsymbolicNames = symbolicNames || null;\n\telemsAreChar = elemsAreChar || false;\n\tif (this.intervals === null) {\n\t\treturn \"{}\";\n\t} else if(literalNames!==null || symbolicNames!==null) {\n\t\treturn this.toTokenString(literalNames, symbolicNames);\n\t} else if(elemsAreChar) {\n\t\treturn this.toCharString();\n\t} else {\n\t\treturn this.toIndexString();\n\t}\n};\n\nIntervalSet.prototype.toCharString = function() {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tif(v.stop===v.start+1) {\n\t\t\tif ( v.start===Token.EOF ) {\n\t\t\t\tnames.push(\"<EOF>\");\n\t\t\t} else {\n\t\t\t\tnames.push(\"'\" + String.fromCharCode(v.start) + \"'\");\n\t\t\t}\n\t\t} else {\n\t\t\tnames.push(\"'\" + String.fromCharCode(v.start) + \"'..'\" + String.fromCharCode(v.stop-1) + \"'\");\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\n\nIntervalSet.prototype.toIndexString = function() {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tif(v.stop===v.start+1) {\n\t\t\tif ( v.start===Token.EOF ) {\n\t\t\t\tnames.push(\"<EOF>\");\n\t\t\t} else {\n\t\t\t\tnames.push(v.start.toString());\n\t\t\t}\n\t\t} else {\n\t\t\tnames.push(v.start.toString() + \"..\" + (v.stop-1).toString());\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\n\nIntervalSet.prototype.toTokenString = function(literalNames, symbolicNames) {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tfor (var j = v.start; j < v.stop; j++) {\n\t\t\tnames.push(this.elementName(literalNames, symbolicNames, j));\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\nIntervalSet.prototype.elementName = function(literalNames, symbolicNames, a) {\n\tif (a === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else if (a === Token.EPSILON) {\n\t\treturn \"<EPSILON>\";\n\t} else {\n\t\treturn literalNames[a] || symbolicNames[a];\n\t}\n};\n\nexports.Interval = Interval;\nexports.IntervalSet = IntervalSet;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar Set = require('./Utils').Set;\nvar BitSet = require('./Utils').BitSet;\nvar Token = require('./Token').Token;\nvar ATNConfig = require('./atn/ATNConfig').ATNConfig;\nvar Interval = require('./IntervalSet').Interval;\nvar IntervalSet = require('./IntervalSet').IntervalSet;\nvar RuleStopState = require('./atn/ATNState').RuleStopState;\nvar RuleTransition = require('./atn/Transition').RuleTransition;\nvar NotSetTransition = require('./atn/Transition').NotSetTransition;\nvar WildcardTransition = require('./atn/Transition').WildcardTransition;\nvar AbstractPredicateTransition = require('./atn/Transition').AbstractPredicateTransition;\n\nvar pc = require('./PredictionContext');\nvar predictionContextFromRuleContext = pc.predictionContextFromRuleContext;\nvar PredictionContext = pc.PredictionContext;\nvar SingletonPredictionContext = pc.SingletonPredictionContext;\n\nfunction LL1Analyzer (atn) {\n this.atn = atn;\n}\n\n//* Special value added to the lookahead sets to indicate that we hit\n// a predicate during analysis if {@code seeThruPreds==false}.\n///\nLL1Analyzer.HIT_PRED = Token.INVALID_TYPE;\n\n\n//*\n// Calculates the SLL(1) expected lookahead set for each outgoing transition\n// of an {@link ATNState}. The returned array has one element for each\n// outgoing transition in {@code s}. If the closure from transition\n// <em>i</em> leads to a semantic predicate before matching a symbol, the\n// element at index <em>i</em> of the result will be {@code null}.\n//\n// @param s the ATN state\n// @return the expected symbols for each outgoing transition of {@code s}.\n///\nLL1Analyzer.prototype.getDecisionLookahead = function(s) {\n if (s === null) {\n return null;\n }\n var count = s.transitions.length;\n var look = [];\n for(var alt=0; alt< count; alt++) {\n look[alt] = new IntervalSet();\n var lookBusy = new Set();\n var seeThruPreds = false; // fail to get lookahead upon pred\n this._LOOK(s.transition(alt).target, null, PredictionContext.EMPTY,\n look[alt], lookBusy, new BitSet(), seeThruPreds, false);\n // Wipe out lookahead for this alternative if we found nothing\n // or we had a predicate when we !seeThruPreds\n if (look[alt].length===0 || look[alt].contains(LL1Analyzer.HIT_PRED)) {\n look[alt] = null;\n }\n }\n return look;\n};\n\n//*\n// Compute set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n//\n// <p>If {@code ctx} is {@code null} and the end of the rule containing\n// {@code s} is reached, {@link Token//EPSILON} is added to the result set.\n// If {@code ctx} is not {@code null} and the end of the outermost rule is\n// reached, {@link Token//EOF} is added to the result set.</p>\n//\n// @param s the ATN state\n// @param stopState the ATN state to stop at. This can be a\n// {@link BlockEndState} to detect epsilon paths through a closure.\n// @param ctx the complete parser context, or {@code null} if the context\n// should be ignored\n//\n// @return The set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n///\nLL1Analyzer.prototype.LOOK = function(s, stopState, ctx) {\n var r = new IntervalSet();\n var seeThruPreds = true; // ignore preds; get all lookahead\n\tctx = ctx || null;\n var lookContext = ctx!==null ? predictionContextFromRuleContext(s.atn, ctx) : null;\n this._LOOK(s, stopState, lookContext, r, new Set(), new BitSet(), seeThruPreds, true);\n return r;\n};\n\n//*\n// Compute set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n//\n// <p>If {@code ctx} is {@code null} and {@code stopState} or the end of the\n// rule containing {@code s} is reached, {@link Token//EPSILON} is added to\n// the result set. If {@code ctx} is not {@code null} and {@code addEOF} is\n// {@code true} and {@code stopState} or the end of the outermost rule is\n// reached, {@link Token//EOF} is added to the result set.</p>\n//\n// @param s the ATN state.\n// @param stopState the ATN state to stop at. This can be a\n// {@link BlockEndState} to detect epsilon paths through a closure.\n// @param ctx The outer context, or {@code null} if the outer context should\n// not be used.\n// @param look The result lookahead set.\n// @param lookBusy A set used for preventing epsilon closures in the ATN\n// from causing a stack overflow. Outside code should pass\n// {@code new Set<ATNConfig>} for this argument.\n// @param calledRuleStack A set used for preventing left recursion in the\n// ATN from causing a stack overflow. Outside code should pass\n// {@code new BitSet()} for this argument.\n// @param seeThruPreds {@code true} to true semantic predicates as\n// implicitly {@code true} and \"see through them\", otherwise {@code false}\n// to treat semantic predicates as opaque and add {@link //HIT_PRED} to the\n// result if one is encountered.\n// @param addEOF Add {@link Token//EOF} to the result if the end of the\n// outermost context is reached. This parameter has no effect if {@code ctx}\n// is {@code null}.\n///\nLL1Analyzer.prototype._LOOK = function(s, stopState , ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) {\n var c = new ATNConfig({state:s, alt:0, context: ctx}, null);\n if (lookBusy.contains(c)) {\n return;\n }\n lookBusy.add(c);\n if (s === stopState) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n }\n if (s instanceof RuleStopState ) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n if (ctx !== PredictionContext.EMPTY) {\n // run thru all possible stack tops in ctx\n for(var i=0; i<ctx.length; i++) {\n var returnState = this.atn.states[ctx.getReturnState(i)];\n var removed = calledRuleStack.contains(returnState.ruleIndex);\n try {\n calledRuleStack.remove(returnState.ruleIndex);\n this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } finally {\n if (removed) {\n calledRuleStack.add(returnState.ruleIndex);\n }\n }\n }\n return;\n }\n }\n for(var j=0; j<s.transitions.length; j++) {\n var t = s.transitions[j];\n if (t.constructor === RuleTransition) {\n if (calledRuleStack.contains(t.target.ruleIndex)) {\n continue;\n }\n var newContext = SingletonPredictionContext.create(ctx, t.followState.stateNumber);\n try {\n calledRuleStack.add(t.target.ruleIndex);\n this._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } finally {\n calledRuleStack.remove(t.target.ruleIndex);\n }\n } else if (t instanceof AbstractPredicateTransition ) {\n if (seeThruPreds) {\n this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } else {\n look.addOne(LL1Analyzer.HIT_PRED);\n }\n } else if( t.isEpsilon) {\n this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } else if (t.constructor === WildcardTransition) {\n look.addRange( Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType );\n } else {\n var set = t.label;\n if (set !== null) {\n if (t instanceof NotSetTransition) {\n set = set.complement(Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType);\n }\n look.addSet(set);\n }\n }\n }\n};\n\nexports.LL1Analyzer = LL1Analyzer;\n\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A lexer is recognizer that draws input symbols from a character stream.\n// lexer grammars result in a subclass of this object. A Lexer object\n// uses simplified match() and error recovery mechanisms in the interest of speed.\n\nvar Token = require('./Token').Token;\nvar Recognizer = require('./Recognizer').Recognizer;\nvar CommonTokenFactory = require('./CommonTokenFactory').CommonTokenFactory;\nvar RecognitionException = require('./error/Errors').RecognitionException;\nvar LexerNoViableAltException = require('./error/Errors').LexerNoViableAltException;\n\nfunction TokenSource() {\n\treturn this;\n}\n\nfunction Lexer(input) {\n\tRecognizer.call(this);\n\tthis._input = input;\n\tthis._factory = CommonTokenFactory.DEFAULT;\n\tthis._tokenFactorySourcePair = [ this, input ];\n\n\tthis._interp = null; // child classes must populate this\n\n\t// The goal of all lexer rules/methods is to create a token object.\n\t// this is an instance variable as multiple rules may collaborate to\n\t// create a single token. nextToken will return this object after\n\t// matching lexer rule(s). If you subclass to allow multiple token\n\t// emissions, then set this to the last token to be matched or\n\t// something nonnull so that the auto token emit mechanism will not\n\t// emit another token.\n\tthis._token = null;\n\n\t// What character index in the stream did the current token start at?\n\t// Needed, for example, to get the text for current token. Set at\n\t// the start of nextToken.\n\tthis._tokenStartCharIndex = -1;\n\n\t// The line on which the first character of the token resides///\n\tthis._tokenStartLine = -1;\n\n\t// The character position of first character within the line///\n\tthis._tokenStartColumn = -1;\n\n\t// Once we see EOF on char stream, next token will be EOF.\n\t// If you have DONE : EOF ; then you see DONE EOF.\n\tthis._hitEOF = false;\n\n\t// The channel number for the current token///\n\tthis._channel = Token.DEFAULT_CHANNEL;\n\n\t// The token type for the current token///\n\tthis._type = Token.INVALID_TYPE;\n\n\tthis._modeStack = [];\n\tthis._mode = Lexer.DEFAULT_MODE;\n\n\t// You can set the text for the current token to override what is in\n\t// the input char buffer. Use setText() or can set this instance var.\n\t// /\n\tthis._text = null;\n\n\treturn this;\n}\n\nLexer.prototype = Object.create(Recognizer.prototype);\nLexer.prototype.constructor = Lexer;\n\nLexer.DEFAULT_MODE = 0;\nLexer.MORE = -2;\nLexer.SKIP = -3;\n\nLexer.DEFAULT_TOKEN_CHANNEL = Token.DEFAULT_CHANNEL;\nLexer.HIDDEN = Token.HIDDEN_CHANNEL;\nLexer.MIN_CHAR_VALUE = 0x0000;\nLexer.MAX_CHAR_VALUE = 0x10FFFF;\n\nLexer.prototype.reset = function() {\n\t// wack Lexer state variables\n\tif (this._input !== null) {\n\t\tthis._input.seek(0); // rewind the input\n\t}\n\tthis._token = null;\n\tthis._type = Token.INVALID_TYPE;\n\tthis._channel = Token.DEFAULT_CHANNEL;\n\tthis._tokenStartCharIndex = -1;\n\tthis._tokenStartColumn = -1;\n\tthis._tokenStartLine = -1;\n\tthis._text = null;\n\n\tthis._hitEOF = false;\n\tthis._mode = Lexer.DEFAULT_MODE;\n\tthis._modeStack = [];\n\n\tthis._interp.reset();\n};\n\n// Return a token from this source; i.e., match a token on the char stream.\nLexer.prototype.nextToken = function() {\n\tif (this._input === null) {\n\t\tthrow \"nextToken requires a non-null input stream.\";\n\t}\n\n\t// Mark start location in char stream so unbuffered streams are\n\t// guaranteed at least have text of current token\n\tvar tokenStartMarker = this._input.mark();\n\ttry {\n\t\twhile (true) {\n\t\t\tif (this._hitEOF) {\n\t\t\t\tthis.emitEOF();\n\t\t\t\treturn this._token;\n\t\t\t}\n\t\t\tthis._token = null;\n\t\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\t\t\tthis._tokenStartCharIndex = this._input.index;\n\t\t\tthis._tokenStartColumn = this._interp.column;\n\t\t\tthis._tokenStartLine = this._interp.line;\n\t\t\tthis._text = null;\n\t\t\tvar continueOuter = false;\n\t\t\twhile (true) {\n\t\t\t\tthis._type = Token.INVALID_TYPE;\n\t\t\t\tvar ttype = Lexer.SKIP;\n\t\t\t\ttry {\n\t\t\t\t\tttype = this._interp.match(this._input, this._mode);\n\t\t\t\t} catch (e) {\n\t\t\t\t if(e instanceof RecognitionException) {\n this.notifyListeners(e); // report error\n this.recover(e);\n } else {\n console.log(e.stack);\n throw e;\n }\n\t\t\t\t}\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis._hitEOF = true;\n\t\t\t\t}\n\t\t\t\tif (this._type === Token.INVALID_TYPE) {\n\t\t\t\t\tthis._type = ttype;\n\t\t\t\t}\n\t\t\t\tif (this._type === Lexer.SKIP) {\n\t\t\t\t\tcontinueOuter = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (this._type !== Lexer.MORE) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (continueOuter) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (this._token === null) {\n\t\t\t\tthis.emit();\n\t\t\t}\n\t\t\treturn this._token;\n\t\t}\n\t} finally {\n\t\t// make sure we release marker after match or\n\t\t// unbuffered char stream will keep buffering\n\t\tthis._input.release(tokenStartMarker);\n\t}\n};\n\n// Instruct the lexer to skip creating a token for current lexer rule\n// and look for another token. nextToken() knows to keep looking when\n// a lexer rule finishes with token set to SKIP_TOKEN. Recall that\n// if token==null at end of any token rule, it creates one for you\n// and emits it.\n// /\nLexer.prototype.skip = function() {\n\tthis._type = Lexer.SKIP;\n};\n\nLexer.prototype.more = function() {\n\tthis._type = Lexer.MORE;\n};\n\nLexer.prototype.mode = function(m) {\n\tthis._mode = m;\n};\n\nLexer.prototype.pushMode = function(m) {\n\tif (this._interp.debug) {\n\t\tconsole.log(\"pushMode \" + m);\n\t}\n\tthis._modeStack.push(this._mode);\n\tthis.mode(m);\n};\n\nLexer.prototype.popMode = function() {\n\tif (this._modeStack.length === 0) {\n\t\tthrow \"Empty Stack\";\n\t}\n\tif (this._interp.debug) {\n\t\tconsole.log(\"popMode back to \" + this._modeStack.slice(0, -1));\n\t}\n\tthis.mode(this._modeStack.pop());\n\treturn this._mode;\n};\n\n// Set the char stream and reset the lexer\nObject.defineProperty(Lexer.prototype, \"inputStream\", {\n\tget : function() {\n\t\treturn this._input;\n\t},\n\tset : function(input) {\n\t\tthis._input = null;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t\tthis.reset();\n\t\tthis._input = input;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"sourceName\", {\n\tget : function sourceName() {\n\t\treturn this._input.sourceName;\n\t}\n});\n\n// By default does not support multiple emits per nextToken invocation\n// for efficiency reasons. Subclass and override this method, nextToken,\n// and getToken (to push tokens into a list and pull from that list\n// rather than a single variable as this implementation does).\n// /\nLexer.prototype.emitToken = function(token) {\n\tthis._token = token;\n};\n\n// The standard method called to automatically emit a token at the\n// outermost lexical rule. The token object should point into the\n// char buffer start..stop. If there is a text override in 'text',\n// use that to set the token's text. Override this method to emit\n// custom Token objects or provide a new factory.\n// /\nLexer.prototype.emit = function() {\n\tvar t = this._factory.create(this._tokenFactorySourcePair, this._type,\n\t\t\tthis._text, this._channel, this._tokenStartCharIndex, this\n\t\t\t\t\t.getCharIndex() - 1, this._tokenStartLine,\n\t\t\tthis._tokenStartColumn);\n\tthis.emitToken(t);\n\treturn t;\n};\n\nLexer.prototype.emitEOF = function() {\n\tvar cpos = this.column;\n\tvar lpos = this.line;\n\tvar eof = this._factory.create(this._tokenFactorySourcePair, Token.EOF,\n\t\t\tnull, Token.DEFAULT_CHANNEL, this._input.index,\n\t\t\tthis._input.index - 1, lpos, cpos);\n\tthis.emitToken(eof);\n\treturn eof;\n};\n\nObject.defineProperty(Lexer.prototype, \"type\", {\n\tget : function() {\n\t\treturn this.type;\n\t},\n\tset : function(type) {\n\t\tthis._type = type;\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"line\", {\n\tget : function() {\n\t\treturn this._interp.line;\n\t},\n\tset : function(line) {\n\t\tthis._interp.line = line;\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"column\", {\n\tget : function() {\n\t\treturn this._interp.column;\n\t},\n\tset : function(column) {\n\t\tthis._interp.column = column;\n\t}\n});\n\n\n// What is the index of the current character of lookahead?///\nLexer.prototype.getCharIndex = function() {\n\treturn this._input.index;\n};\n\n// Return the text matched so far for the current token or any text override.\n//Set the complete text of this token; it wipes any previous changes to the text.\nObject.defineProperty(Lexer.prototype, \"text\", {\n\tget : function() {\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t} else {\n\t\t\treturn this._interp.getText(this._input);\n\t\t}\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n// Return a list of all Token objects in input char stream.\n// Forces load of all tokens. Does not include EOF token.\n// /\nLexer.prototype.getAllTokens = function() {\n\tvar tokens = [];\n\tvar t = this.nextToken();\n\twhile (t.type !== Token.EOF) {\n\t\ttokens.push(t);\n\t\tt = this.nextToken();\n\t}\n\treturn tokens;\n};\n\nLexer.prototype.notifyListeners = function(e) {\n\tvar start = this._tokenStartCharIndex;\n\tvar stop = this._input.index;\n\tvar text = this._input.getText(start, stop);\n\tvar msg = \"token recognition error at: '\" + this.getErrorDisplay(text) + \"'\";\n\tvar listener = this.getErrorListenerDispatch();\n\tlistener.syntaxError(this, null, this._tokenStartLine,\n\t\t\tthis._tokenStartColumn, msg, e);\n};\n\nLexer.prototype.getErrorDisplay = function(s) {\n\tvar d = [];\n\tfor (var i = 0; i < s.length; i++) {\n\t\td.push(s[i]);\n\t}\n\treturn d.join('');\n};\n\nLexer.prototype.getErrorDisplayForChar = function(c) {\n\tif (c.charCodeAt(0) === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else if (c === '\\n') {\n\t\treturn \"\\\\n\";\n\t} else if (c === '\\t') {\n\t\treturn \"\\\\t\";\n\t} else if (c === '\\r') {\n\t\treturn \"\\\\r\";\n\t} else {\n\t\treturn c;\n\t}\n};\n\nLexer.prototype.getCharErrorDisplay = function(c) {\n\treturn \"'\" + this.getErrorDisplayForChar(c) + \"'\";\n};\n\n// Lexers can normally match any char in it's vocabulary after matching\n// a token, so do the easy thing and just kill a character and hope\n// it all works out. You can instead use the rule invocation stack\n// to do sophisticated error recovery if you are in a fragment rule.\n// /\nLexer.prototype.recover = function(re) {\n\tif (this._input.LA(1) !== Token.EOF) {\n\t\tif (re instanceof LexerNoViableAltException) {\n\t\t\t// skip a char and try again\n\t\t\tthis._interp.consume(this._input);\n\t\t} else {\n\t\t\t// TODO: Do we lose character or line position information?\n\t\t\tthis._input.consume();\n\t\t}\n\t}\n};\n\nexports.Lexer = Lexer;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Token = require('./Token').Token;\nvar ParseTreeListener = require('./tree/Tree').ParseTreeListener;\nvar Recognizer = require('./Recognizer').Recognizer;\nvar DefaultErrorStrategy = require('./error/ErrorStrategy').DefaultErrorStrategy;\nvar ATNDeserializer = require('./atn/ATNDeserializer').ATNDeserializer;\nvar ATNDeserializationOptions = require('./atn/ATNDeserializationOptions').ATNDeserializationOptions;\nvar TerminalNode = require('./tree/Tree').TerminalNode;\nvar ErrorNode = require('./tree/Tree').ErrorNode;\n\nfunction TraceListener(parser) {\n\tParseTreeListener.call(this);\n this.parser = parser;\n\treturn this;\n}\n\nTraceListener.prototype = Object.create(ParseTreeListener.prototype);\nTraceListener.prototype.constructor = TraceListener;\n\nTraceListener.prototype.enterEveryRule = function(ctx) {\n\tconsole.log(\"enter \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n};\n\nTraceListener.prototype.visitTerminal = function( node) {\n\tconsole.log(\"consume \" + node.symbol + \" rule \" + this.parser.ruleNames[this.parser._ctx.ruleIndex]);\n};\n\nTraceListener.prototype.exitEveryRule = function(ctx) {\n\tconsole.log(\"exit \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n};\n\n// this is all the parsing support code essentially; most of it is error\n// recovery stuff.//\nfunction Parser(input) {\n\tRecognizer.call(this);\n\t// The input stream.\n\tthis._input = null;\n\t// The error handling strategy for the parser. The default value is a new\n\t// instance of {@link DefaultErrorStrategy}.\n\tthis._errHandler = new DefaultErrorStrategy();\n\tthis._precedenceStack = [];\n\tthis._precedenceStack.push(0);\n\t// The {@link ParserRuleContext} object for the currently executing rule.\n\t// this is always non-null during the parsing process.\n\tthis._ctx = null;\n\t// Specifies whether or not the parser should construct a parse tree during\n\t// the parsing process. The default value is {@code true}.\n\tthis.buildParseTrees = true;\n\t// When {@link //setTrace}{@code (true)} is called, a reference to the\n\t// {@link TraceListener} is stored here so it can be easily removed in a\n\t// later call to {@link //setTrace}{@code (false)}. The listener itself is\n\t// implemented as a parser listener so this field is not directly used by\n\t// other parser methods.\n\tthis._tracer = null;\n\t// The list of {@link ParseTreeListener} listeners registered to receive\n\t// events during the parse.\n\tthis._parseListeners = null;\n\t// The number of syntax errors reported during parsing. this value is\n\t// incremented each time {@link //notifyErrorListeners} is called.\n\tthis._syntaxErrors = 0;\n\tthis.setInputStream(input);\n\treturn this;\n}\n\nParser.prototype = Object.create(Recognizer.prototype);\nParser.prototype.contructor = Parser;\n\n// this field maps from the serialized ATN string to the deserialized {@link\n// ATN} with\n// bypass alternatives.\n//\n// @see ATNDeserializationOptions//isGenerateRuleBypassTransitions()\n//\nParser.bypassAltsAtnCache = {};\n\n// reset the parser's state//\nParser.prototype.reset = function() {\n\tif (this._input !== null) {\n\t\tthis._input.seek(0);\n\t}\n\tthis._errHandler.reset(this);\n\tthis._ctx = null;\n\tthis._syntaxErrors = 0;\n\tthis.setTrace(false);\n\tthis._precedenceStack = [];\n\tthis._precedenceStack.push(0);\n\tif (this._interp !== null) {\n\t\tthis._interp.reset();\n\t}\n};\n\n// Match current input symbol against {@code ttype}. If the symbol type\n// matches, {@link ANTLRErrorStrategy//reportMatch} and {@link //consume} are\n// called to complete the match process.\n//\n// <p>If the symbol type does not match,\n// {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n// strategy to attempt recovery. If {@link //getBuildParseTree} is\n// {@code true} and the token index of the symbol returned by\n// {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n// the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>\n//\n// @param ttype the token type to match\n// @return the matched symbol\n// @throws RecognitionException if the current input symbol did not match\n// {@code ttype} and the error strategy could not recover from the\n// mismatched symbol\n\nParser.prototype.match = function(ttype) {\n\tvar t = this.getCurrentToken();\n\tif (t.type === ttype) {\n\t\tthis._errHandler.reportMatch(this);\n\t\tthis.consume();\n\t} else {\n\t\tt = this._errHandler.recoverInline(this);\n\t\tif (this.buildParseTrees && t.tokenIndex === -1) {\n\t\t\t// we must have conjured up a new token during single token\n\t\t\t// insertion\n\t\t\t// if it's not the current symbol\n\t\t\tthis._ctx.addErrorNode(t);\n\t\t}\n\t}\n\treturn t;\n};\n// Match current input symbol as a wildcard. If the symbol type matches\n// (i.e. has a value greater than 0), {@link ANTLRErrorStrategy//reportMatch}\n// and {@link //consume} are called to complete the match process.\n//\n// <p>If the symbol type does not match,\n// {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n// strategy to attempt recovery. If {@link //getBuildParseTree} is\n// {@code true} and the token index of the symbol returned by\n// {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n// the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>\n//\n// @return the matched symbol\n// @throws RecognitionException if the current input symbol did not match\n// a wildcard and the error strategy could not recover from the mismatched\n// symbol\n\nParser.prototype.matchWildcard = function() {\n\tvar t = this.getCurrentToken();\n\tif (t.type > 0) {\n\t\tthis._errHandler.reportMatch(this);\n\t\tthis.consume();\n\t} else {\n\t\tt = this._errHandler.recoverInline(this);\n\t\tif (this._buildParseTrees && t.tokenIndex === -1) {\n\t\t\t// we must have conjured up a new token during single token\n\t\t\t// insertion\n\t\t\t// if it's not the current symbol\n\t\t\tthis._ctx.addErrorNode(t);\n\t\t}\n\t}\n\treturn t;\n};\n\nParser.prototype.getParseListeners = function() {\n\treturn this._parseListeners || [];\n};\n\n// Registers {@code listener} to receive events during the parsing process.\n//\n// <p>To support output-preserving grammar transformations (including but not\n// limited to left-recursion removal, automated left-factoring, and\n// optimized code generation), calls to listener methods during the parse\n// may differ substantially from calls made by\n// {@link ParseTreeWalker//DEFAULT} used after the parse is complete. In\n// particular, rule entry and exit events may occur in a different order\n// during the parse than after the parser. In addition, calls to certain\n// rule entry methods may be omitted.</p>\n//\n// <p>With the following specific exceptions, calls to listener events are\n// <em>deterministic</em>, i.e. for identical input the calls to listener\n// methods will be the same.</p>\n//\n// <ul>\n// <li>Alterations to the grammar used to generate code may change the\n// behavior of the listener calls.</li>\n// <li>Alterations to the command line options passed to ANTLR 4 when\n// generating the parser may change the behavior of the listener calls.</li>\n// <li>Changing the version of the ANTLR Tool used to generate the parser\n// may change the behavior of the listener calls.</li>\n// </ul>\n//\n// @param listener the listener to add\n//\n// @throws NullPointerException if {@code} listener is {@code null}\n//\nParser.prototype.addParseListener = function(listener) {\n\tif (listener === null) {\n\t\tthrow \"listener\";\n\t}\n\tif (this._parseListeners === null) {\n\t\tthis._parseListeners = [];\n\t}\n\tthis._parseListeners.push(listener);\n};\n\n//\n// Remove {@code listener} from the list of parse listeners.\n//\n// <p>If {@code listener} is {@code null} or has not been added as a parse\n// listener, this method does nothing.</p>\n// @param listener the listener to remove\n//\nParser.prototype.removeParseListener = function(listener) {\n\tif (this._parseListeners !== null) {\n\t\tvar idx = this._parseListeners.indexOf(listener);\n\t\tif (idx >= 0) {\n\t\t\tthis._parseListeners.splice(idx, 1);\n\t\t}\n\t\tif (this._parseListeners.length === 0) {\n\t\t\tthis._parseListeners = null;\n\t\t}\n\t}\n};\n\n// Remove all parse listeners.\nParser.prototype.removeParseListeners = function() {\n\tthis._parseListeners = null;\n};\n\n// Notify any parse listeners of an enter rule event.\nParser.prototype.triggerEnterRuleEvent = function() {\n\tif (this._parseListeners !== null) {\n var ctx = this._ctx;\n\t\tthis._parseListeners.map(function(listener) {\n\t\t\tlistener.enterEveryRule(ctx);\n\t\t\tctx.enterRule(listener);\n\t\t});\n\t}\n};\n\n//\n// Notify any parse listeners of an exit rule event.\n//\n// @see //addParseListener\n//\nParser.prototype.triggerExitRuleEvent = function() {\n\tif (this._parseListeners !== null) {\n\t\t// reverse order walk of listeners\n var ctx = this._ctx;\n\t\tthis._parseListeners.slice(0).reverse().map(function(listener) {\n\t\t\tctx.exitRule(listener);\n\t\t\tlistener.exitEveryRule(ctx);\n\t\t});\n\t}\n};\n\nParser.prototype.getTokenFactory = function() {\n\treturn this._input.tokenSource._factory;\n};\n\n// Tell our token source and error strategy about a new way to create tokens.//\nParser.prototype.setTokenFactory = function(factory) {\n\tthis._input.tokenSource._factory = factory;\n};\n\n// The ATN with bypass alternatives is expensive to create so we create it\n// lazily.\n//\n// @throws UnsupportedOperationException if the current parser does not\n// implement the {@link //getSerializedATN()} method.\n//\nParser.prototype.getATNWithBypassAlts = function() {\n\tvar serializedAtn = this.getSerializedATN();\n\tif (serializedAtn === null) {\n\t\tthrow \"The current parser does not support an ATN with bypass alternatives.\";\n\t}\n\tvar result = this.bypassAltsAtnCache[serializedAtn];\n\tif (result === null) {\n\t\tvar deserializationOptions = new ATNDeserializationOptions();\n\t\tdeserializationOptions.generateRuleBypassTransitions = true;\n\t\tresult = new ATNDeserializer(deserializationOptions)\n\t\t\t\t.deserialize(serializedAtn);\n\t\tthis.bypassAltsAtnCache[serializedAtn] = result;\n\t}\n\treturn result;\n};\n\n// The preferred method of getting a tree pattern. For example, here's a\n// sample use:\n//\n// <pre>\n// ParseTree t = parser.expr();\n// ParseTreePattern p = parser.compileParseTreePattern(\"<ID>+0\",\n// MyParser.RULE_expr);\n// ParseTreeMatch m = p.match(t);\n// String id = m.get(\"ID\");\n// </pre>\n\nvar Lexer = require('./Lexer').Lexer;\n\nParser.prototype.compileParseTreePattern = function(pattern, patternRuleIndex, lexer) {\n\tlexer = lexer || null;\n\tif (lexer === null) {\n\t\tif (this.getTokenStream() !== null) {\n\t\t\tvar tokenSource = this.getTokenStream().tokenSource;\n\t\t\tif (tokenSource instanceof Lexer) {\n\t\t\t\tlexer = tokenSource;\n\t\t\t}\n\t\t}\n\t}\n\tif (lexer === null) {\n\t\tthrow \"Parser can't discover a lexer to use\";\n\t}\n\tvar m = new ParseTreePatternMatcher(lexer, this);\n\treturn m.compile(pattern, patternRuleIndex);\n};\n\nParser.prototype.getInputStream = function() {\n\treturn this.getTokenStream();\n};\n\nParser.prototype.setInputStream = function(input) {\n\tthis.setTokenStream(input);\n};\n\nParser.prototype.getTokenStream = function() {\n\treturn this._input;\n};\n\n// Set the token stream and reset the parser.//\nParser.prototype.setTokenStream = function(input) {\n\tthis._input = null;\n\tthis.reset();\n\tthis._input = input;\n};\n\n// Match needs to return the current input symbol, which gets put\n// into the label for the associated token ref; e.g., x=ID.\n//\nParser.prototype.getCurrentToken = function() {\n\treturn this._input.LT(1);\n};\n\nParser.prototype.notifyErrorListeners = function(msg, offendingToken, err) {\n\toffendingToken = offendingToken || null;\n\terr = err || null;\n\tif (offendingToken === null) {\n\t\toffendingToken = this.getCurrentToken();\n\t}\n\tthis._syntaxErrors += 1;\n\tvar line = offendingToken.line;\n\tvar column = offendingToken.column;\n\tvar listener = this.getErrorListenerDispatch();\n\tlistener.syntaxError(this, offendingToken, line, column, msg, err);\n};\n\n//\n// Consume and return the {@linkplain //getCurrentToken current symbol}.\n//\n// <p>E.g., given the following input with {@code A} being the current\n// lookahead symbol, this function moves the cursor to {@code B} and returns\n// {@code A}.</p>\n//\n// <pre>\n// A B\n// ^\n// </pre>\n//\n// If the parser is not in error recovery mode, the consumed symbol is added\n// to the parse tree using {@link ParserRuleContext//addChild(Token)}, and\n// {@link ParseTreeListener//visitTerminal} is called on any parse listeners.\n// If the parser <em>is</em> in error recovery mode, the consumed symbol is\n// added to the parse tree using\n// {@link ParserRuleContext//addErrorNode(Token)}, and\n// {@link ParseTreeListener//visitErrorNode} is called on any parse\n// listeners.\n//\nParser.prototype.consume = function() {\n\tvar o = this.getCurrentToken();\n\tif (o.type !== Token.EOF) {\n\t\tthis.getInputStream().consume();\n\t}\n\tvar hasListener = this._parseListeners !== null && this._parseListeners.length > 0;\n\tif (this.buildParseTrees || hasListener) {\n\t\tvar node;\n\t\tif (this._errHandler.inErrorRecoveryMode(this)) {\n\t\t\tnode = this._ctx.addErrorNode(o);\n\t\t} else {\n\t\t\tnode = this._ctx.addTokenNode(o);\n\t\t}\n node.invokingState = this.state;\n\t\tif (hasListener) {\n\t\t\tthis._parseListeners.map(function(listener) {\n\t\t\t\tif (node instanceof ErrorNode || (node.isErrorNode !== undefined && node.isErrorNode())) {\n\t\t\t\t\tlistener.visitErrorNode(node);\n\t\t\t\t} else if (node instanceof TerminalNode) {\n\t\t\t\t\tlistener.visitTerminal(node);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn o;\n};\n\nParser.prototype.addContextToParseTree = function() {\n\t// add current context to parent if we have a parent\n\tif (this._ctx.parentCtx !== null) {\n\t\tthis._ctx.parentCtx.addChild(this._ctx);\n\t}\n};\n\n// Always called by generated parsers upon entry to a rule. Access field\n// {@link //_ctx} get the current context.\n\nParser.prototype.enterRule = function(localctx, state, ruleIndex) {\n\tthis.state = state;\n\tthis._ctx = localctx;\n\tthis._ctx.start = this._input.LT(1);\n\tif (this.buildParseTrees) {\n\t\tthis.addContextToParseTree();\n\t}\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent();\n\t}\n};\n\nParser.prototype.exitRule = function() {\n\tthis._ctx.stop = this._input.LT(-1);\n\t// trigger event on _ctx, before it reverts to parent\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerExitRuleEvent();\n\t}\n\tthis.state = this._ctx.invokingState;\n\tthis._ctx = this._ctx.parentCtx;\n};\n\nParser.prototype.enterOuterAlt = function(localctx, altNum) {\n \tlocalctx.setAltNumber(altNum);\n\t// if we have new localctx, make sure we replace existing ctx\n\t// that is previous child of parse tree\n\tif (this.buildParseTrees && this._ctx !== localctx) {\n\t\tif (this._ctx.parentCtx !== null) {\n\t\t\tthis._ctx.parentCtx.removeLastChild();\n\t\t\tthis._ctx.parentCtx.addChild(localctx);\n\t\t}\n\t}\n\tthis._ctx = localctx;\n};\n\n// Get the precedence level for the top-most precedence rule.\n//\n// @return The precedence level for the top-most precedence rule, or -1 if\n// the parser context is not nested within a precedence rule.\n\nParser.prototype.getPrecedence = function() {\n\tif (this._precedenceStack.length === 0) {\n\t\treturn -1;\n\t} else {\n\t\treturn this._precedenceStack[this._precedenceStack.length-1];\n\t}\n};\n\nParser.prototype.enterRecursionRule = function(localctx, state, ruleIndex,\n\t\tprecedence) {\n\tthis.state = state;\n\tthis._precedenceStack.push(precedence);\n\tthis._ctx = localctx;\n\tthis._ctx.start = this._input.LT(1);\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for\n\t\t\t\t\t\t\t\t\t\t// left-recursive rules\n\t}\n};\n\n//\n// Like {@link //enterRule} but for recursive rules.\n\nParser.prototype.pushNewRecursionContext = function(localctx, state, ruleIndex) {\n\tvar previous = this._ctx;\n\tprevious.parentCtx = localctx;\n\tprevious.invokingState = state;\n\tprevious.stop = this._input.LT(-1);\n\n\tthis._ctx = localctx;\n\tthis._ctx.start = previous.start;\n\tif (this.buildParseTrees) {\n\t\tthis._ctx.addChild(previous);\n\t}\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for\n\t\t\t\t\t\t\t\t\t\t// left-recursive rules\n\t}\n};\n\nParser.prototype.unrollRecursionContexts = function(parentCtx) {\n\tthis._precedenceStack.pop();\n\tthis._ctx.stop = this._input.LT(-1);\n\tvar retCtx = this._ctx; // save current ctx (return value)\n\t// unroll so _ctx is as it was before call to recursive method\n\tif (this._parseListeners !== null) {\n\t\twhile (this._ctx !== parentCtx) {\n\t\t\tthis.triggerExitRuleEvent();\n\t\t\tthis._ctx = this._ctx.parentCtx;\n\t\t}\n\t} else {\n\t\tthis._ctx = parentCtx;\n\t}\n\t// hook into tree\n\tretCtx.parentCtx = parentCtx;\n\tif (this.buildParseTrees && parentCtx !== null) {\n\t\t// add return ctx into invoking rule's tree\n\t\tparentCtx.addChild(retCtx);\n\t}\n};\n\nParser.prototype.getInvokingContext = function(ruleIndex) {\n\tvar ctx = this._ctx;\n\twhile (ctx !== null) {\n\t\tif (ctx.ruleIndex === ruleIndex) {\n\t\t\treturn ctx;\n\t\t}\n\t\tctx = ctx.parentCtx;\n\t}\n\treturn null;\n};\n\nParser.prototype.precpred = function(localctx, precedence) {\n\treturn precedence >= this._precedenceStack[this._precedenceStack.length-1];\n};\n\nParser.prototype.inContext = function(context) {\n\t// TODO: useful in parser?\n\treturn false;\n};\n\n//\n// Checks whether or not {@code symbol} can follow the current state in the\n// ATN. The behavior of this method is equivalent to the following, but is\n// implemented such that the complete context-sensitive follow set does not\n// need to be explicitly constructed.\n//\n// <pre>\n// return getExpectedTokens().contains(symbol);\n// </pre>\n//\n// @param symbol the symbol type to check\n// @return {@code true} if {@code symbol} can follow the current state in\n// the ATN, otherwise {@code false}.\n\nParser.prototype.isExpectedToken = function(symbol) {\n\tvar atn = this._interp.atn;\n\tvar ctx = this._ctx;\n\tvar s = atn.states[this.state];\n\tvar following = atn.nextTokens(s);\n\tif (following.contains(symbol)) {\n\t\treturn true;\n\t}\n\tif (!following.contains(Token.EPSILON)) {\n\t\treturn false;\n\t}\n\twhile (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n\t\tvar invokingState = atn.states[ctx.invokingState];\n\t\tvar rt = invokingState.transitions[0];\n\t\tfollowing = atn.nextTokens(rt.followState);\n\t\tif (following.contains(symbol)) {\n\t\t\treturn true;\n\t\t}\n\t\tctx = ctx.parentCtx;\n\t}\n\tif (following.contains(Token.EPSILON) && symbol === Token.EOF) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n// Computes the set of input symbols which could follow the current parser\n// state and context, as given by {@link //getState} and {@link //getContext},\n// respectively.\n//\n// @see ATN//getExpectedTokens(int, RuleContext)\n//\nParser.prototype.getExpectedTokens = function() {\n\treturn this._interp.atn.getExpectedTokens(this.state, this._ctx);\n};\n\nParser.prototype.getExpectedTokensWithinCurrentRule = function() {\n\tvar atn = this._interp.atn;\n\tvar s = atn.states[this.state];\n\treturn atn.nextTokens(s);\n};\n\n// Get a rule's index (i.e., {@code RULE_ruleName} field) or -1 if not found.//\nParser.prototype.getRuleIndex = function(ruleName) {\n\tvar ruleIndex = this.getRuleIndexMap()[ruleName];\n\tif (ruleIndex !== null) {\n\t\treturn ruleIndex;\n\t} else {\n\t\treturn -1;\n\t}\n};\n\n// Return List<String> of the rule names in your parser instance\n// leading up to a call to the current rule. You could override if\n// you want more details such as the file/line info of where\n// in the ATN a rule is invoked.\n//\n// this is very useful for error messages.\n//\nParser.prototype.getRuleInvocationStack = function(p) {\n\tp = p || null;\n\tif (p === null) {\n\t\tp = this._ctx;\n\t}\n\tvar stack = [];\n\twhile (p !== null) {\n\t\t// compute what follows who invoked us\n\t\tvar ruleIndex = p.ruleIndex;\n\t\tif (ruleIndex < 0) {\n\t\t\tstack.push(\"n/a\");\n\t\t} else {\n\t\t\tstack.push(this.ruleNames[ruleIndex]);\n\t\t}\n\t\tp = p.parentCtx;\n\t}\n\treturn stack;\n};\n\n// For debugging and other purposes.//\nParser.prototype.getDFAStrings = function() {\n\treturn this._interp.decisionToDFA.toString();\n};\n// For debugging and other purposes.//\nParser.prototype.dumpDFA = function() {\n\tvar seenOne = false;\n\tfor (var i = 0; i < this._interp.decisionToDFA.length; i++) {\n\t\tvar dfa = this._interp.decisionToDFA[i];\n\t\tif (dfa.states.length > 0) {\n\t\t\tif (seenOne) {\n\t\t\t\tconsole.log();\n\t\t\t}\n\t\t\tthis.printer.println(\"Decision \" + dfa.decision + \":\");\n\t\t\tthis.printer.print(dfa.toString(this.literalNames, this.symbolicNames));\n\t\t\tseenOne = true;\n\t\t}\n\t}\n};\n\n/*\n\"\t\t\tprinter = function() {\\r\\n\" +\n\"\t\t\t\tthis.println = function(s) { document.getElementById('output') += s + '\\\\n'; }\\r\\n\" +\n\"\t\t\t\tthis.print = function(s) { document.getElementById('output') += s; }\\r\\n\" +\n\"\t\t\t};\\r\\n\" +\n*/\n\nParser.prototype.getSourceName = function() {\n\treturn this._input.sourceName;\n};\n\n// During a parse is sometimes useful to listen in on the rule entry and exit\n// events as well as token matches. this is for quick and dirty debugging.\n//\nParser.prototype.setTrace = function(trace) {\n\tif (!trace) {\n\t\tthis.removeParseListener(this._tracer);\n\t\tthis._tracer = null;\n\t} else {\n\t\tif (this._tracer !== null) {\n\t\t\tthis.removeParseListener(this._tracer);\n\t\t}\n\t\tthis._tracer = new TraceListener(this);\n\t\tthis.addParseListener(this._tracer);\n\t}\n};\n\nexports.Parser = Parser;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n//* A rule invocation record for parsing.\n//\n// Contains all of the information about the current rule not stored in the\n// RuleContext. It handles parse tree children list, Any ATN state\n// tracing, and the default values available for rule indications:\n// start, stop, rule index, current alt number, current\n// ATN state.\n//\n// Subclasses made for each rule and grammar track the parameters,\n// return values, locals, and labels specific to that rule. These\n// are the objects that are returned from rules.\n//\n// Note text is not an actual field of a rule return value; it is computed\n// from start and stop using the input stream's toString() method. I\n// could add a ctor to this so that we can pass in and store the input\n// stream, but I'm not sure we want to do that. It would seem to be undefined\n// to get the .text property anyway if the rule matches tokens from multiple\n// input streams.\n//\n// I do not use getters for fields of objects that are used simply to\n// group values such as this aggregate. The getters/setters are there to\n// satisfy the superclass interface.\n\nvar RuleContext = require('./RuleContext').RuleContext;\nvar Tree = require('./tree/Tree');\nvar INVALID_INTERVAL = Tree.INVALID_INTERVAL;\nvar TerminalNode = Tree.TerminalNode;\nvar TerminalNodeImpl = Tree.TerminalNodeImpl;\nvar ErrorNodeImpl = Tree.ErrorNodeImpl;\nvar Interval = require(\"./IntervalSet\").Interval;\n\nfunction ParserRuleContext(parent, invokingStateNumber) {\n\tparent = parent || null;\n\tinvokingStateNumber = invokingStateNumber || null;\n\tRuleContext.call(this, parent, invokingStateNumber);\n\tthis.ruleIndex = -1;\n // * If we are debugging or building a parse tree for a visitor,\n // we need to track all of the tokens and rule invocations associated\n // with this rule's context. This is empty for parsing w/o tree constr.\n // operation because we don't the need to track the details about\n // how we parse this rule.\n // /\n this.children = null;\n this.start = null;\n this.stop = null;\n // The exception that forced this rule to return. If the rule successfully\n // completed, this is {@code null}.\n this.exception = null;\n}\n\nParserRuleContext.prototype = Object.create(RuleContext.prototype);\nParserRuleContext.prototype.constructor = ParserRuleContext;\n\n// * COPY a ctx (I'm deliberately not using copy constructor)///\nParserRuleContext.prototype.copyFrom = function(ctx) {\n // from RuleContext\n this.parentCtx = ctx.parentCtx;\n this.invokingState = ctx.invokingState;\n this.children = null;\n this.start = ctx.start;\n this.stop = ctx.stop;\n // copy any error nodes to alt label node\n if(ctx.children) {\n this.children = [];\n // reset parent pointer for any error nodes\n \tctx.children.map(function(child) {\n \t\tif (child instanceof ErrorNodeImpl) {\n this.children.push(child);\n child.parentCtx = this;\n }\n\t\t}, this);\n\t}\n};\n\n// Double dispatch methods for listeners\nParserRuleContext.prototype.enterRule = function(listener) {\n};\n\nParserRuleContext.prototype.exitRule = function(listener) {\n};\n\n// * Does not set parent link; other add methods do that///\nParserRuleContext.prototype.addChild = function(child) {\n if (this.children === null) {\n this.children = [];\n }\n this.children.push(child);\n return child;\n};\n\n// * Used by enterOuterAlt to toss out a RuleContext previously added as\n// we entered a rule. If we have // label, we will need to remove\n// generic ruleContext object.\n// /\nParserRuleContext.prototype.removeLastChild = function() {\n if (this.children !== null) {\n this.children.pop();\n }\n};\n\nParserRuleContext.prototype.addTokenNode = function(token) {\n var node = new TerminalNodeImpl(token);\n this.addChild(node);\n node.parentCtx = this;\n return node;\n};\n\nParserRuleContext.prototype.addErrorNode = function(badToken) {\n var node = new ErrorNodeImpl(badToken);\n this.addChild(node);\n node.parentCtx = this;\n return node;\n};\n\nParserRuleContext.prototype.getChild = function(i, type) {\n\ttype = type || null;\n\tif (this.children === null || i < 0 || i >= this.children.length) {\n\t\treturn null;\n\t}\n\tif (type === null) {\n\t\treturn this.children[i];\n\t} else {\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif(child instanceof type) {\n\t\t\t\tif(i===0) {\n\t\t\t\t\treturn child;\n\t\t\t\t} else {\n\t\t\t\t\ti -= 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n }\n};\n\n\nParserRuleContext.prototype.getToken = function(ttype, i) {\n\tif (this.children === null || i < 0 || i >= this.children.length) {\n\t\treturn null;\n\t}\n\tfor(var j=0; j<this.children.length; j++) {\n\t\tvar child = this.children[j];\n\t\tif (child instanceof TerminalNode) {\n\t\t\tif (child.symbol.type === ttype) {\n\t\t\t\tif(i===0) {\n\t\t\t\t\treturn child;\n\t\t\t\t} else {\n\t\t\t\t\ti -= 1;\n\t\t\t\t}\n\t\t\t}\n }\n\t}\n return null;\n};\n\nParserRuleContext.prototype.getTokens = function(ttype ) {\n if (this.children=== null) {\n return [];\n } else {\n\t\tvar tokens = [];\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif (child instanceof TerminalNode) {\n\t\t\t\tif (child.symbol.type === ttype) {\n\t\t\t\t\ttokens.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn tokens;\n }\n};\n\nParserRuleContext.prototype.getTypedRuleContext = function(ctxType, i) {\n return this.getChild(i, ctxType);\n};\n\nParserRuleContext.prototype.getTypedRuleContexts = function(ctxType) {\n if (this.children=== null) {\n return [];\n } else {\n\t\tvar contexts = [];\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif (child instanceof ctxType) {\n\t\t\t\tcontexts.push(child);\n\t\t\t}\n\t\t}\n\t\treturn contexts;\n\t}\n};\n\nParserRuleContext.prototype.getChildCount = function() {\n\tif (this.children=== null) {\n\t\treturn 0;\n\t} else {\n\t\treturn this.children.length;\n\t}\n};\n\nParserRuleContext.prototype.getSourceInterval = function() {\n if( this.start === null || this.stop === null) {\n return INVALID_INTERVAL;\n } else {\n return new Interval(this.start.tokenIndex, this.stop.tokenIndex);\n }\n};\n\nRuleContext.EMPTY = new ParserRuleContext();\n\nfunction InterpreterRuleContext(parent, invokingStateNumber, ruleIndex) {\n\tParserRuleContext.call(parent, invokingStateNumber);\n this.ruleIndex = ruleIndex;\n return this;\n}\n\nInterpreterRuleContext.prototype = Object.create(ParserRuleContext.prototype);\nInterpreterRuleContext.prototype.constructor = InterpreterRuleContext;\n\nexports.ParserRuleContext = ParserRuleContext;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar RuleContext = require('./RuleContext').RuleContext;\nvar Hash = require('./Utils').Hash;\n\nfunction PredictionContext(cachedHashCode) {\n\tthis.cachedHashCode = cachedHashCode;\n}\n\n// Represents {@code $} in local context prediction, which means wildcard.\n// {@code//+x =//}.\n// /\nPredictionContext.EMPTY = null;\n\n// Represents {@code $} in an array in full context mode, when {@code $}\n// doesn't mean wildcard: {@code $ + x = [$,x]}. Here,\n// {@code $} = {@link //EMPTY_RETURN_STATE}.\n// /\nPredictionContext.EMPTY_RETURN_STATE = 0x7FFFFFFF;\n\nPredictionContext.globalNodeCount = 1;\nPredictionContext.id = PredictionContext.globalNodeCount;\n\n// Stores the computed hash code of this {@link PredictionContext}. The hash\n// code is computed in parts to match the following reference algorithm.\n//\n// <pre>\n// private int referenceHashCode() {\n// int hash = {@link MurmurHash//initialize MurmurHash.initialize}({@link\n// //INITIAL_HASH});\n//\n// for (int i = 0; i < {@link //size()}; i++) {\n// hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link //getParent\n// getParent}(i));\n// }\n//\n// for (int i = 0; i < {@link //size()}; i++) {\n// hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link\n// //getReturnState getReturnState}(i));\n// }\n//\n// hash = {@link MurmurHash//finish MurmurHash.finish}(hash, 2// {@link\n// //size()});\n// return hash;\n// }\n// </pre>\n// /\n\n// This means only the {@link //EMPTY} context is in set.\nPredictionContext.prototype.isEmpty = function() {\n\treturn this === PredictionContext.EMPTY;\n};\n\nPredictionContext.prototype.hasEmptyPath = function() {\n\treturn this.getReturnState(this.length - 1) === PredictionContext.EMPTY_RETURN_STATE;\n};\n\nPredictionContext.prototype.hashCode = function() {\n\treturn this.cachedHashCode;\n};\n\n\nPredictionContext.prototype.updateHashCode = function(hash) {\n hash.update(this.cachedHashCode);\n};\n/*\nfunction calculateHashString(parent, returnState) {\n\treturn \"\" + parent + returnState;\n}\n*/\n\n// Used to cache {@link PredictionContext} objects. Its used for the shared\n// context cash associated with contexts in DFA states. This cache\n// can be used for both lexers and parsers.\n\nfunction PredictionContextCache() {\n\tthis.cache = {};\n\treturn this;\n}\n\n// Add a context to the cache and return it. If the context already exists,\n// return that one instead and do not add a new context to the cache.\n// Protect shared cache from unsafe thread access.\n//\nPredictionContextCache.prototype.add = function(ctx) {\n\tif (ctx === PredictionContext.EMPTY) {\n\t\treturn PredictionContext.EMPTY;\n\t}\n\tvar existing = this.cache[ctx] || null;\n\tif (existing !== null) {\n\t\treturn existing;\n\t}\n\tthis.cache[ctx] = ctx;\n\treturn ctx;\n};\n\nPredictionContextCache.prototype.get = function(ctx) {\n\treturn this.cache[ctx] || null;\n};\n\nObject.defineProperty(PredictionContextCache.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.cache.length;\n\t}\n});\n\nfunction SingletonPredictionContext(parent, returnState) {\n\tvar hashCode = 0;\n\tif(parent !== null) {\n\t\tvar hash = new Hash();\n\t\thash.update(parent, returnState);\n hashCode = hash.finish();\n\t}\n\tPredictionContext.call(this, hashCode);\n\tthis.parentCtx = parent;\n\tthis.returnState = returnState;\n}\n\nSingletonPredictionContext.prototype = Object.create(PredictionContext.prototype);\nSingletonPredictionContext.prototype.contructor = SingletonPredictionContext;\n\nSingletonPredictionContext.create = function(parent, returnState) {\n\tif (returnState === PredictionContext.EMPTY_RETURN_STATE && parent === null) {\n\t\t// someone can pass in the bits of an array ctx that mean $\n\t\treturn PredictionContext.EMPTY;\n\t} else {\n\t\treturn new SingletonPredictionContext(parent, returnState);\n\t}\n};\n\nObject.defineProperty(SingletonPredictionContext.prototype, \"length\", {\n\tget : function() {\n\t\treturn 1;\n\t}\n});\n\nSingletonPredictionContext.prototype.getParent = function(index) {\n\treturn this.parentCtx;\n};\n\nSingletonPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnState;\n};\n\nSingletonPredictionContext.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof SingletonPredictionContext)) {\n\t\treturn false;\n\t} else if (this.hashCode() !== other.hashCode()) {\n\t\treturn false; // can't be same if hash is different\n\t} else {\n\t\tif(this.returnState !== other.returnState)\n return false;\n else if(this.parentCtx==null)\n return other.parentCtx==null\n\t\telse\n return this.parentCtx.equals(other.parentCtx);\n\t}\n};\n\nSingletonPredictionContext.prototype.toString = function() {\n\tvar up = this.parentCtx === null ? \"\" : this.parentCtx.toString();\n\tif (up.length === 0) {\n\t\tif (this.returnState === PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\treturn \"$\";\n\t\t} else {\n\t\t\treturn \"\" + this.returnState;\n\t\t}\n\t} else {\n\t\treturn \"\" + this.returnState + \" \" + up;\n\t}\n};\n\nfunction EmptyPredictionContext() {\n\tSingletonPredictionContext.call(this, null, PredictionContext.EMPTY_RETURN_STATE);\n\treturn this;\n}\n\nEmptyPredictionContext.prototype = Object.create(SingletonPredictionContext.prototype);\nEmptyPredictionContext.prototype.constructor = EmptyPredictionContext;\n\nEmptyPredictionContext.prototype.isEmpty = function() {\n\treturn true;\n};\n\nEmptyPredictionContext.prototype.getParent = function(index) {\n\treturn null;\n};\n\nEmptyPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnState;\n};\n\nEmptyPredictionContext.prototype.equals = function(other) {\n\treturn this === other;\n};\n\nEmptyPredictionContext.prototype.toString = function() {\n\treturn \"$\";\n};\n\nPredictionContext.EMPTY = new EmptyPredictionContext();\n\nfunction ArrayPredictionContext(parents, returnStates) {\n\t// Parent can be null only if full ctx mode and we make an array\n\t// from {@link //EMPTY} and non-empty. We merge {@link //EMPTY} by using\n\t// null parent and\n\t// returnState == {@link //EMPTY_RETURN_STATE}.\n\tvar h = new Hash();\n\th.update(parents, returnStates);\n\tvar hashCode = h.finish();\n\tPredictionContext.call(this, hashCode);\n\tthis.parents = parents;\n\tthis.returnStates = returnStates;\n\treturn this;\n}\n\nArrayPredictionContext.prototype = Object.create(PredictionContext.prototype);\nArrayPredictionContext.prototype.constructor = ArrayPredictionContext;\n\nArrayPredictionContext.prototype.isEmpty = function() {\n\t// since EMPTY_RETURN_STATE can only appear in the last position, we\n\t// don't need to verify that size==1\n\treturn this.returnStates[0] === PredictionContext.EMPTY_RETURN_STATE;\n};\n\nObject.defineProperty(ArrayPredictionContext.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.returnStates.length;\n\t}\n});\n\nArrayPredictionContext.prototype.getParent = function(index) {\n\treturn this.parents[index];\n};\n\nArrayPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnStates[index];\n};\n\nArrayPredictionContext.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof ArrayPredictionContext)) {\n\t\treturn false;\n\t} else if (this.hashCode() !== other.hashCode()) {\n\t\treturn false; // can't be same if hash is different\n\t} else {\n\t\treturn this.returnStates === other.returnStates &&\n\t\t\t\tthis.parents === other.parents;\n\t}\n};\n\nArrayPredictionContext.prototype.toString = function() {\n\tif (this.isEmpty()) {\n\t\treturn \"[]\";\n\t} else {\n\t\tvar s = \"[\";\n\t\tfor (var i = 0; i < this.returnStates.length; i++) {\n\t\t\tif (i > 0) {\n\t\t\t\ts = s + \", \";\n\t\t\t}\n\t\t\tif (this.returnStates[i] === PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\t\ts = s + \"$\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ts = s + this.returnStates[i];\n\t\t\tif (this.parents[i] !== null) {\n\t\t\t\ts = s + \" \" + this.parents[i];\n\t\t\t} else {\n\t\t\t\ts = s + \"null\";\n\t\t\t}\n\t\t}\n\t\treturn s + \"]\";\n\t}\n};\n\n// Convert a {@link RuleContext} tree to a {@link PredictionContext} graph.\n// Return {@link //EMPTY} if {@code outerContext} is empty or null.\n// /\nfunction predictionContextFromRuleContext(atn, outerContext) {\n\tif (outerContext === undefined || outerContext === null) {\n\t\touterContext = RuleContext.EMPTY;\n\t}\n\t// if we are in RuleContext of start rule, s, then PredictionContext\n\t// is EMPTY. Nobody called us. (if we are empty, return empty)\n\tif (outerContext.parentCtx === null || outerContext === RuleContext.EMPTY) {\n\t\treturn PredictionContext.EMPTY;\n\t}\n\t// If we have a parent, convert it to a PredictionContext graph\n\tvar parent = predictionContextFromRuleContext(atn, outerContext.parentCtx);\n\tvar state = atn.states[outerContext.invokingState];\n\tvar transition = state.transitions[0];\n\treturn SingletonPredictionContext.create(parent, transition.followState.stateNumber);\n}\n/*\nfunction calculateListsHashString(parents, returnStates) {\n\tvar s = \"\";\n\tparents.map(function(p) {\n\t\ts = s + p;\n\t});\n\treturnStates.map(function(r) {\n\t\ts = s + r;\n\t});\n\treturn s;\n}\n*/\nfunction merge(a, b, rootIsWildcard, mergeCache) {\n\t// share same graph if both same\n\tif (a === b) {\n\t\treturn a;\n\t}\n\tif (a instanceof SingletonPredictionContext && b instanceof SingletonPredictionContext) {\n\t\treturn mergeSingletons(a, b, rootIsWildcard, mergeCache);\n\t}\n\t// At least one of a or b is array\n\t// If one is $ and rootIsWildcard, return $ as// wildcard\n\tif (rootIsWildcard) {\n\t\tif (a instanceof EmptyPredictionContext) {\n\t\t\treturn a;\n\t\t}\n\t\tif (b instanceof EmptyPredictionContext) {\n\t\t\treturn b;\n\t\t}\n\t}\n\t// convert singleton so both are arrays to normalize\n\tif (a instanceof SingletonPredictionContext) {\n\t\ta = new ArrayPredictionContext([a.getParent()], [a.returnState]);\n\t}\n\tif (b instanceof SingletonPredictionContext) {\n\t\tb = new ArrayPredictionContext([b.getParent()], [b.returnState]);\n\t}\n\treturn mergeArrays(a, b, rootIsWildcard, mergeCache);\n}\n\n//\n// Merge two {@link SingletonPredictionContext} instances.\n//\n// <p>Stack tops equal, parents merge is same; return left graph.<br>\n// <embed src=\"images/SingletonMerge_SameRootSamePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Same stack top, parents differ; merge parents giving array node, then\n// remainders of those graphs. A new root node is created to point to the\n// merged parents.<br>\n// <embed src=\"images/SingletonMerge_SameRootDiffPar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Different stack tops pointing to same parent. Make array node for the\n// root where both element in the root point to the same (original)\n// parent.<br>\n// <embed src=\"images/SingletonMerge_DiffRootSamePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Different stack tops pointing to different parents. Make array node for\n// the root where each element points to the corresponding original\n// parent.<br>\n// <embed src=\"images/SingletonMerge_DiffRootDiffPar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// @param a the first {@link SingletonPredictionContext}\n// @param b the second {@link SingletonPredictionContext}\n// @param rootIsWildcard {@code true} if this is a local-context merge,\n// otherwise false to indicate a full-context merge\n// @param mergeCache\n// /\nfunction mergeSingletons(a, b, rootIsWildcard, mergeCache) {\n\tif (mergeCache !== null) {\n\t\tvar previous = mergeCache.get(a, b);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t\tprevious = mergeCache.get(b, a);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t}\n\n\tvar rootMerge = mergeRoot(a, b, rootIsWildcard);\n\tif (rootMerge !== null) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, rootMerge);\n\t\t}\n\t\treturn rootMerge;\n\t}\n\tif (a.returnState === b.returnState) {\n\t\tvar parent = merge(a.parentCtx, b.parentCtx, rootIsWildcard, mergeCache);\n\t\t// if parent is same as existing a or b parent or reduced to a parent,\n\t\t// return it\n\t\tif (parent === a.parentCtx) {\n\t\t\treturn a; // ax + bx = ax, if a=b\n\t\t}\n\t\tif (parent === b.parentCtx) {\n\t\t\treturn b; // ax + bx = bx, if a=b\n\t\t}\n\t\t// else: ax + ay = a'[x,y]\n\t\t// merge parents x and y, giving array node with x,y then remainders\n\t\t// of those graphs. dup a, a' points at merged array\n\t\t// new joined parent so create new singleton pointing to it, a'\n\t\tvar spc = SingletonPredictionContext.create(parent, a.returnState);\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, spc);\n\t\t}\n\t\treturn spc;\n\t} else { // a != b payloads differ\n\t\t// see if we can collapse parents due to $+x parents if local ctx\n\t\tvar singleParent = null;\n\t\tif (a === b || (a.parentCtx !== null && a.parentCtx === b.parentCtx)) { // ax +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// bx =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// [a,b]x\n\t\t\tsingleParent = a.parentCtx;\n\t\t}\n\t\tif (singleParent !== null) { // parents are same\n\t\t\t// sort payloads and use same parent\n\t\t\tvar payloads = [ a.returnState, b.returnState ];\n\t\t\tif (a.returnState > b.returnState) {\n\t\t\t\tpayloads[0] = b.returnState;\n\t\t\t\tpayloads[1] = a.returnState;\n\t\t\t}\n\t\t\tvar parents = [ singleParent, singleParent ];\n\t\t\tvar apc = new ArrayPredictionContext(parents, payloads);\n\t\t\tif (mergeCache !== null) {\n\t\t\t\tmergeCache.set(a, b, apc);\n\t\t\t}\n\t\t\treturn apc;\n\t\t}\n\t\t// parents differ and can't merge them. Just pack together\n\t\t// into array; can't merge.\n\t\t// ax + by = [ax,by]\n\t\tvar payloads = [ a.returnState, b.returnState ];\n\t\tvar parents = [ a.parentCtx, b.parentCtx ];\n\t\tif (a.returnState > b.returnState) { // sort by payload\n\t\t\tpayloads[0] = b.returnState;\n\t\t\tpayloads[1] = a.returnState;\n\t\t\tparents = [ b.parentCtx, a.parentCtx ];\n\t\t}\n\t\tvar a_ = new ArrayPredictionContext(parents, payloads);\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, a_);\n\t\t}\n\t\treturn a_;\n\t}\n}\n\n//\n// Handle case where at least one of {@code a} or {@code b} is\n// {@link //EMPTY}. In the following diagrams, the symbol {@code $} is used\n// to represent {@link //EMPTY}.\n//\n// <h2>Local-Context Merges</h2>\n//\n// <p>These local-context merge operations are used when {@code rootIsWildcard}\n// is true.</p>\n//\n// <p>{@link //EMPTY} is superset of any graph; return {@link //EMPTY}.<br>\n// <embed src=\"images/LocalMerge_EmptyRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>{@link //EMPTY} and anything is {@code //EMPTY}, so merged parent is\n// {@code //EMPTY}; return left graph.<br>\n// <embed src=\"images/LocalMerge_EmptyParent.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Special case of last merge if local context.<br>\n// <embed src=\"images/LocalMerge_DiffRoots.svg\" type=\"image/svg+xml\"/></p>\n//\n// <h2>Full-Context Merges</h2>\n//\n// <p>These full-context merge operations are used when {@code rootIsWildcard}\n// is false.</p>\n//\n// <p><embed src=\"images/FullMerge_EmptyRoots.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Must keep all contexts; {@link //EMPTY} in array is a special value (and\n// null parent).<br>\n// <embed src=\"images/FullMerge_EmptyRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p><embed src=\"images/FullMerge_SameRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// @param a the first {@link SingletonPredictionContext}\n// @param b the second {@link SingletonPredictionContext}\n// @param rootIsWildcard {@code true} if this is a local-context merge,\n// otherwise false to indicate a full-context merge\n// /\nfunction mergeRoot(a, b, rootIsWildcard) {\n\tif (rootIsWildcard) {\n\t\tif (a === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // // + b =//\n\t\t}\n\t\tif (b === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // a +// =//\n\t\t}\n\t} else {\n\t\tif (a === PredictionContext.EMPTY && b === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // $ + $ = $\n\t\t} else if (a === PredictionContext.EMPTY) { // $ + x = [$,x]\n\t\t\tvar payloads = [ b.returnState,\n\t\t\t\t\tPredictionContext.EMPTY_RETURN_STATE ];\n\t\t\tvar parents = [ b.parentCtx, null ];\n\t\t\treturn new ArrayPredictionContext(parents, payloads);\n\t\t} else if (b === PredictionContext.EMPTY) { // x + $ = [$,x] ($ is always first if present)\n\t\t\tvar payloads = [ a.returnState, PredictionContext.EMPTY_RETURN_STATE ];\n\t\t\tvar parents = [ a.parentCtx, null ];\n\t\t\treturn new ArrayPredictionContext(parents, payloads);\n\t\t}\n\t}\n\treturn null;\n}\n\n//\n// Merge two {@link ArrayPredictionContext} instances.\n//\n// <p>Different tops, different parents.<br>\n// <embed src=\"images/ArrayMerge_DiffTopDiffPar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, same parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopSamePar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, different parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopDiffPar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, all shared parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopSharePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Equal tops, merge parents and reduce top to\n// {@link SingletonPredictionContext}.<br>\n// <embed src=\"images/ArrayMerge_EqualTop.svg\" type=\"image/svg+xml\"/></p>\n// /\nfunction mergeArrays(a, b, rootIsWildcard, mergeCache) {\n\tif (mergeCache !== null) {\n\t\tvar previous = mergeCache.get(a, b);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t\tprevious = mergeCache.get(b, a);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t}\n\t// merge sorted payloads a + b => M\n\tvar i = 0; // walks a\n\tvar j = 0; // walks b\n\tvar k = 0; // walks target M array\n\n\tvar mergedReturnStates = [];\n\tvar mergedParents = [];\n\t// walk and merge to yield mergedParents, mergedReturnStates\n\twhile (i < a.returnStates.length && j < b.returnStates.length) {\n\t\tvar a_parent = a.parents[i];\n\t\tvar b_parent = b.parents[j];\n\t\tif (a.returnStates[i] === b.returnStates[j]) {\n\t\t\t// same payload (stack tops are equal), must yield merged singleton\n\t\t\tvar payload = a.returnStates[i];\n\t\t\t// $+$ = $\n\t\t\tvar bothDollars = payload === PredictionContext.EMPTY_RETURN_STATE &&\n\t\t\t\t\ta_parent === null && b_parent === null;\n\t\t\tvar ax_ax = (a_parent !== null && b_parent !== null && a_parent === b_parent); // ax+ax\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ax\n\t\t\tif (bothDollars || ax_ax) {\n\t\t\t\tmergedParents[k] = a_parent; // choose left\n\t\t\t\tmergedReturnStates[k] = payload;\n\t\t\t} else { // ax+ay -> a'[x,y]\n\t\t\t\tvar mergedParent = merge(a_parent, b_parent, rootIsWildcard, mergeCache);\n\t\t\t\tmergedParents[k] = mergedParent;\n\t\t\t\tmergedReturnStates[k] = payload;\n\t\t\t}\n\t\t\ti += 1; // hop over left one as usual\n\t\t\tj += 1; // but also skip one in right side since we merge\n\t\t} else if (a.returnStates[i] < b.returnStates[j]) { // copy a[i] to M\n\t\t\tmergedParents[k] = a_parent;\n\t\t\tmergedReturnStates[k] = a.returnStates[i];\n\t\t\ti += 1;\n\t\t} else { // b > a, copy b[j] to M\n\t\t\tmergedParents[k] = b_parent;\n\t\t\tmergedReturnStates[k] = b.returnStates[j];\n\t\t\tj += 1;\n\t\t}\n\t\tk += 1;\n\t}\n\t// copy over any payloads remaining in either array\n\tif (i < a.returnStates.length) {\n\t\tfor (var p = i; p < a.returnStates.length; p++) {\n\t\t\tmergedParents[k] = a.parents[p];\n\t\t\tmergedReturnStates[k] = a.returnStates[p];\n\t\t\tk += 1;\n\t\t}\n\t} else {\n\t\tfor (var p = j; p < b.returnStates.length; p++) {\n\t\t\tmergedParents[k] = b.parents[p];\n\t\t\tmergedReturnStates[k] = b.returnStates[p];\n\t\t\tk += 1;\n\t\t}\n\t}\n\t// trim merged if we combined a few that had same stack tops\n\tif (k < mergedParents.length) { // write index < last position; trim\n\t\tif (k === 1) { // for just one merged element, return singleton top\n\t\t\tvar a_ = SingletonPredictionContext.create(mergedParents[0],\n\t\t\t\t\tmergedReturnStates[0]);\n\t\t\tif (mergeCache !== null) {\n\t\t\t\tmergeCache.set(a, b, a_);\n\t\t\t}\n\t\t\treturn a_;\n\t\t}\n\t\tmergedParents = mergedParents.slice(0, k);\n\t\tmergedReturnStates = mergedReturnStates.slice(0, k);\n\t}\n\n\tvar M = new ArrayPredictionContext(mergedParents, mergedReturnStates);\n\n\t// if we created same array as a or b, return that instead\n\t// TODO: track whether this is possible above during merge sort for speed\n\tif (M === a) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, a);\n\t\t}\n\t\treturn a;\n\t}\n\tif (M === b) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, b);\n\t\t}\n\t\treturn b;\n\t}\n\tcombineCommonParents(mergedParents);\n\n\tif (mergeCache !== null) {\n\t\tmergeCache.set(a, b, M);\n\t}\n\treturn M;\n}\n\n//\n// Make pass over all <em>M</em> {@code parents}; merge any {@code equals()}\n// ones.\n// /\nfunction combineCommonParents(parents) {\n\tvar uniqueParents = {};\n\n\tfor (var p = 0; p < parents.length; p++) {\n\t\tvar parent = parents[p];\n\t\tif (!(parent in uniqueParents)) {\n\t\t\tuniqueParents[parent] = parent;\n\t\t}\n\t}\n\tfor (var q = 0; q < parents.length; q++) {\n\t\tparents[q] = uniqueParents[parents[q]];\n\t}\n}\n\nfunction getCachedPredictionContext(context, contextCache, visited) {\n\tif (context.isEmpty()) {\n\t\treturn context;\n\t}\n\tvar existing = visited[context] || null;\n\tif (existing !== null) {\n\t\treturn existing;\n\t}\n\texisting = contextCache.get(context);\n\tif (existing !== null) {\n\t\tvisited[context] = existing;\n\t\treturn existing;\n\t}\n\tvar changed = false;\n\tvar parents = [];\n\tfor (var i = 0; i < parents.length; i++) {\n\t\tvar parent = getCachedPredictionContext(context.getParent(i), contextCache, visited);\n\t\tif (changed || parent !== context.getParent(i)) {\n\t\t\tif (!changed) {\n\t\t\t\tparents = [];\n\t\t\t\tfor (var j = 0; j < context.length; j++) {\n\t\t\t\t\tparents[j] = context.getParent(j);\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tparents[i] = parent;\n\t\t}\n\t}\n\tif (!changed) {\n\t\tcontextCache.add(context);\n\t\tvisited[context] = context;\n\t\treturn context;\n\t}\n\tvar updated = null;\n\tif (parents.length === 0) {\n\t\tupdated = PredictionContext.EMPTY;\n\t} else if (parents.length === 1) {\n\t\tupdated = SingletonPredictionContext.create(parents[0], context\n\t\t\t\t.getReturnState(0));\n\t} else {\n\t\tupdated = new ArrayPredictionContext(parents, context.returnStates);\n\t}\n\tcontextCache.add(updated);\n\tvisited[updated] = updated;\n\tvisited[context] = updated;\n\n\treturn updated;\n}\n\n// ter's recursive version of Sam's getAllNodes()\nfunction getAllContextNodes(context, nodes, visited) {\n\tif (nodes === null) {\n\t\tnodes = [];\n\t\treturn getAllContextNodes(context, nodes, visited);\n\t} else if (visited === null) {\n\t\tvisited = {};\n\t\treturn getAllContextNodes(context, nodes, visited);\n\t} else {\n\t\tif (context === null || visited[context] !== null) {\n\t\t\treturn nodes;\n\t\t}\n\t\tvisited[context] = context;\n\t\tnodes.push(context);\n\t\tfor (var i = 0; i < context.length; i++) {\n\t\t\tgetAllContextNodes(context.getParent(i), nodes, visited);\n\t\t}\n\t\treturn nodes;\n\t}\n}\n\nexports.merge = merge;\nexports.PredictionContext = PredictionContext;\nexports.PredictionContextCache = PredictionContextCache;\nexports.SingletonPredictionContext = SingletonPredictionContext;\nexports.predictionContextFromRuleContext = predictionContextFromRuleContext;\nexports.getCachedPredictionContext = getCachedPredictionContext;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./Token').Token;\nvar ConsoleErrorListener = require('./error/ErrorListener').ConsoleErrorListener;\nvar ProxyErrorListener = require('./error/ErrorListener').ProxyErrorListener;\n\nfunction Recognizer() {\n this._listeners = [ ConsoleErrorListener.INSTANCE ];\n this._interp = null;\n this._stateNumber = -1;\n return this;\n}\n\nRecognizer.tokenTypeMapCache = {};\nRecognizer.ruleIndexMapCache = {};\n\n\nRecognizer.prototype.checkVersion = function(toolVersion) {\n var runtimeVersion = \"4.7.1\";\n if (runtimeVersion!==toolVersion) {\n console.log(\"ANTLR runtime and generated code versions disagree: \"+runtimeVersion+\"!=\"+toolVersion);\n }\n};\n\nRecognizer.prototype.addErrorListener = function(listener) {\n this._listeners.push(listener);\n};\n\nRecognizer.prototype.removeErrorListeners = function() {\n this._listeners = [];\n};\n\nRecognizer.prototype.getTokenTypeMap = function() {\n var tokenNames = this.getTokenNames();\n if (tokenNames===null) {\n throw(\"The current recognizer does not provide a list of token names.\");\n }\n var result = this.tokenTypeMapCache[tokenNames];\n if(result===undefined) {\n result = tokenNames.reduce(function(o, k, i) { o[k] = i; });\n result.EOF = Token.EOF;\n this.tokenTypeMapCache[tokenNames] = result;\n }\n return result;\n};\n\n// Get a map from rule names to rule indexes.\n//\n// <p>Used for XPath and tree pattern compilation.</p>\n//\nRecognizer.prototype.getRuleIndexMap = function() {\n var ruleNames = this.ruleNames;\n if (ruleNames===null) {\n throw(\"The current recognizer does not provide a list of rule names.\");\n }\n var result = this.ruleIndexMapCache[ruleNames];\n if(result===undefined) {\n result = ruleNames.reduce(function(o, k, i) { o[k] = i; });\n this.ruleIndexMapCache[ruleNames] = result;\n }\n return result;\n};\n\nRecognizer.prototype.getTokenType = function(tokenName) {\n var ttype = this.getTokenTypeMap()[tokenName];\n if (ttype !==undefined) {\n return ttype;\n } else {\n return Token.INVALID_TYPE;\n }\n};\n\n\n// What is the error header, normally line/character position information?//\nRecognizer.prototype.getErrorHeader = function(e) {\n var line = e.getOffendingToken().line;\n var column = e.getOffendingToken().column;\n return \"line \" + line + \":\" + column;\n};\n\n\n// How should a token be displayed in an error message? The default\n// is to display just the text, but during development you might\n// want to have a lot of information spit out. Override in that case\n// to use t.toString() (which, for CommonToken, dumps everything about\n// the token). This is better than forcing you to override a method in\n// your token objects because you don't have to go modify your lexer\n// so that it creates a new Java type.\n//\n// @deprecated This method is not called by the ANTLR 4 Runtime. Specific\n// implementations of {@link ANTLRErrorStrategy} may provide a similar\n// feature when necessary. For example, see\n// {@link DefaultErrorStrategy//getTokenErrorDisplay}.\n//\nRecognizer.prototype.getTokenErrorDisplay = function(t) {\n if (t===null) {\n return \"<no token>\";\n }\n var s = t.text;\n if (s===null) {\n if (t.type===Token.EOF) {\n s = \"<EOF>\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n s = s.replace(\"\\n\",\"\\\\n\").replace(\"\\r\",\"\\\\r\").replace(\"\\t\",\"\\\\t\");\n return \"'\" + s + \"'\";\n};\n\nRecognizer.prototype.getErrorListenerDispatch = function() {\n return new ProxyErrorListener(this._listeners);\n};\n\n// subclass needs to override these if there are sempreds or actions\n// that the ATN interp needs to execute\nRecognizer.prototype.sempred = function(localctx, ruleIndex, actionIndex) {\n return true;\n};\n\nRecognizer.prototype.precpred = function(localctx , precedence) {\n return true;\n};\n\n//Indicate that the recognizer has changed internal state that is\n//consistent with the ATN state passed in. This way we always know\n//where we are in the ATN as the parser goes along. The rule\n//context objects form a stack that lets us see the stack of\n//invoking rules. Combine this and we have complete ATN\n//configuration information.\n\nObject.defineProperty(Recognizer.prototype, \"state\", {\n\tget : function() {\n\t\treturn this._stateNumber;\n\t},\n\tset : function(state) {\n\t\tthis._stateNumber = state;\n\t}\n});\n\n\nexports.Recognizer = Recognizer;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A rule context is a record of a single rule invocation. It knows\n// which context invoked it, if any. If there is no parent context, then\n// naturally the invoking state is not valid. The parent link\n// provides a chain upwards from the current rule invocation to the root\n// of the invocation tree, forming a stack. We actually carry no\n// information about the rule associated with this context (except\n// when parsing). We keep only the state number of the invoking state from\n// the ATN submachine that invoked this. Contrast this with the s\n// pointer inside ParserRuleContext that tracks the current state\n// being \"executed\" for the current rule.\n//\n// The parent contexts are useful for computing lookahead sets and\n// getting error information.\n//\n// These objects are used during parsing and prediction.\n// For the special case of parsers, we use the subclass\n// ParserRuleContext.\n//\n// @see ParserRuleContext\n///\n\nvar RuleNode = require('./tree/Tree').RuleNode;\nvar INVALID_INTERVAL = require('./tree/Tree').INVALID_INTERVAL;\nvar INVALID_ALT_NUMBER = require('./atn/ATN').INVALID_ALT_NUMBER;\n\nfunction RuleContext(parent, invokingState) {\n\tRuleNode.call(this);\n\t// What context invoked this rule?\n\tthis.parentCtx = parent || null;\n\t// What state invoked the rule associated with this context?\n\t// The \"return address\" is the followState of invokingState\n\t// If parent is null, this should be -1.\n\tthis.invokingState = invokingState || -1;\n\treturn this;\n}\n\nRuleContext.prototype = Object.create(RuleNode.prototype);\nRuleContext.prototype.constructor = RuleContext;\n\nRuleContext.prototype.depth = function() {\n\tvar n = 0;\n\tvar p = this;\n\twhile (p !== null) {\n\t\tp = p.parentCtx;\n\t\tn += 1;\n\t}\n\treturn n;\n};\n\n// A context is empty if there is no invoking state; meaning nobody call\n// current context.\nRuleContext.prototype.isEmpty = function() {\n\treturn this.invokingState === -1;\n};\n\n// satisfy the ParseTree / SyntaxTree interface\n\nRuleContext.prototype.getSourceInterval = function() {\n\treturn INVALID_INTERVAL;\n};\n\nRuleContext.prototype.getRuleContext = function() {\n\treturn this;\n};\n\nRuleContext.prototype.getPayload = function() {\n\treturn this;\n};\n\n// Return the combined text of all child nodes. This method only considers\n// tokens which have been added to the parse tree.\n// <p>\n// Since tokens on hidden channels (e.g. whitespace or comments) are not\n// added to the parse trees, they will not appear in the output of this\n// method.\n// /\nRuleContext.prototype.getText = function() {\n\tif (this.getChildCount() === 0) {\n\t\treturn \"\";\n\t} else {\n\t\treturn this.children.map(function(child) {\n\t\t\treturn child.getText();\n\t\t}).join(\"\");\n\t}\n};\n\n// For rule associated with this parse tree internal node, return\n// the outer alternative number used to match the input. Default\n// implementation does not compute nor store this alt num. Create\n// a subclass of ParserRuleContext with backing field and set\n// option contextSuperClass.\n// to set it.\nRuleContext.prototype.getAltNumber = function() { return INVALID_ALT_NUMBER; }\n\n// Set the outer alternative number for this context node. Default\n// implementation does nothing to avoid backing field overhead for\n// trees that don't need it. Create\n// a subclass of ParserRuleContext with backing field and set\n// option contextSuperClass.\nRuleContext.prototype.setAltNumber = function(altNumber) { }\n\nRuleContext.prototype.getChild = function(i) {\n\treturn null;\n};\n\nRuleContext.prototype.getChildCount = function() {\n\treturn 0;\n};\n\nRuleContext.prototype.accept = function(visitor) {\n\treturn visitor.visitChildren(this);\n};\n\n//need to manage circular dependencies, so export now\nexports.RuleContext = RuleContext;\nvar Trees = require('./tree/Trees').Trees;\n\n\n// Print out a whole tree, not just a node, in LISP format\n// (root child1 .. childN). Print just a node if this is a leaf.\n//\n\nRuleContext.prototype.toStringTree = function(ruleNames, recog) {\n\treturn Trees.toStringTree(this, ruleNames, recog);\n};\n\nRuleContext.prototype.toString = function(ruleNames, stop) {\n\truleNames = ruleNames || null;\n\tstop = stop || null;\n\tvar p = this;\n\tvar s = \"[\";\n\twhile (p !== null && p !== stop) {\n\t\tif (ruleNames === null) {\n\t\t\tif (!p.isEmpty()) {\n\t\t\t\ts += p.invokingState;\n\t\t\t}\n\t\t} else {\n\t\t\tvar ri = p.ruleIndex;\n\t\t\tvar ruleName = (ri >= 0 && ri < ruleNames.length) ? ruleNames[ri]\n\t\t\t\t\t: \"\" + ri;\n\t\t\ts += ruleName;\n\t\t}\n\t\tif (p.parentCtx !== null && (ruleNames !== null || !p.parentCtx.isEmpty())) {\n\t\t\ts += \" \";\n\t\t}\n\t\tp = p.parentCtx;\n\t}\n\ts += \"]\";\n\treturn s;\n};\n\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// A token has properties: text, type, line, character position in the line\n// (so we can ignore tabs), token channel, index, and source from which\n// we obtained this token.\n\nfunction Token() {\n\tthis.source = null;\n\tthis.type = null; // token type of the token\n\tthis.channel = null; // The parser ignores everything not on DEFAULT_CHANNEL\n\tthis.start = null; // optional; return -1 if not implemented.\n\tthis.stop = null; // optional; return -1 if not implemented.\n\tthis.tokenIndex = null; // from 0..n-1 of the token object in the input stream\n\tthis.line = null; // line=1..n of the 1st character\n\tthis.column = null; // beginning of the line at which it occurs, 0..n-1\n\tthis._text = null; // text of the token.\n\treturn this;\n}\n\nToken.INVALID_TYPE = 0;\n\n// During lookahead operations, this \"token\" signifies we hit rule end ATN state\n// and did not follow it despite needing to.\nToken.EPSILON = -2;\n\nToken.MIN_USER_TOKEN_TYPE = 1;\n\nToken.EOF = -1;\n\n// All tokens go to the parser (unless skip() is called in that rule)\n// on a particular \"channel\". The parser tunes to a particular channel\n// so that whitespace etc... can go to the parser on a \"hidden\" channel.\n\nToken.DEFAULT_CHANNEL = 0;\n\n// Anything on different channel than DEFAULT_CHANNEL is not parsed\n// by parser.\n\nToken.HIDDEN_CHANNEL = 1;\n\n// Explicitly set the text for this token. If {code text} is not\n// {@code null}, then {@link //getText} will return this value rather than\n// extracting the text from the input.\n//\n// @param text The explicit text of the token, or {@code null} if the text\n// should be obtained from the input along with the start and stop indexes\n// of the token.\n\nObject.defineProperty(Token.prototype, \"text\", {\n\tget : function() {\n\t\treturn this._text;\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n\nToken.prototype.getTokenSource = function() {\n\treturn this.source[0];\n};\n\nToken.prototype.getInputStream = function() {\n\treturn this.source[1];\n};\n\nfunction CommonToken(source, type, channel, start, stop) {\n\tToken.call(this);\n\tthis.source = source !== undefined ? source : CommonToken.EMPTY_SOURCE;\n\tthis.type = type !== undefined ? type : null;\n\tthis.channel = channel !== undefined ? channel : Token.DEFAULT_CHANNEL;\n\tthis.start = start !== undefined ? start : -1;\n\tthis.stop = stop !== undefined ? stop : -1;\n\tthis.tokenIndex = -1;\n\tif (this.source[0] !== null) {\n\t\tthis.line = source[0].line;\n\t\tthis.column = source[0].column;\n\t} else {\n\t\tthis.column = -1;\n\t}\n\treturn this;\n}\n\nCommonToken.prototype = Object.create(Token.prototype);\nCommonToken.prototype.constructor = CommonToken;\n\n// An empty {@link Pair} which is used as the default value of\n// {@link //source} for tokens that do not have a source.\nCommonToken.EMPTY_SOURCE = [ null, null ];\n\n// Constructs a new {@link CommonToken} as a copy of another {@link Token}.\n//\n// <p>\n// If {@code oldToken} is also a {@link CommonToken} instance, the newly\n// constructed token will share a reference to the {@link //text} field and\n// the {@link Pair} stored in {@link //source}. Otherwise, {@link //text} will\n// be assigned the result of calling {@link //getText}, and {@link //source}\n// will be constructed from the result of {@link Token//getTokenSource} and\n// {@link Token//getInputStream}.</p>\n//\n// @param oldToken The token to copy.\n//\nCommonToken.prototype.clone = function() {\n\tvar t = new CommonToken(this.source, this.type, this.channel, this.start,\n\t\t\tthis.stop);\n\tt.tokenIndex = this.tokenIndex;\n\tt.line = this.line;\n\tt.column = this.column;\n\tt.text = this.text;\n\treturn t;\n};\n\nObject.defineProperty(CommonToken.prototype, \"text\", {\n\tget : function() {\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t}\n\t\tvar input = this.getInputStream();\n\t\tif (input === null) {\n\t\t\treturn null;\n\t\t}\n\t\tvar n = input.size;\n\t\tif (this.start < n && this.stop < n) {\n\t\t\treturn input.getText(this.start, this.stop);\n\t\t} else {\n\t\t\treturn \"<EOF>\";\n\t\t}\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n\nCommonToken.prototype.toString = function() {\n\tvar txt = this.text;\n\tif (txt !== null) {\n\t\ttxt = txt.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/\\t/g, \"\\\\t\");\n\t} else {\n\t\ttxt = \"<no text>\";\n\t}\n\treturn \"[@\" + this.tokenIndex + \",\" + this.start + \":\" + this.stop + \"='\" +\n\t\t\ttxt + \"',<\" + this.type + \">\" +\n\t\t\t(this.channel > 0 ? \",channel=\" + this.channel : \"\") + \",\" +\n\t\t\tthis.line + \":\" + this.column + \"]\";\n};\n\nexports.Token = Token;\nexports.CommonToken = CommonToken;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nfunction arrayToString(a) {\n return \"[\" + a.join(\", \") + \"]\";\n}\n\nString.prototype.seed = String.prototype.seed || Math.round(Math.random() * Math.pow(2, 32));\n\nString.prototype.hashCode = function () {\n var remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i,\n key = this.toString();\n\n remainder = key.length & 3; // key.length % 4\n bytes = key.length - remainder;\n h1 = String.prototype.seed;\n c1 = 0xcc9e2d51;\n c2 = 0x1b873593;\n i = 0;\n\n while (i < bytes) {\n k1 =\n ((key.charCodeAt(i) & 0xff)) |\n ((key.charCodeAt(++i) & 0xff) << 8) |\n ((key.charCodeAt(++i) & 0xff) << 16) |\n ((key.charCodeAt(++i) & 0xff) << 24);\n ++i;\n\n k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3:\n k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n case 2:\n k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n case 1:\n k1 ^= (key.charCodeAt(i) & 0xff);\n\n k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= k1;\n }\n\n h1 ^= key.length;\n\n h1 ^= h1 >>> 16;\n h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= h1 >>> 13;\n h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n h1 ^= h1 >>> 16;\n\n return h1 >>> 0;\n};\n\nfunction standardEqualsFunction(a, b) {\n return a.equals(b);\n}\n\nfunction standardHashCodeFunction(a) {\n return a.hashCode();\n}\n\nfunction Set(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n return this;\n}\n\nObject.defineProperty(Set.prototype, \"length\", {\n get: function () {\n var l = 0;\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l + this.data[key].length;\n }\n }\n return l;\n }\n});\n\nSet.prototype.add = function (value) {\n var hash = this.hashFunction(value);\n var key = \"hash_\" + hash;\n if (key in this.data) {\n var values = this.data[key];\n for (var i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n values.push(value);\n return value;\n } else {\n this.data[key] = [value];\n return value;\n }\n};\n\nSet.prototype.contains = function (value) {\n return this.get(value) != null;\n};\n\nSet.prototype.get = function (value) {\n var hash = this.hashFunction(value);\n var key = \"hash_\" + hash;\n if (key in this.data) {\n var values = this.data[key];\n for (var i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n }\n return null;\n};\n\nSet.prototype.values = function () {\n var l = [];\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l.concat(this.data[key]);\n }\n }\n return l;\n};\n\nSet.prototype.toString = function () {\n return arrayToString(this.values());\n};\n\nfunction BitSet() {\n this.data = [];\n return this;\n}\n\nBitSet.prototype.add = function (value) {\n this.data[value] = true;\n};\n\nBitSet.prototype.or = function (set) {\n var bits = this;\n Object.keys(set.data).map(function (alt) {\n bits.add(alt);\n });\n};\n\nBitSet.prototype.remove = function (value) {\n delete this.data[value];\n};\n\nBitSet.prototype.contains = function (value) {\n return this.data[value] === true;\n};\n\nBitSet.prototype.values = function () {\n return Object.keys(this.data);\n};\n\nBitSet.prototype.minValue = function () {\n return Math.min.apply(null, this.values());\n};\n\nBitSet.prototype.hashCode = function () {\n var hash = new Hash();\n hash.update(this.values());\n return hash.finish();\n};\n\nBitSet.prototype.equals = function (other) {\n if (!(other instanceof BitSet)) {\n return false;\n }\n return this.hashCode() === other.hashCode();\n};\n\nObject.defineProperty(BitSet.prototype, \"length\", {\n get: function () {\n return this.values().length;\n }\n});\n\nBitSet.prototype.toString = function () {\n return \"{\" + this.values().join(\", \") + \"}\";\n};\n\nfunction Map(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n return this;\n}\n\nObject.defineProperty(Map.prototype, \"length\", {\n get: function () {\n var l = 0;\n for (var hashKey in this.data) {\n if (hashKey.indexOf(\"hash_\") === 0) {\n l = l + this.data[hashKey].length;\n }\n }\n return l;\n }\n});\n\nMap.prototype.put = function (key, value) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if (hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key)) {\n var oldValue = entry.value;\n entry.value = value;\n return oldValue;\n }\n }\n entries.push({key:key, value:value});\n return value;\n } else {\n this.data[hashKey] = [{key:key, value:value}];\n return value;\n }\n};\n\nMap.prototype.containsKey = function (key) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if(hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return true;\n }\n }\n return false;\n};\n\nMap.prototype.get = function (key) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if(hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return entry.value;\n }\n }\n return null;\n};\n\nMap.prototype.entries = function () {\n var l = [];\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l.concat(this.data[key]);\n }\n }\n return l;\n};\n\n\nMap.prototype.getKeys = function () {\n return this.entries().map(function(e) {\n return e.key;\n });\n};\n\n\nMap.prototype.getValues = function () {\n return this.entries().map(function(e) {\n return e.value;\n });\n};\n\n\nMap.prototype.toString = function () {\n var ss = this.entries().map(function(entry) {\n return '{' + entry.key + ':' + entry.value + '}';\n });\n return '[' + ss.join(\", \") + ']';\n};\n\n\nfunction AltDict() {\n this.data = {};\n return this;\n}\n\n\nAltDict.prototype.get = function (key) {\n key = \"k-\" + key;\n if (key in this.data) {\n return this.data[key];\n } else {\n return null;\n }\n};\n\nAltDict.prototype.put = function (key, value) {\n key = \"k-\" + key;\n this.data[key] = value;\n};\n\nAltDict.prototype.values = function () {\n var data = this.data;\n var keys = Object.keys(this.data);\n return keys.map(function (key) {\n return data[key];\n });\n};\n\nfunction DoubleDict() {\n return this;\n}\n\nfunction Hash() {\n this.count = 0;\n this.hash = 0;\n return this;\n}\n\nHash.prototype.update = function () {\n for(var i=0;i<arguments.length;i++) {\n var value = arguments[i];\n if (value == null)\n continue;\n if(Array.isArray(value))\n this.update.apply(value);\n else {\n var k = 0;\n switch (typeof(value)) {\n case 'undefined':\n case 'function':\n continue;\n case 'number':\n case 'boolean':\n k = value;\n break;\n case 'string':\n k = value.hashCode();\n break;\n default:\n value.updateHashCode(this);\n continue;\n }\n k = k * 0xCC9E2D51;\n k = (k << 15) | (k >>> (32 - 15));\n k = k * 0x1B873593;\n this.count = this.count + 1;\n var hash = this.hash ^ k;\n hash = (hash << 13) | (hash >>> (32 - 13));\n hash = hash * 5 + 0xE6546B64;\n this.hash = hash;\n }\n }\n}\n\nHash.prototype.finish = function () {\n var hash = this.hash ^ (this.count * 4);\n hash = hash ^ (hash >>> 16);\n hash = hash * 0x85EBCA6B;\n hash = hash ^ (hash >>> 13);\n hash = hash * 0xC2B2AE35;\n hash = hash ^ (hash >>> 16);\n return hash;\n}\n\nfunction hashStuff() {\n var hash = new Hash();\n hash.update.apply(arguments);\n return hash.finish();\n}\n\nDoubleDict.prototype.get = function (a, b) {\n var d = this[a] || null;\n return d === null ? null : (d[b] || null);\n};\n\nDoubleDict.prototype.set = function (a, b, o) {\n var d = this[a] || null;\n if (d === null) {\n d = {};\n this[a] = d;\n }\n d[b] = o;\n};\n\n\nfunction escapeWhitespace(s, escapeSpaces) {\n s = s.replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\");\n if (escapeSpaces) {\n s = s.replace(/ /g, \"\\u00B7\");\n }\n return s;\n}\n\nfunction titleCase(str) {\n return str.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1);\n });\n};\n\nfunction equalArrays(a, b)\n{\n if (!Array.isArray(a) || !Array.isArray(b))\n return false;\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (var i = 0; i < a.length; i++) {\n if (a[i] == b[i])\n continue;\n if (!a[i].equals(b[i]))\n return false;\n }\n return true;\n};\n\nexports.Hash = Hash;\nexports.Set = Set;\nexports.Map = Map;\nexports.BitSet = BitSet;\nexports.AltDict = AltDict;\nexports.DoubleDict = DoubleDict;\nexports.hashStuff = hashStuff;\nexports.escapeWhitespace = escapeWhitespace;\nexports.arrayToString = arrayToString;\nexports.titleCase = titleCase;\nexports.equalArrays = equalArrays;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar LL1Analyzer = require('./../LL1Analyzer').LL1Analyzer;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\n\nfunction ATN(grammarType , maxTokenType) {\n\n // Used for runtime deserialization of ATNs from strings///\n // The type of the ATN.\n this.grammarType = grammarType;\n // The maximum value for any symbol recognized by a transition in the ATN.\n this.maxTokenType = maxTokenType;\n this.states = [];\n // Each subrule/rule is a decision point and we must track them so we\n // can go back later and build DFA predictors for them. This includes\n // all the rules, subrules, optional blocks, ()+, ()* etc...\n this.decisionToState = [];\n // Maps from rule index to starting state number.\n this.ruleToStartState = [];\n // Maps from rule index to stop state number.\n this.ruleToStopState = null;\n this.modeNameToStartState = {};\n // For lexer ATNs, this maps the rule index to the resulting token type.\n // For parser ATNs, this maps the rule index to the generated bypass token\n // type if the\n // {@link ATNDeserializationOptions//isGenerateRuleBypassTransitions}\n // deserialization option was specified; otherwise, this is {@code null}.\n this.ruleToTokenType = null;\n // For lexer ATNs, this is an array of {@link LexerAction} objects which may\n // be referenced by action transitions in the ATN.\n this.lexerActions = null;\n this.modeToStartState = [];\n\n return this;\n}\n\n// Compute the set of valid tokens that can occur starting in state {@code s}.\n// If {@code ctx} is null, the set of tokens will not include what can follow\n// the rule surrounding {@code s}. In other words, the set will be\n// restricted to tokens reachable staying within {@code s}'s rule.\nATN.prototype.nextTokensInContext = function(s, ctx) {\n var anal = new LL1Analyzer(this);\n return anal.LOOK(s, null, ctx);\n};\n\n// Compute the set of valid tokens that can occur starting in {@code s} and\n// staying in same rule. {@link Token//EPSILON} is in set if we reach end of\n// rule.\nATN.prototype.nextTokensNoContext = function(s) {\n if (s.nextTokenWithinRule !== null ) {\n return s.nextTokenWithinRule;\n }\n s.nextTokenWithinRule = this.nextTokensInContext(s, null);\n s.nextTokenWithinRule.readOnly = true;\n return s.nextTokenWithinRule;\n};\n\nATN.prototype.nextTokens = function(s, ctx) {\n if ( ctx===undefined ) {\n return this.nextTokensNoContext(s);\n } else {\n return this.nextTokensInContext(s, ctx);\n }\n};\n\nATN.prototype.addState = function( state) {\n if ( state !== null ) {\n state.atn = this;\n state.stateNumber = this.states.length;\n }\n this.states.push(state);\n};\n\nATN.prototype.removeState = function( state) {\n this.states[state.stateNumber] = null; // just free mem, don't shift states in list\n};\n\nATN.prototype.defineDecisionState = function( s) {\n this.decisionToState.push(s);\n s.decision = this.decisionToState.length-1;\n return s.decision;\n};\n\nATN.prototype.getDecisionState = function( decision) {\n if (this.decisionToState.length===0) {\n return null;\n } else {\n return this.decisionToState[decision];\n }\n};\n\n// Computes the set of input symbols which could follow ATN state number\n// {@code stateNumber} in the specified full {@code context}. This method\n// considers the complete parser context, but does not evaluate semantic\n// predicates (i.e. all predicates encountered during the calculation are\n// assumed true). If a path in the ATN exists from the starting state to the\n// {@link RuleStopState} of the outermost context without matching any\n// symbols, {@link Token//EOF} is added to the returned set.\n//\n// <p>If {@code context} is {@code null}, it is treated as\n// {@link ParserRuleContext//EMPTY}.</p>\n//\n// @param stateNumber the ATN state number\n// @param context the full parse context\n// @return The set of potentially valid input symbols which could follow the\n// specified state in the specified context.\n// @throws IllegalArgumentException if the ATN does not contain a state with\n// number {@code stateNumber}\nvar Token = require('./../Token').Token;\n\nATN.prototype.getExpectedTokens = function( stateNumber, ctx ) {\n if ( stateNumber < 0 || stateNumber >= this.states.length ) {\n throw(\"Invalid state number.\");\n }\n var s = this.states[stateNumber];\n var following = this.nextTokens(s);\n if (!following.contains(Token.EPSILON)) {\n return following;\n }\n var expected = new IntervalSet();\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n var invokingState = this.states[ctx.invokingState];\n var rt = invokingState.transitions[0];\n following = this.nextTokens(rt.followState);\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n ctx = ctx.parentCtx;\n }\n if (following.contains(Token.EPSILON)) {\n expected.addOne(Token.EOF);\n }\n return expected;\n};\n\nATN.INVALID_ALT_NUMBER = 0;\n\nexports.ATN = ATN;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A tuple: (ATN state, predicted alt, syntactic, semantic context).\n// The syntactic context is a graph-structured stack node whose\n// path(s) to the root is the rule invocation(s)\n// chain used to arrive at the state. The semantic context is\n// the tree of semantic predicates encountered before reaching\n// an ATN state.\n///\n\nvar DecisionState = require('./ATNState').DecisionState;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar Hash = require(\"../Utils\").Hash;\n\n\nfunction checkParams(params, isCfg) {\n\tif(params===null) {\n\t\tvar result = { state:null, alt:null, context:null, semanticContext:null };\n\t\tif(isCfg) {\n\t\t\tresult.reachesIntoOuterContext = 0;\n\t\t}\n\t\treturn result;\n\t} else {\n\t\tvar props = {};\n\t\tprops.state = params.state || null;\n\t\tprops.alt = (params.alt === undefined) ? null : params.alt;\n\t\tprops.context = params.context || null;\n\t\tprops.semanticContext = params.semanticContext || null;\n\t\tif(isCfg) {\n\t\t\tprops.reachesIntoOuterContext = params.reachesIntoOuterContext || 0;\n\t\t\tprops.precedenceFilterSuppressed = params.precedenceFilterSuppressed || false;\n\t\t}\n\t\treturn props;\n\t}\n}\n\nfunction ATNConfig(params, config) {\n\tthis.checkContext(params, config);\n\tparams = checkParams(params);\n\tconfig = checkParams(config, true);\n // The ATN state associated with this configuration///\n this.state = params.state!==null ? params.state : config.state;\n // What alt (or lexer rule) is predicted by this configuration///\n this.alt = params.alt!==null ? params.alt : config.alt;\n // The stack of invoking states leading to the rule/states associated\n // with this config. We track only those contexts pushed during\n // execution of the ATN simulator.\n this.context = params.context!==null ? params.context : config.context;\n this.semanticContext = params.semanticContext!==null ? params.semanticContext :\n (config.semanticContext!==null ? config.semanticContext : SemanticContext.NONE);\n // We cannot execute predicates dependent upon local context unless\n // we know for sure we are in the correct context. Because there is\n // no way to do this efficiently, we simply cannot evaluate\n // dependent predicates unless we are in the rule that initially\n // invokes the ATN simulator.\n //\n // closure() tracks the depth of how far we dip into the\n // outer context: depth > 0. Note that it may not be totally\n // accurate depth since I don't ever decrement. TODO: make it a boolean then\n this.reachesIntoOuterContext = config.reachesIntoOuterContext;\n this.precedenceFilterSuppressed = config.precedenceFilterSuppressed;\n return this;\n}\n\nATNConfig.prototype.checkContext = function(params, config) {\n\tif((params.context===null || params.context===undefined) &&\n\t\t\t(config===null || config.context===null || config.context===undefined)) {\n\t\tthis.context = null;\n\t}\n};\n\n\nATNConfig.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n};\n\n\nATNConfig.prototype.updateHashCode = function(hash) {\n hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext);\n};\n\n// An ATN configuration is equal to another if both have\n// the same state, they predict the same alternative, and\n// syntactic/semantic contexts are the same.\n\nATNConfig.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof ATNConfig)) {\n return false;\n } else {\n return this.state.stateNumber===other.state.stateNumber &&\n this.alt===other.alt &&\n (this.context===null ? other.context===null : this.context.equals(other.context)) &&\n this.semanticContext.equals(other.semanticContext) &&\n this.precedenceFilterSuppressed===other.precedenceFilterSuppressed;\n }\n};\n\n\nATNConfig.prototype.hashCodeForConfigSet = function() {\n var hash = new Hash();\n hash.update(this.state.stateNumber, this.alt, this.semanticContext);\n return hash.finish();\n};\n\n\nATNConfig.prototype.equalsForConfigSet = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof ATNConfig)) {\n return false;\n } else {\n return this.state.stateNumber===other.state.stateNumber &&\n this.alt===other.alt &&\n this.semanticContext.equals(other.semanticContext);\n }\n};\n\n\nATNConfig.prototype.toString = function() {\n return \"(\" + this.state + \",\" + this.alt +\n (this.context!==null ? \",[\" + this.context.toString() + \"]\" : \"\") +\n (this.semanticContext !== SemanticContext.NONE ?\n (\",\" + this.semanticContext.toString())\n : \"\") +\n (this.reachesIntoOuterContext>0 ?\n (\",up=\" + this.reachesIntoOuterContext)\n : \"\") + \")\";\n};\n\n\nfunction LexerATNConfig(params, config) {\n\tATNConfig.call(this, params, config);\n\n // This is the backing field for {@link //getLexerActionExecutor}.\n\tvar lexerActionExecutor = params.lexerActionExecutor || null;\n this.lexerActionExecutor = lexerActionExecutor || (config!==null ? config.lexerActionExecutor : null);\n this.passedThroughNonGreedyDecision = config!==null ? this.checkNonGreedyDecision(config, this.state) : false;\n return this;\n}\n\nLexerATNConfig.prototype = Object.create(ATNConfig.prototype);\nLexerATNConfig.prototype.constructor = LexerATNConfig;\n\nLexerATNConfig.prototype.updateHashCode = function(hash) {\n hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext, this.passedThroughNonGreedyDecision, this.lexerActionExecutor);\n};\n\nLexerATNConfig.prototype.equals = function(other) {\n return this === other ||\n (other instanceof LexerATNConfig &&\n this.passedThroughNonGreedyDecision == other.passedThroughNonGreedyDecision &&\n (this.lexerActionExecutor ? this.lexerActionExecutor.equals(other.lexerActionExecutor) : !other.lexerActionExecutor) &&\n ATNConfig.prototype.equals.call(this, other));\n};\n\nLexerATNConfig.prototype.hashCodeForConfigSet = LexerATNConfig.prototype.hashCode;\n\nLexerATNConfig.prototype.equalsForConfigSet = LexerATNConfig.prototype.equals;\n\n\nLexerATNConfig.prototype.checkNonGreedyDecision = function(source, target) {\n return source.passedThroughNonGreedyDecision ||\n (target instanceof DecisionState) && target.nonGreedy;\n};\n\nexports.ATNConfig = ATNConfig;\nexports.LexerATNConfig = LexerATNConfig;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n//\n// Specialized {@link Set}{@code <}{@link ATNConfig}{@code >} that can track\n// info about the set, with support for combining similar configurations using a\n// graph-structured stack.\n///\n\nvar ATN = require('./ATN').ATN;\nvar Utils = require('./../Utils');\nvar Hash = Utils.Hash;\nvar Set = Utils.Set;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar merge = require('./../PredictionContext').merge;\n\nfunction hashATNConfig(c) {\n\treturn c.hashCodeForConfigSet();\n}\n\nfunction equalATNConfigs(a, b) {\n\tif ( a===b ) {\n\t\treturn true;\n\t} else if ( a===null || b===null ) {\n\t\treturn false;\n\t} else\n return a.equalsForConfigSet(b);\n }\n\n\nfunction ATNConfigSet(fullCtx) {\n\t//\n\t// The reason that we need this is because we don't want the hash map to use\n\t// the standard hash code and equals. We need all configurations with the\n\t// same\n\t// {@code (s,i,_,semctx)} to be equal. Unfortunately, this key effectively\n\t// doubles\n\t// the number of objects associated with ATNConfigs. The other solution is\n\t// to\n\t// use a hash table that lets us specify the equals/hashcode operation.\n\t// All configs but hashed by (s, i, _, pi) not including context. Wiped out\n\t// when we go readonly as this set becomes a DFA state.\n\tthis.configLookup = new Set(hashATNConfig, equalATNConfigs);\n\t// Indicates that this configuration set is part of a full context\n\t// LL prediction. It will be used to determine how to merge $. With SLL\n\t// it's a wildcard whereas it is not for LL context merge.\n\tthis.fullCtx = fullCtx === undefined ? true : fullCtx;\n\t// Indicates that the set of configurations is read-only. Do not\n\t// allow any code to manipulate the set; DFA states will point at\n\t// the sets and they must not change. This does not protect the other\n\t// fields; in particular, conflictingAlts is set after\n\t// we've made this readonly.\n\tthis.readOnly = false;\n\t// Track the elements as they are added to the set; supports get(i)///\n\tthis.configs = [];\n\n\t// TODO: these fields make me pretty uncomfortable but nice to pack up info\n\t// together, saves recomputation\n\t// TODO: can we track conflicts as they are added to save scanning configs\n\t// later?\n\tthis.uniqueAlt = 0;\n\tthis.conflictingAlts = null;\n\n\t// Used in parser and lexer. In lexer, it indicates we hit a pred\n\t// while computing a closure operation. Don't make a DFA state from this.\n\tthis.hasSemanticContext = false;\n\tthis.dipsIntoOuterContext = false;\n\n\tthis.cachedHashCode = -1;\n\n\treturn this;\n}\n\n// Adding a new config means merging contexts with existing configs for\n// {@code (s, i, pi, _)}, where {@code s} is the\n// {@link ATNConfig//state}, {@code i} is the {@link ATNConfig//alt}, and\n// {@code pi} is the {@link ATNConfig//semanticContext}. We use\n// {@code (s,i,pi)} as key.\n//\n// <p>This method updates {@link //dipsIntoOuterContext} and\n// {@link //hasSemanticContext} when necessary.</p>\n// /\nATNConfigSet.prototype.add = function(config, mergeCache) {\n\tif (mergeCache === undefined) {\n\t\tmergeCache = null;\n\t}\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tif (config.semanticContext !== SemanticContext.NONE) {\n\t\tthis.hasSemanticContext = true;\n\t}\n\tif (config.reachesIntoOuterContext > 0) {\n\t\tthis.dipsIntoOuterContext = true;\n\t}\n\tvar existing = this.configLookup.add(config);\n\tif (existing === config) {\n\t\tthis.cachedHashCode = -1;\n\t\tthis.configs.push(config); // track order here\n\t\treturn true;\n\t}\n\t// a previous (s,i,pi,_), merge with it and save result\n\tvar rootIsWildcard = !this.fullCtx;\n\tvar merged = merge(existing.context, config.context, rootIsWildcard, mergeCache);\n\t// no need to check for existing.context, config.context in cache\n\t// since only way to create new graphs is \"call rule\" and here. We\n\t// cache at both places.\n\texisting.reachesIntoOuterContext = Math.max( existing.reachesIntoOuterContext, config.reachesIntoOuterContext);\n\t// make sure to preserve the precedence filter suppression during the merge\n\tif (config.precedenceFilterSuppressed) {\n\t\texisting.precedenceFilterSuppressed = true;\n\t}\n\texisting.context = merged; // replace context; no need to alt mapping\n\treturn true;\n};\n\nATNConfigSet.prototype.getStates = function() {\n\tvar states = new Set();\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tstates.add(this.configs[i].state);\n\t}\n\treturn states;\n};\n\nATNConfigSet.prototype.getPredicates = function() {\n\tvar preds = [];\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tvar c = this.configs[i].semanticContext;\n\t\tif (c !== SemanticContext.NONE) {\n\t\t\tpreds.push(c.semanticContext);\n\t\t}\n\t}\n\treturn preds;\n};\n\nObject.defineProperty(ATNConfigSet.prototype, \"items\", {\n\tget : function() {\n\t\treturn this.configs;\n\t}\n});\n\nATNConfigSet.prototype.optimizeConfigs = function(interpreter) {\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tif (this.configLookup.length === 0) {\n\t\treturn;\n\t}\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tvar config = this.configs[i];\n\t\tconfig.context = interpreter.getCachedContext(config.context);\n\t}\n};\n\nATNConfigSet.prototype.addAll = function(coll) {\n\tfor (var i = 0; i < coll.length; i++) {\n\t\tthis.add(coll[i]);\n\t}\n\treturn false;\n};\n\nATNConfigSet.prototype.equals = function(other) {\n\treturn this === other ||\n\t\t(other instanceof ATNConfigSet &&\n\t\tUtils.equalArrays(this.configs, other.configs) &&\n\t\tthis.fullCtx === other.fullCtx &&\n\t\tthis.uniqueAlt === other.uniqueAlt &&\n\t\tthis.conflictingAlts === other.conflictingAlts &&\n\t\tthis.hasSemanticContext === other.hasSemanticContext &&\n\t\tthis.dipsIntoOuterContext === other.dipsIntoOuterContext);\n};\n\nATNConfigSet.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n};\n\n\nATNConfigSet.prototype.updateHashCode = function(hash) {\n\tif (this.readOnly) {\n\t\tif (this.cachedHashCode === -1) {\n var hash = new Hash();\n hash.update(this.configs);\n\t\t\tthis.cachedHashCode = hash.finish();\n\t\t}\n hash.update(this.cachedHashCode);\n\t} else {\n hash.update(this.configs);\n\t}\n};\n\n\nObject.defineProperty(ATNConfigSet.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.configs.length;\n\t}\n});\n\nATNConfigSet.prototype.isEmpty = function() {\n\treturn this.configs.length === 0;\n};\n\nATNConfigSet.prototype.contains = function(item) {\n\tif (this.configLookup === null) {\n\t\tthrow \"This method is not implemented for readonly sets.\";\n\t}\n\treturn this.configLookup.contains(item);\n};\n\nATNConfigSet.prototype.containsFast = function(item) {\n\tif (this.configLookup === null) {\n\t\tthrow \"This method is not implemented for readonly sets.\";\n\t}\n\treturn this.configLookup.containsFast(item);\n};\n\nATNConfigSet.prototype.clear = function() {\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tthis.configs = [];\n\tthis.cachedHashCode = -1;\n\tthis.configLookup = new Set();\n};\n\nATNConfigSet.prototype.setReadonly = function(readOnly) {\n\tthis.readOnly = readOnly;\n\tif (readOnly) {\n\t\tthis.configLookup = null; // can't mod, no need for lookup cache\n\t}\n};\n\nATNConfigSet.prototype.toString = function() {\n\treturn Utils.arrayToString(this.configs) +\n\t\t(this.hasSemanticContext ? \",hasSemanticContext=\" + this.hasSemanticContext : \"\") +\n\t\t(this.uniqueAlt !== ATN.INVALID_ALT_NUMBER ? \",uniqueAlt=\" + this.uniqueAlt : \"\") +\n\t\t(this.conflictingAlts !== null ? \",conflictingAlts=\" + this.conflictingAlts : \"\") +\n\t\t(this.dipsIntoOuterContext ? \",dipsIntoOuterContext\" : \"\");\n};\n\nfunction OrderedATNConfigSet() {\n\tATNConfigSet.call(this);\n\tthis.configLookup = new Set();\n\treturn this;\n}\n\nOrderedATNConfigSet.prototype = Object.create(ATNConfigSet.prototype);\nOrderedATNConfigSet.prototype.constructor = OrderedATNConfigSet;\n\nexports.ATNConfigSet = ATNConfigSet;\nexports.OrderedATNConfigSet = OrderedATNConfigSet;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nfunction ATNDeserializationOptions(copyFrom) {\n\tif(copyFrom===undefined) {\n\t\tcopyFrom = null;\n\t}\n\tthis.readOnly = false;\n this.verifyATN = copyFrom===null ? true : copyFrom.verifyATN;\n this.generateRuleBypassTransitions = copyFrom===null ? false : copyFrom.generateRuleBypassTransitions;\n\n return this;\n}\n\nATNDeserializationOptions.defaultOptions = new ATNDeserializationOptions();\nATNDeserializationOptions.defaultOptions.readOnly = true;\n\n// def __setattr__(self, key, value):\n// if key!=\"readOnly\" and self.readOnly:\n// raise Exception(\"The object is read only.\")\n// super(type(self), self).__setattr__(key,value)\n\nexports.ATNDeserializationOptions = ATNDeserializationOptions;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Token = require('./../Token').Token;\nvar ATN = require('./ATN').ATN;\nvar ATNType = require('./ATNType').ATNType;\nvar ATNStates = require('./ATNState');\nvar ATNState = ATNStates.ATNState;\nvar BasicState = ATNStates.BasicState;\nvar DecisionState = ATNStates.DecisionState;\nvar BlockStartState = ATNStates.BlockStartState;\nvar BlockEndState = ATNStates.BlockEndState;\nvar LoopEndState = ATNStates.LoopEndState;\nvar RuleStartState = ATNStates.RuleStartState;\nvar RuleStopState = ATNStates.RuleStopState;\nvar TokensStartState = ATNStates.TokensStartState;\nvar PlusLoopbackState = ATNStates.PlusLoopbackState;\nvar StarLoopbackState = ATNStates.StarLoopbackState;\nvar StarLoopEntryState = ATNStates.StarLoopEntryState;\nvar PlusBlockStartState = ATNStates.PlusBlockStartState;\nvar StarBlockStartState = ATNStates.StarBlockStartState;\nvar BasicBlockStartState = ATNStates.BasicBlockStartState;\nvar Transitions = require('./Transition');\nvar Transition = Transitions.Transition;\nvar AtomTransition = Transitions.AtomTransition;\nvar SetTransition = Transitions.SetTransition;\nvar NotSetTransition = Transitions.NotSetTransition;\nvar RuleTransition = Transitions.RuleTransition;\nvar RangeTransition = Transitions.RangeTransition;\nvar ActionTransition = Transitions.ActionTransition;\nvar EpsilonTransition = Transitions.EpsilonTransition;\nvar WildcardTransition = Transitions.WildcardTransition;\nvar PredicateTransition = Transitions.PredicateTransition;\nvar PrecedencePredicateTransition = Transitions.PrecedencePredicateTransition;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\nvar Interval = require('./../IntervalSet').Interval;\nvar ATNDeserializationOptions = require('./ATNDeserializationOptions').ATNDeserializationOptions;\nvar LexerActions = require('./LexerAction');\nvar LexerActionType = LexerActions.LexerActionType;\nvar LexerSkipAction = LexerActions.LexerSkipAction;\nvar LexerChannelAction = LexerActions.LexerChannelAction;\nvar LexerCustomAction = LexerActions.LexerCustomAction;\nvar LexerMoreAction = LexerActions.LexerMoreAction;\nvar LexerTypeAction = LexerActions.LexerTypeAction;\nvar LexerPushModeAction = LexerActions.LexerPushModeAction;\nvar LexerPopModeAction = LexerActions.LexerPopModeAction;\nvar LexerModeAction = LexerActions.LexerModeAction;\n// This is the earliest supported serialized UUID.\n// stick to serialized version for now, we don't need a UUID instance\nvar BASE_SERIALIZED_UUID = \"AADB8D7E-AEEF-4415-AD2B-8204D6CF042E\";\n\n//\n// This UUID indicates the serialized ATN contains two sets of\n// IntervalSets, where the second set's values are encoded as\n// 32-bit integers to support the full Unicode SMP range up to U+10FFFF.\n//\nvar ADDED_UNICODE_SMP = \"59627784-3BE5-417A-B9EB-8131A7286089\";\n\n// This list contains all of the currently supported UUIDs, ordered by when\n// the feature first appeared in this branch.\nvar SUPPORTED_UUIDS = [ BASE_SERIALIZED_UUID, ADDED_UNICODE_SMP ];\n\nvar SERIALIZED_VERSION = 3;\n\n// This is the current serialized UUID.\nvar SERIALIZED_UUID = ADDED_UNICODE_SMP;\n\nfunction initArray( length, value) {\n\tvar tmp = [];\n\ttmp[length-1] = value;\n\treturn tmp.map(function(i) {return value;});\n}\n\nfunction ATNDeserializer (options) {\n\n if ( options=== undefined || options === null ) {\n options = ATNDeserializationOptions.defaultOptions;\n }\n this.deserializationOptions = options;\n this.stateFactories = null;\n this.actionFactories = null;\n\n return this;\n}\n\n// Determines if a particular serialized representation of an ATN supports\n// a particular feature, identified by the {@link UUID} used for serializing\n// the ATN at the time the feature was first introduced.\n//\n// @param feature The {@link UUID} marking the first time the feature was\n// supported in the serialized ATN.\n// @param actualUuid The {@link UUID} of the actual serialized ATN which is\n// currently being deserialized.\n// @return {@code true} if the {@code actualUuid} value represents a\n// serialized ATN at or after the feature identified by {@code feature} was\n// introduced; otherwise, {@code false}.\n\nATNDeserializer.prototype.isFeatureSupported = function(feature, actualUuid) {\n var idx1 = SUPPORTED_UUIDS.indexOf(feature);\n if (idx1<0) {\n return false;\n }\n var idx2 = SUPPORTED_UUIDS.indexOf(actualUuid);\n return idx2 >= idx1;\n};\n\nATNDeserializer.prototype.deserialize = function(data) {\n this.reset(data);\n this.checkVersion();\n this.checkUUID();\n var atn = this.readATN();\n this.readStates(atn);\n this.readRules(atn);\n this.readModes(atn);\n var sets = [];\n // First, deserialize sets with 16-bit arguments <= U+FFFF.\n this.readSets(atn, sets, this.readInt.bind(this));\n // Next, if the ATN was serialized with the Unicode SMP feature,\n // deserialize sets with 32-bit arguments <= U+10FFFF.\n if (this.isFeatureSupported(ADDED_UNICODE_SMP, this.uuid)) {\n this.readSets(atn, sets, this.readInt32.bind(this));\n }\n this.readEdges(atn, sets);\n this.readDecisions(atn);\n this.readLexerActions(atn);\n this.markPrecedenceDecisions(atn);\n this.verifyATN(atn);\n if (this.deserializationOptions.generateRuleBypassTransitions && atn.grammarType === ATNType.PARSER ) {\n this.generateRuleBypassTransitions(atn);\n // re-verify after modification\n this.verifyATN(atn);\n }\n return atn;\n};\n\nATNDeserializer.prototype.reset = function(data) {\n\tvar adjust = function(c) {\n var v = c.charCodeAt(0);\n return v>1 ? v-2 : v + 65533;\n\t};\n var temp = data.split(\"\").map(adjust);\n // don't adjust the first value since that's the version number\n temp[0] = data.charCodeAt(0);\n this.data = temp;\n this.pos = 0;\n};\n\nATNDeserializer.prototype.checkVersion = function() {\n var version = this.readInt();\n if ( version !== SERIALIZED_VERSION ) {\n throw (\"Could not deserialize ATN with version \" + version + \" (expected \" + SERIALIZED_VERSION + \").\");\n }\n};\n\nATNDeserializer.prototype.checkUUID = function() {\n var uuid = this.readUUID();\n if (SUPPORTED_UUIDS.indexOf(uuid)<0) {\n throw (\"Could not deserialize ATN with UUID: \" + uuid +\n \" (expected \" + SERIALIZED_UUID + \" or a legacy UUID).\", uuid, SERIALIZED_UUID);\n }\n this.uuid = uuid;\n};\n\nATNDeserializer.prototype.readATN = function() {\n var grammarType = this.readInt();\n var maxTokenType = this.readInt();\n return new ATN(grammarType, maxTokenType);\n};\n\nATNDeserializer.prototype.readStates = function(atn) {\n\tvar j, pair, stateNumber;\n var loopBackStateNumbers = [];\n var endStateNumbers = [];\n var nstates = this.readInt();\n for(var i=0; i<nstates; i++) {\n var stype = this.readInt();\n // ignore bad type of states\n if (stype===ATNState.INVALID_TYPE) {\n atn.addState(null);\n continue;\n }\n var ruleIndex = this.readInt();\n if (ruleIndex === 0xFFFF) {\n ruleIndex = -1;\n }\n var s = this.stateFactory(stype, ruleIndex);\n if (stype === ATNState.LOOP_END) { // special case\n var loopBackStateNumber = this.readInt();\n loopBackStateNumbers.push([s, loopBackStateNumber]);\n } else if(s instanceof BlockStartState) {\n var endStateNumber = this.readInt();\n endStateNumbers.push([s, endStateNumber]);\n }\n atn.addState(s);\n }\n // delay the assignment of loop back and end states until we know all the\n\t// state instances have been initialized\n for (j=0; j<loopBackStateNumbers.length; j++) {\n pair = loopBackStateNumbers[j];\n pair[0].loopBackState = atn.states[pair[1]];\n }\n\n for (j=0; j<endStateNumbers.length; j++) {\n pair = endStateNumbers[j];\n pair[0].endState = atn.states[pair[1]];\n }\n\n var numNonGreedyStates = this.readInt();\n for (j=0; j<numNonGreedyStates; j++) {\n stateNumber = this.readInt();\n atn.states[stateNumber].nonGreedy = true;\n }\n\n var numPrecedenceStates = this.readInt();\n for (j=0; j<numPrecedenceStates; j++) {\n stateNumber = this.readInt();\n atn.states[stateNumber].isPrecedenceRule = true;\n }\n};\n\nATNDeserializer.prototype.readRules = function(atn) {\n var i;\n var nrules = this.readInt();\n if (atn.grammarType === ATNType.LEXER ) {\n atn.ruleToTokenType = initArray(nrules, 0);\n }\n atn.ruleToStartState = initArray(nrules, 0);\n for (i=0; i<nrules; i++) {\n var s = this.readInt();\n var startState = atn.states[s];\n atn.ruleToStartState[i] = startState;\n if ( atn.grammarType === ATNType.LEXER ) {\n var tokenType = this.readInt();\n if (tokenType === 0xFFFF) {\n tokenType = Token.EOF;\n }\n atn.ruleToTokenType[i] = tokenType;\n }\n }\n atn.ruleToStopState = initArray(nrules, 0);\n for (i=0; i<atn.states.length; i++) {\n var state = atn.states[i];\n if (!(state instanceof RuleStopState)) {\n continue;\n }\n atn.ruleToStopState[state.ruleIndex] = state;\n atn.ruleToStartState[state.ruleIndex].stopState = state;\n }\n};\n\nATNDeserializer.prototype.readModes = function(atn) {\n var nmodes = this.readInt();\n for (var i=0; i<nmodes; i++) {\n var s = this.readInt();\n atn.modeToStartState.push(atn.states[s]);\n }\n};\n\nATNDeserializer.prototype.readSets = function(atn, sets, readUnicode) {\n var m = this.readInt();\n for (var i=0; i<m; i++) {\n var iset = new IntervalSet();\n sets.push(iset);\n var n = this.readInt();\n var containsEof = this.readInt();\n if (containsEof!==0) {\n iset.addOne(-1);\n }\n for (var j=0; j<n; j++) {\n var i1 = readUnicode();\n var i2 = readUnicode();\n iset.addRange(i1, i2);\n }\n }\n};\n\nATNDeserializer.prototype.readEdges = function(atn, sets) {\n\tvar i, j, state, trans, target;\n var nedges = this.readInt();\n for (i=0; i<nedges; i++) {\n var src = this.readInt();\n var trg = this.readInt();\n var ttype = this.readInt();\n var arg1 = this.readInt();\n var arg2 = this.readInt();\n var arg3 = this.readInt();\n trans = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets);\n var srcState = atn.states[src];\n srcState.addTransition(trans);\n }\n // edges for rule stop states can be derived, so they aren't serialized\n for (i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n for (j=0; j<state.transitions.length; j++) {\n var t = state.transitions[j];\n if (!(t instanceof RuleTransition)) {\n continue;\n }\n\t\t\tvar outermostPrecedenceReturn = -1;\n\t\t\tif (atn.ruleToStartState[t.target.ruleIndex].isPrecedenceRule) {\n\t\t\t\tif (t.precedence === 0) {\n\t\t\t\t\toutermostPrecedenceReturn = t.target.ruleIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttrans = new EpsilonTransition(t.followState, outermostPrecedenceReturn);\n atn.ruleToStopState[t.target.ruleIndex].addTransition(trans);\n }\n }\n\n for (i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n if (state instanceof BlockStartState) {\n // we need to know the end state to set its start state\n if (state.endState === null) {\n throw (\"IllegalState\");\n }\n // block end states can only be associated to a single block start\n\t\t\t// state\n if ( state.endState.startState !== null) {\n throw (\"IllegalState\");\n }\n state.endState.startState = state;\n }\n if (state instanceof PlusLoopbackState) {\n for (j=0; j<state.transitions.length; j++) {\n target = state.transitions[j].target;\n if (target instanceof PlusBlockStartState) {\n target.loopBackState = state;\n }\n }\n } else if (state instanceof StarLoopbackState) {\n for (j=0; j<state.transitions.length; j++) {\n target = state.transitions[j].target;\n if (target instanceof StarLoopEntryState) {\n target.loopBackState = state;\n }\n }\n }\n }\n};\n\nATNDeserializer.prototype.readDecisions = function(atn) {\n var ndecisions = this.readInt();\n for (var i=0; i<ndecisions; i++) {\n var s = this.readInt();\n var decState = atn.states[s];\n atn.decisionToState.push(decState);\n decState.decision = i;\n }\n};\n\nATNDeserializer.prototype.readLexerActions = function(atn) {\n if (atn.grammarType === ATNType.LEXER) {\n var count = this.readInt();\n atn.lexerActions = initArray(count, null);\n for (var i=0; i<count; i++) {\n var actionType = this.readInt();\n var data1 = this.readInt();\n if (data1 === 0xFFFF) {\n data1 = -1;\n }\n var data2 = this.readInt();\n if (data2 === 0xFFFF) {\n data2 = -1;\n }\n var lexerAction = this.lexerActionFactory(actionType, data1, data2);\n atn.lexerActions[i] = lexerAction;\n }\n }\n};\n\nATNDeserializer.prototype.generateRuleBypassTransitions = function(atn) {\n\tvar i;\n var count = atn.ruleToStartState.length;\n for(i=0; i<count; i++) {\n atn.ruleToTokenType[i] = atn.maxTokenType + i + 1;\n }\n for(i=0; i<count; i++) {\n this.generateRuleBypassTransition(atn, i);\n }\n};\n\nATNDeserializer.prototype.generateRuleBypassTransition = function(atn, idx) {\n\tvar i, state;\n var bypassStart = new BasicBlockStartState();\n bypassStart.ruleIndex = idx;\n atn.addState(bypassStart);\n\n var bypassStop = new BlockEndState();\n bypassStop.ruleIndex = idx;\n atn.addState(bypassStop);\n\n bypassStart.endState = bypassStop;\n atn.defineDecisionState(bypassStart);\n\n bypassStop.startState = bypassStart;\n\n var excludeTransition = null;\n var endState = null;\n\n if (atn.ruleToStartState[idx].isPrecedenceRule) {\n // wrap from the beginning of the rule to the StarLoopEntryState\n endState = null;\n for(i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n if (this.stateIsEndStateFor(state, idx)) {\n endState = state;\n excludeTransition = state.loopBackState.transitions[0];\n break;\n }\n }\n if (excludeTransition === null) {\n throw (\"Couldn't identify final state of the precedence rule prefix section.\");\n }\n } else {\n endState = atn.ruleToStopState[idx];\n }\n\n // all non-excluded transitions that currently target end state need to\n\t// target blockEnd instead\n for(i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n for(var j=0; j<state.transitions.length; j++) {\n var transition = state.transitions[j];\n if (transition === excludeTransition) {\n continue;\n }\n if (transition.target === endState) {\n transition.target = bypassStop;\n }\n }\n }\n\n // all transitions leaving the rule start state need to leave blockStart\n\t// instead\n var ruleToStartState = atn.ruleToStartState[idx];\n var count = ruleToStartState.transitions.length;\n while ( count > 0) {\n bypassStart.addTransition(ruleToStartState.transitions[count-1]);\n ruleToStartState.transitions = ruleToStartState.transitions.slice(-1);\n }\n // link the new states\n atn.ruleToStartState[idx].addTransition(new EpsilonTransition(bypassStart));\n bypassStop.addTransition(new EpsilonTransition(endState));\n\n var matchState = new BasicState();\n atn.addState(matchState);\n matchState.addTransition(new AtomTransition(bypassStop, atn.ruleToTokenType[idx]));\n bypassStart.addTransition(new EpsilonTransition(matchState));\n};\n\nATNDeserializer.prototype.stateIsEndStateFor = function(state, idx) {\n if ( state.ruleIndex !== idx) {\n return null;\n }\n if (!( state instanceof StarLoopEntryState)) {\n return null;\n }\n var maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n if (!( maybeLoopEndState instanceof LoopEndState)) {\n return null;\n }\n if (maybeLoopEndState.epsilonOnlyTransitions &&\n (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n return state;\n } else {\n return null;\n }\n};\n\n//\n// Analyze the {@link StarLoopEntryState} states in the specified ATN to set\n// the {@link StarLoopEntryState//isPrecedenceDecision} field to the\n// correct value.\n//\n// @param atn The ATN.\n//\nATNDeserializer.prototype.markPrecedenceDecisions = function(atn) {\n\tfor(var i=0; i<atn.states.length; i++) {\n\t\tvar state = atn.states[i];\n\t\tif (!( state instanceof StarLoopEntryState)) {\n continue;\n }\n // We analyze the ATN to determine if this ATN decision state is the\n // decision for the closure block that determines whether a\n // precedence rule should continue or complete.\n //\n if ( atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) {\n var maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n if (maybeLoopEndState instanceof LoopEndState) {\n if ( maybeLoopEndState.epsilonOnlyTransitions &&\n (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n state.isPrecedenceDecision = true;\n }\n }\n }\n\t}\n};\n\nATNDeserializer.prototype.verifyATN = function(atn) {\n if (!this.deserializationOptions.verifyATN) {\n return;\n }\n // verify assumptions\n\tfor(var i=0; i<atn.states.length; i++) {\n var state = atn.states[i];\n if (state === null) {\n continue;\n }\n this.checkCondition(state.epsilonOnlyTransitions || state.transitions.length <= 1);\n if (state instanceof PlusBlockStartState) {\n this.checkCondition(state.loopBackState !== null);\n } else if (state instanceof StarLoopEntryState) {\n this.checkCondition(state.loopBackState !== null);\n this.checkCondition(state.transitions.length === 2);\n if (state.transitions[0].target instanceof StarBlockStartState) {\n this.checkCondition(state.transitions[1].target instanceof LoopEndState);\n this.checkCondition(!state.nonGreedy);\n } else if (state.transitions[0].target instanceof LoopEndState) {\n this.checkCondition(state.transitions[1].target instanceof StarBlockStartState);\n this.checkCondition(state.nonGreedy);\n } else {\n throw(\"IllegalState\");\n }\n } else if (state instanceof StarLoopbackState) {\n this.checkCondition(state.transitions.length === 1);\n this.checkCondition(state.transitions[0].target instanceof StarLoopEntryState);\n } else if (state instanceof LoopEndState) {\n this.checkCondition(state.loopBackState !== null);\n } else if (state instanceof RuleStartState) {\n this.checkCondition(state.stopState !== null);\n } else if (state instanceof BlockStartState) {\n this.checkCondition(state.endState !== null);\n } else if (state instanceof BlockEndState) {\n this.checkCondition(state.startState !== null);\n } else if (state instanceof DecisionState) {\n this.checkCondition(state.transitions.length <= 1 || state.decision >= 0);\n } else {\n this.checkCondition(state.transitions.length <= 1 || (state instanceof RuleStopState));\n }\n\t}\n};\n\nATNDeserializer.prototype.checkCondition = function(condition, message) {\n if (!condition) {\n if (message === undefined || message===null) {\n message = \"IllegalState\";\n }\n throw (message);\n }\n};\n\nATNDeserializer.prototype.readInt = function() {\n return this.data[this.pos++];\n};\n\nATNDeserializer.prototype.readInt32 = function() {\n var low = this.readInt();\n var high = this.readInt();\n return low | (high << 16);\n};\n\nATNDeserializer.prototype.readLong = function() {\n var low = this.readInt32();\n var high = this.readInt32();\n return (low & 0x00000000FFFFFFFF) | (high << 32);\n};\n\nfunction createByteToHex() {\n\tvar bth = [];\n\tfor (var i = 0; i < 256; i++) {\n\t\tbth[i] = (i + 0x100).toString(16).substr(1).toUpperCase();\n\t}\n\treturn bth;\n}\n\nvar byteToHex = createByteToHex();\n\nATNDeserializer.prototype.readUUID = function() {\n\tvar bb = [];\n\tfor(var i=7;i>=0;i--) {\n\t\tvar int = this.readInt();\n\t\t/* jshint bitwise: false */\n\t\tbb[(2*i)+1] = int & 0xFF;\n\t\tbb[2*i] = (int >> 8) & 0xFF;\n\t}\n return byteToHex[bb[0]] + byteToHex[bb[1]] +\n byteToHex[bb[2]] + byteToHex[bb[3]] + '-' +\n byteToHex[bb[4]] + byteToHex[bb[5]] + '-' +\n byteToHex[bb[6]] + byteToHex[bb[7]] + '-' +\n byteToHex[bb[8]] + byteToHex[bb[9]] + '-' +\n byteToHex[bb[10]] + byteToHex[bb[11]] +\n byteToHex[bb[12]] + byteToHex[bb[13]] +\n byteToHex[bb[14]] + byteToHex[bb[15]];\n};\n\nATNDeserializer.prototype.edgeFactory = function(atn, type, src, trg, arg1, arg2, arg3, sets) {\n var target = atn.states[trg];\n switch(type) {\n case Transition.EPSILON:\n return new EpsilonTransition(target);\n case Transition.RANGE:\n return arg3 !== 0 ? new RangeTransition(target, Token.EOF, arg2) : new RangeTransition(target, arg1, arg2);\n case Transition.RULE:\n return new RuleTransition(atn.states[arg1], arg2, arg3, target);\n case Transition.PREDICATE:\n return new PredicateTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.PRECEDENCE:\n return new PrecedencePredicateTransition(target, arg1);\n case Transition.ATOM:\n return arg3 !== 0 ? new AtomTransition(target, Token.EOF) : new AtomTransition(target, arg1);\n case Transition.ACTION:\n return new ActionTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.SET:\n return new SetTransition(target, sets[arg1]);\n case Transition.NOT_SET:\n return new NotSetTransition(target, sets[arg1]);\n case Transition.WILDCARD:\n return new WildcardTransition(target);\n default:\n throw \"The specified transition type: \" + type + \" is not valid.\";\n }\n};\n\nATNDeserializer.prototype.stateFactory = function(type, ruleIndex) {\n if (this.stateFactories === null) {\n var sf = [];\n sf[ATNState.INVALID_TYPE] = null;\n sf[ATNState.BASIC] = function() { return new BasicState(); };\n sf[ATNState.RULE_START] = function() { return new RuleStartState(); };\n sf[ATNState.BLOCK_START] = function() { return new BasicBlockStartState(); };\n sf[ATNState.PLUS_BLOCK_START] = function() { return new PlusBlockStartState(); };\n sf[ATNState.STAR_BLOCK_START] = function() { return new StarBlockStartState(); };\n sf[ATNState.TOKEN_START] = function() { return new TokensStartState(); };\n sf[ATNState.RULE_STOP] = function() { return new RuleStopState(); };\n sf[ATNState.BLOCK_END] = function() { return new BlockEndState(); };\n sf[ATNState.STAR_LOOP_BACK] = function() { return new StarLoopbackState(); };\n sf[ATNState.STAR_LOOP_ENTRY] = function() { return new StarLoopEntryState(); };\n sf[ATNState.PLUS_LOOP_BACK] = function() { return new PlusLoopbackState(); };\n sf[ATNState.LOOP_END] = function() { return new LoopEndState(); };\n this.stateFactories = sf;\n }\n if (type>this.stateFactories.length || this.stateFactories[type] === null) {\n throw(\"The specified state type \" + type + \" is not valid.\");\n } else {\n var s = this.stateFactories[type]();\n if (s!==null) {\n s.ruleIndex = ruleIndex;\n return s;\n }\n }\n};\n\nATNDeserializer.prototype.lexerActionFactory = function(type, data1, data2) {\n if (this.actionFactories === null) {\n var af = [];\n af[LexerActionType.CHANNEL] = function(data1, data2) { return new LexerChannelAction(data1); };\n af[LexerActionType.CUSTOM] = function(data1, data2) { return new LexerCustomAction(data1, data2); };\n af[LexerActionType.MODE] = function(data1, data2) { return new LexerModeAction(data1); };\n af[LexerActionType.MORE] = function(data1, data2) { return LexerMoreAction.INSTANCE; };\n af[LexerActionType.POP_MODE] = function(data1, data2) { return LexerPopModeAction.INSTANCE; };\n af[LexerActionType.PUSH_MODE] = function(data1, data2) { return new LexerPushModeAction(data1); };\n af[LexerActionType.SKIP] = function(data1, data2) { return LexerSkipAction.INSTANCE; };\n af[LexerActionType.TYPE] = function(data1, data2) { return new LexerTypeAction(data1); };\n this.actionFactories = af;\n }\n if (type>this.actionFactories.length || this.actionFactories[type] === null) {\n throw(\"The specified lexer action type \" + type + \" is not valid.\");\n } else {\n return this.actionFactories[type](data1, data2);\n }\n};\n\n\nexports.ATNDeserializer = ATNDeserializer;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar getCachedPredictionContext = require('./../PredictionContext').getCachedPredictionContext;\n\nfunction ATNSimulator(atn, sharedContextCache) {\n\n // The context cache maps all PredictionContext objects that are ==\n // to a single cached copy. This cache is shared across all contexts\n // in all ATNConfigs in all DFA states. We rebuild each ATNConfigSet\n // to use only cached nodes/graphs in addDFAState(). We don't want to\n // fill this during closure() since there are lots of contexts that\n // pop up but are not used ever again. It also greatly slows down closure().\n //\n // <p>This cache makes a huge difference in memory and a little bit in speed.\n // For the Java grammar on java.*, it dropped the memory requirements\n // at the end from 25M to 16M. We don't store any of the full context\n // graphs in the DFA because they are limited to local context only,\n // but apparently there's a lot of repetition there as well. We optimize\n // the config contexts before storing the config set in the DFA states\n // by literally rebuilding them with cached subgraphs only.</p>\n //\n // <p>I tried a cache for use during closure operations, that was\n // whacked after each adaptivePredict(). It cost a little bit\n // more time I think and doesn't save on the overall footprint\n // so it's not worth the complexity.</p>\n ///\n this.atn = atn;\n this.sharedContextCache = sharedContextCache;\n return this;\n}\n\n// Must distinguish between missing edge and edge we know leads nowhere///\nATNSimulator.ERROR = new DFAState(0x7FFFFFFF, new ATNConfigSet());\n\n\nATNSimulator.prototype.getCachedContext = function(context) {\n if (this.sharedContextCache ===null) {\n return context;\n }\n var visited = {};\n return getCachedPredictionContext(context, this.sharedContextCache, visited);\n};\n\nexports.ATNSimulator = ATNSimulator;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// The following images show the relation of states and\n// {@link ATNState//transitions} for various grammar constructs.\n//\n// <ul>\n//\n// <li>Solid edges marked with an &//0949; indicate a required\n// {@link EpsilonTransition}.</li>\n//\n// <li>Dashed edges indicate locations where any transition derived from\n// {@link Transition} might appear.</li>\n//\n// <li>Dashed nodes are place holders for either a sequence of linked\n// {@link BasicState} states or the inclusion of a block representing a nested\n// construct in one of the forms below.</li>\n//\n// <li>Nodes showing multiple outgoing alternatives with a {@code ...} support\n// any number of alternatives (one or more). Nodes without the {@code ...} only\n// support the exact number of alternatives shown in the diagram.</li>\n//\n// </ul>\n//\n// <h2>Basic Blocks</h2>\n//\n// <h3>Rule</h3>\n//\n// <embed src=\"images/Rule.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Block of 1 or more alternatives</h3>\n//\n// <embed src=\"images/Block.svg\" type=\"image/svg+xml\"/>\n//\n// <h2>Greedy Loops</h2>\n//\n// <h3>Greedy Closure: {@code (...)*}</h3>\n//\n// <embed src=\"images/ClosureGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Greedy Positive Closure: {@code (...)+}</h3>\n//\n// <embed src=\"images/PositiveClosureGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Greedy Optional: {@code (...)?}</h3>\n//\n// <embed src=\"images/OptionalGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h2>Non-Greedy Loops</h2>\n//\n// <h3>Non-Greedy Closure: {@code (...)*?}</h3>\n//\n// <embed src=\"images/ClosureNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Non-Greedy Positive Closure: {@code (...)+?}</h3>\n//\n// <embed src=\"images/PositiveClosureNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Non-Greedy Optional: {@code (...)??}</h3>\n//\n// <embed src=\"images/OptionalNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n\nvar INITIAL_NUM_TRANSITIONS = 4;\n\nfunction ATNState() {\n // Which ATN are we in?\n this.atn = null;\n this.stateNumber = ATNState.INVALID_STATE_NUMBER;\n this.stateType = null;\n this.ruleIndex = 0; // at runtime, we don't have Rule objects\n this.epsilonOnlyTransitions = false;\n // Track the transitions emanating from this ATN state.\n this.transitions = [];\n // Used to cache lookahead during parsing, not used during construction\n this.nextTokenWithinRule = null;\n return this;\n}\n\n// constants for serialization\nATNState.INVALID_TYPE = 0;\nATNState.BASIC = 1;\nATNState.RULE_START = 2;\nATNState.BLOCK_START = 3;\nATNState.PLUS_BLOCK_START = 4;\nATNState.STAR_BLOCK_START = 5;\nATNState.TOKEN_START = 6;\nATNState.RULE_STOP = 7;\nATNState.BLOCK_END = 8;\nATNState.STAR_LOOP_BACK = 9;\nATNState.STAR_LOOP_ENTRY = 10;\nATNState.PLUS_LOOP_BACK = 11;\nATNState.LOOP_END = 12;\n\nATNState.serializationNames = [\n \"INVALID\",\n \"BASIC\",\n \"RULE_START\",\n \"BLOCK_START\",\n \"PLUS_BLOCK_START\",\n \"STAR_BLOCK_START\",\n \"TOKEN_START\",\n \"RULE_STOP\",\n \"BLOCK_END\",\n \"STAR_LOOP_BACK\",\n \"STAR_LOOP_ENTRY\",\n \"PLUS_LOOP_BACK\",\n \"LOOP_END\" ];\n\nATNState.INVALID_STATE_NUMBER = -1;\n\nATNState.prototype.toString = function() {\n\treturn this.stateNumber;\n};\n\nATNState.prototype.equals = function(other) {\n if (other instanceof ATNState) {\n return this.stateNumber===other.stateNumber;\n } else {\n return false;\n }\n};\n\nATNState.prototype.isNonGreedyExitState = function() {\n return false;\n};\n\n\nATNState.prototype.addTransition = function(trans, index) {\n\tif(index===undefined) {\n\t\tindex = -1;\n\t}\n if (this.transitions.length===0) {\n this.epsilonOnlyTransitions = trans.isEpsilon;\n } else if(this.epsilonOnlyTransitions !== trans.isEpsilon) {\n this.epsilonOnlyTransitions = false;\n }\n if (index===-1) {\n this.transitions.push(trans);\n } else {\n this.transitions.splice(index, 1, trans);\n }\n};\n\nfunction BasicState() {\n\tATNState.call(this);\n this.stateType = ATNState.BASIC;\n return this;\n}\n\nBasicState.prototype = Object.create(ATNState.prototype);\nBasicState.prototype.constructor = BasicState;\n\n\nfunction DecisionState() {\n\tATNState.call(this);\n this.decision = -1;\n this.nonGreedy = false;\n return this;\n}\n\nDecisionState.prototype = Object.create(ATNState.prototype);\nDecisionState.prototype.constructor = DecisionState;\n\n\n// The start of a regular {@code (...)} block.\nfunction BlockStartState() {\n\tDecisionState.call(this);\n\tthis.endState = null;\n\treturn this;\n}\n\nBlockStartState.prototype = Object.create(DecisionState.prototype);\nBlockStartState.prototype.constructor = BlockStartState;\n\n\nfunction BasicBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.BLOCK_START;\n\treturn this;\n}\n\nBasicBlockStartState.prototype = Object.create(BlockStartState.prototype);\nBasicBlockStartState.prototype.constructor = BasicBlockStartState;\n\n\n// Terminal node of a simple {@code (a|b|c)} block.\nfunction BlockEndState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.BLOCK_END;\n this.startState = null;\n return this;\n}\n\nBlockEndState.prototype = Object.create(ATNState.prototype);\nBlockEndState.prototype.constructor = BlockEndState;\n\n\n// The last node in the ATN for a rule, unless that rule is the start symbol.\n// In that case, there is one transition to EOF. Later, we might encode\n// references to all calls to this rule to compute FOLLOW sets for\n// error handling.\n//\nfunction RuleStopState() {\n\tATNState.call(this);\n this.stateType = ATNState.RULE_STOP;\n return this;\n}\n\nRuleStopState.prototype = Object.create(ATNState.prototype);\nRuleStopState.prototype.constructor = RuleStopState;\n\nfunction RuleStartState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.RULE_START;\n\tthis.stopState = null;\n\tthis.isPrecedenceRule = false;\n\treturn this;\n}\n\nRuleStartState.prototype = Object.create(ATNState.prototype);\nRuleStartState.prototype.constructor = RuleStartState;\n\n// Decision state for {@code A+} and {@code (A|B)+}. It has two transitions:\n// one to the loop back to start of the block and one to exit.\n//\nfunction PlusLoopbackState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.PLUS_LOOP_BACK;\n\treturn this;\n}\n\nPlusLoopbackState.prototype = Object.create(DecisionState.prototype);\nPlusLoopbackState.prototype.constructor = PlusLoopbackState;\n\n\n// Start of {@code (A|B|...)+} loop. Technically a decision state, but\n// we don't use for code generation; somebody might need it, so I'm defining\n// it for completeness. In reality, the {@link PlusLoopbackState} node is the\n// real decision-making note for {@code A+}.\n//\nfunction PlusBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.PLUS_BLOCK_START;\n this.loopBackState = null;\n return this;\n}\n\nPlusBlockStartState.prototype = Object.create(BlockStartState.prototype);\nPlusBlockStartState.prototype.constructor = PlusBlockStartState;\n\n// The block that begins a closure loop.\nfunction StarBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.STAR_BLOCK_START;\n\treturn this;\n}\n\nStarBlockStartState.prototype = Object.create(BlockStartState.prototype);\nStarBlockStartState.prototype.constructor = StarBlockStartState;\n\n\nfunction StarLoopbackState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.STAR_LOOP_BACK;\n\treturn this;\n}\n\nStarLoopbackState.prototype = Object.create(ATNState.prototype);\nStarLoopbackState.prototype.constructor = StarLoopbackState;\n\n\nfunction StarLoopEntryState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.STAR_LOOP_ENTRY;\n this.loopBackState = null;\n // Indicates whether this state can benefit from a precedence DFA during SLL decision making.\n this.isPrecedenceDecision = null;\n return this;\n}\n\nStarLoopEntryState.prototype = Object.create(DecisionState.prototype);\nStarLoopEntryState.prototype.constructor = StarLoopEntryState;\n\n\n// Mark the end of a * or + loop.\nfunction LoopEndState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.LOOP_END;\n\tthis.loopBackState = null;\n\treturn this;\n}\n\nLoopEndState.prototype = Object.create(ATNState.prototype);\nLoopEndState.prototype.constructor = LoopEndState;\n\n\n// The Tokens rule start state linking to each lexer rule start state */\nfunction TokensStartState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.TOKEN_START;\n\treturn this;\n}\n\nTokensStartState.prototype = Object.create(DecisionState.prototype);\nTokensStartState.prototype.constructor = TokensStartState;\n\nexports.ATNState = ATNState;\nexports.BasicState = BasicState;\nexports.DecisionState = DecisionState;\nexports.BlockStartState = BlockStartState;\nexports.BlockEndState = BlockEndState;\nexports.LoopEndState = LoopEndState;\nexports.RuleStartState = RuleStartState;\nexports.RuleStopState = RuleStopState;\nexports.TokensStartState = TokensStartState;\nexports.PlusLoopbackState = PlusLoopbackState;\nexports.StarLoopbackState = StarLoopbackState;\nexports.StarLoopEntryState = StarLoopEntryState;\nexports.PlusBlockStartState = PlusBlockStartState;\nexports.StarBlockStartState = StarBlockStartState;\nexports.BasicBlockStartState = BasicBlockStartState;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// Represents the type of recognizer an ATN applies to.\n\nfunction ATNType() {\n\n}\n\nATNType.LEXER = 0;\nATNType.PARSER = 1;\n\nexports.ATNType = ATNType;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// When we hit an accept state in either the DFA or the ATN, we\n// have to notify the character stream to start buffering characters\n// via {@link IntStream//mark} and record the current state. The current sim state\n// includes the current index into the input, the current line,\n// and current character position in that line. Note that the Lexer is\n// tracking the starting line and characterization of the token. These\n// variables track the \"state\" of the simulator when it hits an accept state.\n//\n// <p>We track these variables separately for the DFA and ATN simulation\n// because the DFA simulation often has to fail over to the ATN\n// simulation. If the ATN simulation fails, we need the DFA to fall\n// back to its previously accepted state, if any. If the ATN succeeds,\n// then the ATN does the accept and the DFA simulator that invoked it\n// can simply return the predicted token type.</p>\n///\n\nvar Token = require('./../Token').Token;\nvar Lexer = require('./../Lexer').Lexer;\nvar ATN = require('./ATN').ATN;\nvar ATNSimulator = require('./ATNSimulator').ATNSimulator;\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar OrderedATNConfigSet = require('./ATNConfigSet').OrderedATNConfigSet;\nvar PredictionContext = require('./../PredictionContext').PredictionContext;\nvar SingletonPredictionContext = require('./../PredictionContext').SingletonPredictionContext;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar LexerATNConfig = require('./ATNConfig').LexerATNConfig;\nvar Transition = require('./Transition').Transition;\nvar LexerActionExecutor = require('./LexerActionExecutor').LexerActionExecutor;\nvar LexerNoViableAltException = require('./../error/Errors').LexerNoViableAltException;\n\nfunction resetSimState(sim) {\n\tsim.index = -1;\n\tsim.line = 0;\n\tsim.column = -1;\n\tsim.dfaState = null;\n}\n\nfunction SimState() {\n\tresetSimState(this);\n\treturn this;\n}\n\nSimState.prototype.reset = function() {\n\tresetSimState(this);\n};\n\nfunction LexerATNSimulator(recog, atn, decisionToDFA, sharedContextCache) {\n\tATNSimulator.call(this, atn, sharedContextCache);\n\tthis.decisionToDFA = decisionToDFA;\n\tthis.recog = recog;\n\t// The current token's starting index into the character stream.\n\t// Shared across DFA to ATN simulation in case the ATN fails and the\n\t// DFA did not have a previous accept state. In this case, we use the\n\t// ATN-generated exception object.\n\tthis.startIndex = -1;\n\t// line number 1..n within the input///\n\tthis.line = 1;\n\t// The index of the character relative to the beginning of the line\n\t// 0..n-1///\n\tthis.column = 0;\n\tthis.mode = Lexer.DEFAULT_MODE;\n\t// Used during DFA/ATN exec to record the most recent accept configuration\n\t// info\n\tthis.prevAccept = new SimState();\n\t// done\n\treturn this;\n}\n\nLexerATNSimulator.prototype = Object.create(ATNSimulator.prototype);\nLexerATNSimulator.prototype.constructor = LexerATNSimulator;\n\nLexerATNSimulator.debug = false;\nLexerATNSimulator.dfa_debug = false;\n\nLexerATNSimulator.MIN_DFA_EDGE = 0;\nLexerATNSimulator.MAX_DFA_EDGE = 127; // forces unicode to stay in ATN\n\nLexerATNSimulator.match_calls = 0;\n\nLexerATNSimulator.prototype.copyState = function(simulator) {\n\tthis.column = simulator.column;\n\tthis.line = simulator.line;\n\tthis.mode = simulator.mode;\n\tthis.startIndex = simulator.startIndex;\n};\n\nLexerATNSimulator.prototype.match = function(input, mode) {\n\tthis.match_calls += 1;\n\tthis.mode = mode;\n\tvar mark = input.mark();\n\ttry {\n\t\tthis.startIndex = input.index;\n\t\tthis.prevAccept.reset();\n\t\tvar dfa = this.decisionToDFA[mode];\n\t\tif (dfa.s0 === null) {\n\t\t\treturn this.matchATN(input);\n\t\t} else {\n\t\t\treturn this.execATN(input, dfa.s0);\n\t\t}\n\t} finally {\n\t\tinput.release(mark);\n\t}\n};\n\nLexerATNSimulator.prototype.reset = function() {\n\tthis.prevAccept.reset();\n\tthis.startIndex = -1;\n\tthis.line = 1;\n\tthis.column = 0;\n\tthis.mode = Lexer.DEFAULT_MODE;\n};\n\nLexerATNSimulator.prototype.matchATN = function(input) {\n\tvar startState = this.atn.modeToStartState[this.mode];\n\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"matchATN mode \" + this.mode + \" start: \" + startState);\n\t}\n\tvar old_mode = this.mode;\n\tvar s0_closure = this.computeStartState(input, startState);\n\tvar suppressEdge = s0_closure.hasSemanticContext;\n\ts0_closure.hasSemanticContext = false;\n\n\tvar next = this.addDFAState(s0_closure);\n\tif (!suppressEdge) {\n\t\tthis.decisionToDFA[this.mode].s0 = next;\n\t}\n\n\tvar predict = this.execATN(input, next);\n\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"DFA after matchATN: \" + this.decisionToDFA[old_mode].toLexerString());\n\t}\n\treturn predict;\n};\n\nLexerATNSimulator.prototype.execATN = function(input, ds0) {\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"start state closure=\" + ds0.configs);\n\t}\n\tif (ds0.isAcceptState) {\n\t\t// allow zero-length tokens\n\t\tthis.captureSimState(this.prevAccept, input, ds0);\n\t}\n\tvar t = input.LA(1);\n\tvar s = ds0; // s is current/from DFA state\n\n\twhile (true) { // while more work\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"execATN loop starting closure: \" + s.configs);\n\t\t}\n\n\t\t// As we move src->trg, src->trg, we keep track of the previous trg to\n\t\t// avoid looking up the DFA state again, which is expensive.\n\t\t// If the previous target was already part of the DFA, we might\n\t\t// be able to avoid doing a reach operation upon t. If s!=null,\n\t\t// it means that semantic predicates didn't prevent us from\n\t\t// creating a DFA state. Once we know s!=null, we check to see if\n\t\t// the DFA state has an edge already for t. If so, we can just reuse\n\t\t// it's configuration set; there's no point in re-computing it.\n\t\t// This is kind of like doing DFA simulation within the ATN\n\t\t// simulation because DFA simulation is really just a way to avoid\n\t\t// computing reach/closure sets. Technically, once we know that\n\t\t// we have a previously added DFA state, we could jump over to\n\t\t// the DFA simulator. But, that would mean popping back and forth\n\t\t// a lot and making things more complicated algorithmically.\n\t\t// This optimization makes a lot of sense for loops within DFA.\n\t\t// A character will take us back to an existing DFA state\n\t\t// that already has lots of edges out of it. e.g., .* in comments.\n\t\t// print(\"Target for:\" + str(s) + \" and:\" + str(t))\n\t\tvar target = this.getExistingTargetState(s, t);\n\t\t// print(\"Existing:\" + str(target))\n\t\tif (target === null) {\n\t\t\ttarget = this.computeTargetState(input, s, t);\n\t\t\t// print(\"Computed:\" + str(target))\n\t\t}\n\t\tif (target === ATNSimulator.ERROR) {\n\t\t\tbreak;\n\t\t}\n\t\t// If this is a consumable input element, make sure to consume before\n\t\t// capturing the accept state so the input index, line, and char\n\t\t// position accurately reflect the state of the interpreter at the\n\t\t// end of the token.\n\t\tif (t !== Token.EOF) {\n\t\t\tthis.consume(input);\n\t\t}\n\t\tif (target.isAcceptState) {\n\t\t\tthis.captureSimState(this.prevAccept, input, target);\n\t\t\tif (t === Token.EOF) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tt = input.LA(1);\n\t\ts = target; // flip; current DFA target becomes new src/from state\n\t}\n\treturn this.failOrAccept(this.prevAccept, input, s.configs, t);\n};\n\n// Get an existing target state for an edge in the DFA. If the target state\n// for the edge has not yet been computed or is otherwise not available,\n// this method returns {@code null}.\n//\n// @param s The current DFA state\n// @param t The next input symbol\n// @return The existing target DFA state for the given input symbol\n// {@code t}, or {@code null} if the target state for this edge is not\n// already cached\nLexerATNSimulator.prototype.getExistingTargetState = function(s, t) {\n\tif (s.edges === null || t < LexerATNSimulator.MIN_DFA_EDGE || t > LexerATNSimulator.MAX_DFA_EDGE) {\n\t\treturn null;\n\t}\n\n\tvar target = s.edges[t - LexerATNSimulator.MIN_DFA_EDGE];\n\tif(target===undefined) {\n\t\ttarget = null;\n\t}\n\tif (LexerATNSimulator.debug && target !== null) {\n\t\tconsole.log(\"reuse state \" + s.stateNumber + \" edge to \" + target.stateNumber);\n\t}\n\treturn target;\n};\n\n// Compute a target state for an edge in the DFA, and attempt to add the\n// computed state and corresponding edge to the DFA.\n//\n// @param input The input stream\n// @param s The current DFA state\n// @param t The next input symbol\n//\n// @return The computed target DFA state for the given input symbol\n// {@code t}. If {@code t} does not lead to a valid DFA state, this method\n// returns {@link //ERROR}.\nLexerATNSimulator.prototype.computeTargetState = function(input, s, t) {\n\tvar reach = new OrderedATNConfigSet();\n\t// if we don't find an existing DFA state\n\t// Fill reach starting from closure, following t transitions\n\tthis.getReachableConfigSet(input, s.configs, reach, t);\n\n\tif (reach.items.length === 0) { // we got nowhere on t from s\n\t\tif (!reach.hasSemanticContext) {\n\t\t\t// we got nowhere on t, don't throw out this knowledge; it'd\n\t\t\t// cause a failover from DFA later.\n\t\t\tthis.addDFAEdge(s, t, ATNSimulator.ERROR);\n\t\t}\n\t\t// stop when we can't match any more char\n\t\treturn ATNSimulator.ERROR;\n\t}\n\t// Add an edge from s to target DFA found/created for reach\n\treturn this.addDFAEdge(s, t, null, reach);\n};\n\nLexerATNSimulator.prototype.failOrAccept = function(prevAccept, input, reach, t) {\n\tif (this.prevAccept.dfaState !== null) {\n\t\tvar lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor;\n\t\tthis.accept(input, lexerActionExecutor, this.startIndex,\n\t\t\t\tprevAccept.index, prevAccept.line, prevAccept.column);\n\t\treturn prevAccept.dfaState.prediction;\n\t} else {\n\t\t// if no accept and EOF is first char, return EOF\n\t\tif (t === Token.EOF && input.index === this.startIndex) {\n\t\t\treturn Token.EOF;\n\t\t}\n\t\tthrow new LexerNoViableAltException(this.recog, input, this.startIndex, reach);\n\t}\n};\n\n// Given a starting configuration set, figure out all ATN configurations\n// we can reach upon input {@code t}. Parameter {@code reach} is a return\n// parameter.\nLexerATNSimulator.prototype.getReachableConfigSet = function(input, closure,\n\t\treach, t) {\n\t// this is used to skip processing for configs which have a lower priority\n\t// than a config that already reached an accept state for the same rule\n\tvar skipAlt = ATN.INVALID_ALT_NUMBER;\n\tfor (var i = 0; i < closure.items.length; i++) {\n\t\tvar cfg = closure.items[i];\n\t\tvar currentAltReachedAcceptState = (cfg.alt === skipAlt);\n\t\tif (currentAltReachedAcceptState && cfg.passedThroughNonGreedyDecision) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"testing %s at %s\\n\", this.getTokenName(t), cfg\n\t\t\t\t\t.toString(this.recog, true));\n\t\t}\n\t\tfor (var j = 0; j < cfg.state.transitions.length; j++) {\n\t\t\tvar trans = cfg.state.transitions[j]; // for each transition\n\t\t\tvar target = this.getReachableTarget(trans, t);\n\t\t\tif (target !== null) {\n\t\t\t\tvar lexerActionExecutor = cfg.lexerActionExecutor;\n\t\t\t\tif (lexerActionExecutor !== null) {\n\t\t\t\t\tlexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex);\n\t\t\t\t}\n\t\t\t\tvar treatEofAsEpsilon = (t === Token.EOF);\n\t\t\t\tvar config = new LexerATNConfig({state:target, lexerActionExecutor:lexerActionExecutor}, cfg);\n\t\t\t\tif (this.closure(input, config, reach,\n\t\t\t\t\t\tcurrentAltReachedAcceptState, true, treatEofAsEpsilon)) {\n\t\t\t\t\t// any remaining configs for this alt have a lower priority\n\t\t\t\t\t// than the one that just reached an accept state.\n\t\t\t\t\tskipAlt = cfg.alt;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nLexerATNSimulator.prototype.accept = function(input, lexerActionExecutor,\n\t\tstartIndex, index, line, charPos) {\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"ACTION %s\\n\", lexerActionExecutor);\n\t}\n\t// seek to after last char in token\n\tinput.seek(index);\n\tthis.line = line;\n\tthis.column = charPos;\n\tif (lexerActionExecutor !== null && this.recog !== null) {\n\t\tlexerActionExecutor.execute(this.recog, input, startIndex);\n\t}\n};\n\nLexerATNSimulator.prototype.getReachableTarget = function(trans, t) {\n\tif (trans.matches(t, 0, Lexer.MAX_CHAR_VALUE)) {\n\t\treturn trans.target;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nLexerATNSimulator.prototype.computeStartState = function(input, p) {\n\tvar initialContext = PredictionContext.EMPTY;\n\tvar configs = new OrderedATNConfigSet();\n\tfor (var i = 0; i < p.transitions.length; i++) {\n\t\tvar target = p.transitions[i].target;\n var cfg = new LexerATNConfig({state:target, alt:i+1, context:initialContext}, null);\n\t\tthis.closure(input, cfg, configs, false, false, false);\n\t}\n\treturn configs;\n};\n\n// Since the alternatives within any lexer decision are ordered by\n// preference, this method stops pursuing the closure as soon as an accept\n// state is reached. After the first accept state is reached by depth-first\n// search from {@code config}, all other (potentially reachable) states for\n// this rule would have a lower priority.\n//\n// @return {@code true} if an accept state is reached, otherwise\n// {@code false}.\nLexerATNSimulator.prototype.closure = function(input, config, configs,\n\t\tcurrentAltReachedAcceptState, speculative, treatEofAsEpsilon) {\n\tvar cfg = null;\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"closure(\" + config.toString(this.recog, true) + \")\");\n\t}\n\tif (config.state instanceof RuleStopState) {\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tif (this.recog !== null) {\n\t\t\t\tconsole.log(\"closure at %s rule stop %s\\n\", this.recog.ruleNames[config.state.ruleIndex], config);\n\t\t\t} else {\n\t\t\t\tconsole.log(\"closure at rule stop %s\\n\", config);\n\t\t\t}\n\t\t}\n\t\tif (config.context === null || config.context.hasEmptyPath()) {\n\t\t\tif (config.context === null || config.context.isEmpty()) {\n\t\t\t\tconfigs.add(config);\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tconfigs.add(new LexerATNConfig({ state:config.state, context:PredictionContext.EMPTY}, config));\n\t\t\t\tcurrentAltReachedAcceptState = true;\n\t\t\t}\n\t\t}\n\t\tif (config.context !== null && !config.context.isEmpty()) {\n\t\t\tfor (var i = 0; i < config.context.length; i++) {\n\t\t\t\tif (config.context.getReturnState(i) !== PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\t\t\tvar newContext = config.context.getParent(i); // \"pop\" return state\n\t\t\t\t\tvar returnState = this.atn.states[config.context.getReturnState(i)];\n\t\t\t\t\tcfg = new LexerATNConfig({ state:returnState, context:newContext }, config);\n\t\t\t\t\tcurrentAltReachedAcceptState = this.closure(input, cfg,\n\t\t\t\t\t\t\tconfigs, currentAltReachedAcceptState, speculative,\n\t\t\t\t\t\t\ttreatEofAsEpsilon);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn currentAltReachedAcceptState;\n\t}\n\t// optimization\n\tif (!config.state.epsilonOnlyTransitions) {\n\t\tif (!currentAltReachedAcceptState || !config.passedThroughNonGreedyDecision) {\n\t\t\tconfigs.add(config);\n\t\t}\n\t}\n\tfor (var j = 0; j < config.state.transitions.length; j++) {\n\t\tvar trans = config.state.transitions[j];\n\t\tcfg = this.getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon);\n\t\tif (cfg !== null) {\n\t\t\tcurrentAltReachedAcceptState = this.closure(input, cfg, configs,\n\t\t\t\t\tcurrentAltReachedAcceptState, speculative, treatEofAsEpsilon);\n\t\t}\n\t}\n\treturn currentAltReachedAcceptState;\n};\n\n// side-effect: can alter configs.hasSemanticContext\nLexerATNSimulator.prototype.getEpsilonTarget = function(input, config, trans,\n\t\tconfigs, speculative, treatEofAsEpsilon) {\n\tvar cfg = null;\n\tif (trans.serializationType === Transition.RULE) {\n\t\tvar newContext = SingletonPredictionContext.create(config.context, trans.followState.stateNumber);\n\t\tcfg = new LexerATNConfig( { state:trans.target, context:newContext}, config);\n\t} else if (trans.serializationType === Transition.PRECEDENCE) {\n\t\tthrow \"Precedence predicates are not supported in lexers.\";\n\t} else if (trans.serializationType === Transition.PREDICATE) {\n\t\t// Track traversing semantic predicates. If we traverse,\n\t\t// we cannot add a DFA state for this \"reach\" computation\n\t\t// because the DFA would not test the predicate again in the\n\t\t// future. Rather than creating collections of semantic predicates\n\t\t// like v3 and testing them on prediction, v4 will test them on the\n\t\t// fly all the time using the ATN not the DFA. This is slower but\n\t\t// semantically it's not used that often. One of the key elements to\n\t\t// this predicate mechanism is not adding DFA states that see\n\t\t// predicates immediately afterwards in the ATN. For example,\n\n\t\t// a : ID {p1}? | ID {p2}? ;\n\n\t\t// should create the start state for rule 'a' (to save start state\n\t\t// competition), but should not create target of ID state. The\n\t\t// collection of ATN states the following ID references includes\n\t\t// states reached by traversing predicates. Since this is when we\n\t\t// test them, we cannot cash the DFA state target of ID.\n\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"EVAL rule \" + trans.ruleIndex + \":\" + trans.predIndex);\n\t\t}\n\t\tconfigs.hasSemanticContext = true;\n\t\tif (this.evaluatePredicate(input, trans.ruleIndex, trans.predIndex, speculative)) {\n\t\t\tcfg = new LexerATNConfig({ state:trans.target}, config);\n\t\t}\n\t} else if (trans.serializationType === Transition.ACTION) {\n\t\tif (config.context === null || config.context.hasEmptyPath()) {\n\t\t\t// execute actions anywhere in the start rule for a token.\n\t\t\t//\n\t\t\t// TODO: if the entry rule is invoked recursively, some\n\t\t\t// actions may be executed during the recursive call. The\n\t\t\t// problem can appear when hasEmptyPath() is true but\n\t\t\t// isEmpty() is false. In this case, the config needs to be\n\t\t\t// split into two contexts - one with just the empty path\n\t\t\t// and another with everything but the empty path.\n\t\t\t// Unfortunately, the current algorithm does not allow\n\t\t\t// getEpsilonTarget to return two configurations, so\n\t\t\t// additional modifications are needed before we can support\n\t\t\t// the split operation.\n\t\t\tvar lexerActionExecutor = LexerActionExecutor.append(config.lexerActionExecutor,\n\t\t\t\t\tthis.atn.lexerActions[trans.actionIndex]);\n\t\t\tcfg = new LexerATNConfig({ state:trans.target, lexerActionExecutor:lexerActionExecutor }, config);\n\t\t} else {\n\t\t\t// ignore actions in referenced rules\n\t\t\tcfg = new LexerATNConfig( { state:trans.target}, config);\n\t\t}\n\t} else if (trans.serializationType === Transition.EPSILON) {\n\t\tcfg = new LexerATNConfig({ state:trans.target}, config);\n\t} else if (trans.serializationType === Transition.ATOM ||\n\t\t\t\ttrans.serializationType === Transition.RANGE ||\n\t\t\t\ttrans.serializationType === Transition.SET) {\n\t\tif (treatEofAsEpsilon) {\n\t\t\tif (trans.matches(Token.EOF, 0, Lexer.MAX_CHAR_VALUE)) {\n\t\t\t\tcfg = new LexerATNConfig( { state:trans.target }, config);\n\t\t\t}\n\t\t}\n\t}\n\treturn cfg;\n};\n\n// Evaluate a predicate specified in the lexer.\n//\n// <p>If {@code speculative} is {@code true}, this method was called before\n// {@link //consume} for the matched character. This method should call\n// {@link //consume} before evaluating the predicate to ensure position\n// sensitive values, including {@link Lexer//getText}, {@link Lexer//getLine},\n// and {@link Lexer//getcolumn}, properly reflect the current\n// lexer state. This method should restore {@code input} and the simulator\n// to the original state before returning (i.e. undo the actions made by the\n// call to {@link //consume}.</p>\n//\n// @param input The input stream.\n// @param ruleIndex The rule containing the predicate.\n// @param predIndex The index of the predicate within the rule.\n// @param speculative {@code true} if the current index in {@code input} is\n// one character before the predicate's location.\n//\n// @return {@code true} if the specified predicate evaluates to\n// {@code true}.\n// /\nLexerATNSimulator.prototype.evaluatePredicate = function(input, ruleIndex,\n\t\tpredIndex, speculative) {\n\t// assume true if no recognizer was provided\n\tif (this.recog === null) {\n\t\treturn true;\n\t}\n\tif (!speculative) {\n\t\treturn this.recog.sempred(null, ruleIndex, predIndex);\n\t}\n\tvar savedcolumn = this.column;\n\tvar savedLine = this.line;\n\tvar index = input.index;\n\tvar marker = input.mark();\n\ttry {\n\t\tthis.consume(input);\n\t\treturn this.recog.sempred(null, ruleIndex, predIndex);\n\t} finally {\n\t\tthis.column = savedcolumn;\n\t\tthis.line = savedLine;\n\t\tinput.seek(index);\n\t\tinput.release(marker);\n\t}\n};\n\nLexerATNSimulator.prototype.captureSimState = function(settings, input, dfaState) {\n\tsettings.index = input.index;\n\tsettings.line = this.line;\n\tsettings.column = this.column;\n\tsettings.dfaState = dfaState;\n};\n\nLexerATNSimulator.prototype.addDFAEdge = function(from_, tk, to, cfgs) {\n\tif (to === undefined) {\n\t\tto = null;\n\t}\n\tif (cfgs === undefined) {\n\t\tcfgs = null;\n\t}\n\tif (to === null && cfgs !== null) {\n\t\t// leading to this call, ATNConfigSet.hasSemanticContext is used as a\n\t\t// marker indicating dynamic predicate evaluation makes this edge\n\t\t// dependent on the specific input sequence, so the static edge in the\n\t\t// DFA should be omitted. The target DFAState is still created since\n\t\t// execATN has the ability to resynchronize with the DFA state cache\n\t\t// following the predicate evaluation step.\n\t\t//\n\t\t// TJP notes: next time through the DFA, we see a pred again and eval.\n\t\t// If that gets us to a previously created (but dangling) DFA\n\t\t// state, we can continue in pure DFA mode from there.\n\t\t// /\n\t\tvar suppressEdge = cfgs.hasSemanticContext;\n\t\tcfgs.hasSemanticContext = false;\n\n\t\tto = this.addDFAState(cfgs);\n\n\t\tif (suppressEdge) {\n\t\t\treturn to;\n\t\t}\n\t}\n\t// add the edge\n\tif (tk < LexerATNSimulator.MIN_DFA_EDGE || tk > LexerATNSimulator.MAX_DFA_EDGE) {\n\t\t// Only track edges within the DFA bounds\n\t\treturn to;\n\t}\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + tk);\n\t}\n\tif (from_.edges === null) {\n\t\t// make room for tokens 1..n and -1 masquerading as index 0\n\t\tfrom_.edges = [];\n\t}\n\tfrom_.edges[tk - LexerATNSimulator.MIN_DFA_EDGE] = to; // connect\n\n\treturn to;\n};\n\n// Add a new DFA state if there isn't one with this set of\n// configurations already. This method also detects the first\n// configuration containing an ATN rule stop state. Later, when\n// traversing the DFA, we will know which rule to accept.\nLexerATNSimulator.prototype.addDFAState = function(configs) {\n\tvar proposed = new DFAState(null, configs);\n\tvar firstConfigWithRuleStopState = null;\n\tfor (var i = 0; i < configs.items.length; i++) {\n\t\tvar cfg = configs.items[i];\n\t\tif (cfg.state instanceof RuleStopState) {\n\t\t\tfirstConfigWithRuleStopState = cfg;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (firstConfigWithRuleStopState !== null) {\n\t\tproposed.isAcceptState = true;\n\t\tproposed.lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor;\n\t\tproposed.prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex];\n\t}\n\tvar dfa = this.decisionToDFA[this.mode];\n\tvar existing = dfa.states.get(proposed);\n\tif (existing!==null) {\n\t\treturn existing;\n\t}\n\tvar newState = proposed;\n\tnewState.stateNumber = dfa.states.length;\n\tconfigs.setReadonly(true);\n\tnewState.configs = configs;\n\tdfa.states.add(newState);\n\treturn newState;\n};\n\nLexerATNSimulator.prototype.getDFA = function(mode) {\n\treturn this.decisionToDFA[mode];\n};\n\n// Get the text matched so far for the current token.\nLexerATNSimulator.prototype.getText = function(input) {\n\t// index is first lookahead char, don't include.\n\treturn input.getText(this.startIndex, input.index - 1);\n};\n\nLexerATNSimulator.prototype.consume = function(input) {\n\tvar curChar = input.LA(1);\n\tif (curChar === \"\\n\".charCodeAt(0)) {\n\t\tthis.line += 1;\n\t\tthis.column = 0;\n\t} else {\n\t\tthis.column += 1;\n\t}\n\tinput.consume();\n};\n\nLexerATNSimulator.prototype.getTokenName = function(tt) {\n\tif (tt === -1) {\n\t\treturn \"EOF\";\n\t} else {\n\t\treturn \"'\" + String.fromCharCode(tt) + \"'\";\n\t}\n};\n\nexports.LexerATNSimulator = LexerATNSimulator;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n //\n\nfunction LexerActionType() {\n}\n\nLexerActionType.CHANNEL = 0; //The type of a {@link LexerChannelAction} action.\nLexerActionType.CUSTOM = 1; //The type of a {@link LexerCustomAction} action.\nLexerActionType.MODE = 2; //The type of a {@link LexerModeAction} action.\nLexerActionType.MORE = 3; //The type of a {@link LexerMoreAction} action.\nLexerActionType.POP_MODE = 4; //The type of a {@link LexerPopModeAction} action.\nLexerActionType.PUSH_MODE = 5; //The type of a {@link LexerPushModeAction} action.\nLexerActionType.SKIP = 6; //The type of a {@link LexerSkipAction} action.\nLexerActionType.TYPE = 7; //The type of a {@link LexerTypeAction} action.\n\nfunction LexerAction(action) {\n this.actionType = action;\n this.isPositionDependent = false;\n return this;\n}\n\nLexerAction.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish()\n};\n\nLexerAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType);\n};\n\nLexerAction.prototype.equals = function(other) {\n return this === other;\n};\n\n\n\n//\n// Implements the {@code skip} lexer action by calling {@link Lexer//skip}.\n//\n// <p>The {@code skip} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerSkipAction() {\n\tLexerAction.call(this, LexerActionType.SKIP);\n\treturn this;\n}\n\nLexerSkipAction.prototype = Object.create(LexerAction.prototype);\nLexerSkipAction.prototype.constructor = LexerSkipAction;\n\n// Provides a singleton instance of this parameterless lexer action.\nLexerSkipAction.INSTANCE = new LexerSkipAction();\n\nLexerSkipAction.prototype.execute = function(lexer) {\n lexer.skip();\n};\n\nLexerSkipAction.prototype.toString = function() {\n\treturn \"skip\";\n};\n\n// Implements the {@code type} lexer action by calling {@link Lexer//setType}\n// with the assigned type.\nfunction LexerTypeAction(type) {\n\tLexerAction.call(this, LexerActionType.TYPE);\n\tthis.type = type;\n\treturn this;\n}\n\nLexerTypeAction.prototype = Object.create(LexerAction.prototype);\nLexerTypeAction.prototype.constructor = LexerTypeAction;\n\nLexerTypeAction.prototype.execute = function(lexer) {\n lexer.type = this.type;\n};\n\nLexerTypeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.type);\n};\n\n\nLexerTypeAction.prototype.equals = function(other) {\n if(this === other) {\n return true;\n } else if (! (other instanceof LexerTypeAction)) {\n return false;\n } else {\n return this.type === other.type;\n }\n};\n\nLexerTypeAction.prototype.toString = function() {\n return \"type(\" + this.type + \")\";\n};\n\n// Implements the {@code pushMode} lexer action by calling\n// {@link Lexer//pushMode} with the assigned mode.\nfunction LexerPushModeAction(mode) {\n\tLexerAction.call(this, LexerActionType.PUSH_MODE);\n this.mode = mode;\n return this;\n}\n\nLexerPushModeAction.prototype = Object.create(LexerAction.prototype);\nLexerPushModeAction.prototype.constructor = LexerPushModeAction;\n\n// <p>This action is implemented by calling {@link Lexer//pushMode} with the\n// value provided by {@link //getMode}.</p>\nLexerPushModeAction.prototype.execute = function(lexer) {\n lexer.pushMode(this.mode);\n};\n\nLexerPushModeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.mode);\n};\n\nLexerPushModeAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerPushModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n};\n\nLexerPushModeAction.prototype.toString = function() {\n\treturn \"pushMode(\" + this.mode + \")\";\n};\n\n\n// Implements the {@code popMode} lexer action by calling {@link Lexer//popMode}.\n//\n// <p>The {@code popMode} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerPopModeAction() {\n\tLexerAction.call(this,LexerActionType.POP_MODE);\n\treturn this;\n}\n\nLexerPopModeAction.prototype = Object.create(LexerAction.prototype);\nLexerPopModeAction.prototype.constructor = LexerPopModeAction;\n\nLexerPopModeAction.INSTANCE = new LexerPopModeAction();\n\n// <p>This action is implemented by calling {@link Lexer//popMode}.</p>\nLexerPopModeAction.prototype.execute = function(lexer) {\n lexer.popMode();\n};\n\nLexerPopModeAction.prototype.toString = function() {\n\treturn \"popMode\";\n};\n\n// Implements the {@code more} lexer action by calling {@link Lexer//more}.\n//\n// <p>The {@code more} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerMoreAction() {\n\tLexerAction.call(this, LexerActionType.MORE);\n\treturn this;\n}\n\nLexerMoreAction.prototype = Object.create(LexerAction.prototype);\nLexerMoreAction.prototype.constructor = LexerMoreAction;\n\nLexerMoreAction.INSTANCE = new LexerMoreAction();\n\n// <p>This action is implemented by calling {@link Lexer//popMode}.</p>\nLexerMoreAction.prototype.execute = function(lexer) {\n lexer.more();\n};\n\nLexerMoreAction.prototype.toString = function() {\n return \"more\";\n};\n\n\n// Implements the {@code mode} lexer action by calling {@link Lexer//mode} with\n// the assigned mode.\nfunction LexerModeAction(mode) {\n\tLexerAction.call(this, LexerActionType.MODE);\n this.mode = mode;\n return this;\n}\n\nLexerModeAction.prototype = Object.create(LexerAction.prototype);\nLexerModeAction.prototype.constructor = LexerModeAction;\n\n// <p>This action is implemented by calling {@link Lexer//mode} with the\n// value provided by {@link //getMode}.</p>\nLexerModeAction.prototype.execute = function(lexer) {\n lexer.mode(this.mode);\n};\n\nLexerModeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.mode);\n};\n\nLexerModeAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n};\n\nLexerModeAction.prototype.toString = function() {\n return \"mode(\" + this.mode + \")\";\n};\n\n// Executes a custom lexer action by calling {@link Recognizer//action} with the\n// rule and action indexes assigned to the custom action. The implementation of\n// a custom action is added to the generated code for the lexer in an override\n// of {@link Recognizer//action} when the grammar is compiled.\n//\n// <p>This class may represent embedded actions created with the <code>{...}</code>\n// syntax in ANTLR 4, as well as actions created for lexer commands where the\n// command argument could not be evaluated when the grammar was compiled.</p>\n\n\n // Constructs a custom lexer action with the specified rule and action\n // indexes.\n //\n // @param ruleIndex The rule index to use for calls to\n // {@link Recognizer//action}.\n // @param actionIndex The action index to use for calls to\n // {@link Recognizer//action}.\n\nfunction LexerCustomAction(ruleIndex, actionIndex) {\n\tLexerAction.call(this, LexerActionType.CUSTOM);\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex;\n this.isPositionDependent = true;\n return this;\n}\n\nLexerCustomAction.prototype = Object.create(LexerAction.prototype);\nLexerCustomAction.prototype.constructor = LexerCustomAction;\n\n// <p>Custom actions are implemented by calling {@link Lexer//action} with the\n// appropriate rule and action indexes.</p>\nLexerCustomAction.prototype.execute = function(lexer) {\n lexer.action(null, this.ruleIndex, this.actionIndex);\n};\n\nLexerCustomAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.ruleIndex, this.actionIndex);\n};\n\nLexerCustomAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerCustomAction)) {\n return false;\n } else {\n return this.ruleIndex === other.ruleIndex && this.actionIndex === other.actionIndex;\n }\n};\n\n// Implements the {@code channel} lexer action by calling\n// {@link Lexer//setChannel} with the assigned channel.\n// Constructs a new {@code channel} action with the specified channel value.\n// @param channel The channel value to pass to {@link Lexer//setChannel}.\nfunction LexerChannelAction(channel) {\n\tLexerAction.call(this, LexerActionType.CHANNEL);\n this.channel = channel;\n return this;\n}\n\nLexerChannelAction.prototype = Object.create(LexerAction.prototype);\nLexerChannelAction.prototype.constructor = LexerChannelAction;\n\n// <p>This action is implemented by calling {@link Lexer//setChannel} with the\n// value provided by {@link //getChannel}.</p>\nLexerChannelAction.prototype.execute = function(lexer) {\n lexer._channel = this.channel;\n};\n\nLexerChannelAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.channel);\n};\n\nLexerChannelAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerChannelAction)) {\n return false;\n } else {\n return this.channel === other.channel;\n }\n};\n\nLexerChannelAction.prototype.toString = function() {\n return \"channel(\" + this.channel + \")\";\n};\n\n// This implementation of {@link LexerAction} is used for tracking input offsets\n// for position-dependent actions within a {@link LexerActionExecutor}.\n//\n// <p>This action is not serialized as part of the ATN, and is only required for\n// position-dependent lexer actions which appear at a location other than the\n// end of a rule. For more information about DFA optimizations employed for\n// lexer actions, see {@link LexerActionExecutor//append} and\n// {@link LexerActionExecutor//fixOffsetBeforeMatch}.</p>\n\n// Constructs a new indexed custom action by associating a character offset\n// with a {@link LexerAction}.\n//\n// <p>Note: This class is only required for lexer actions for which\n// {@link LexerAction//isPositionDependent} returns {@code true}.</p>\n//\n// @param offset The offset into the input {@link CharStream}, relative to\n// the token start index, at which the specified lexer action should be\n// executed.\n// @param action The lexer action to execute at a particular offset in the\n// input {@link CharStream}.\nfunction LexerIndexedCustomAction(offset, action) {\n\tLexerAction.call(this, action.actionType);\n this.offset = offset;\n this.action = action;\n this.isPositionDependent = true;\n return this;\n}\n\nLexerIndexedCustomAction.prototype = Object.create(LexerAction.prototype);\nLexerIndexedCustomAction.prototype.constructor = LexerIndexedCustomAction;\n\n// <p>This method calls {@link //execute} on the result of {@link //getAction}\n// using the provided {@code lexer}.</p>\nLexerIndexedCustomAction.prototype.execute = function(lexer) {\n // assume the input stream position was properly set by the calling code\n this.action.execute(lexer);\n};\n\nLexerIndexedCustomAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.offset, this.action);\n};\n\nLexerIndexedCustomAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerIndexedCustomAction)) {\n return false;\n } else {\n return this.offset === other.offset && this.action === other.action;\n }\n};\n\n\nexports.LexerActionType = LexerActionType;\nexports.LexerSkipAction = LexerSkipAction;\nexports.LexerChannelAction = LexerChannelAction;\nexports.LexerCustomAction = LexerCustomAction;\nexports.LexerIndexedCustomAction = LexerIndexedCustomAction;\nexports.LexerMoreAction = LexerMoreAction;\nexports.LexerTypeAction = LexerTypeAction;\nexports.LexerPushModeAction = LexerPushModeAction;\nexports.LexerPopModeAction = LexerPopModeAction;\nexports.LexerModeAction = LexerModeAction;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// Represents an executor for a sequence of lexer actions which traversed during\n// the matching operation of a lexer rule (token).\n//\n// <p>The executor tracks position information for position-dependent lexer actions\n// efficiently, ensuring that actions appearing only at the end of the rule do\n// not cause bloating of the {@link DFA} created for the lexer.</p>\n\nvar hashStuff = require(\"../Utils\").hashStuff;\nvar LexerIndexedCustomAction = require('./LexerAction').LexerIndexedCustomAction;\n\nfunction LexerActionExecutor(lexerActions) {\n\tthis.lexerActions = lexerActions === null ? [] : lexerActions;\n\t// Caches the result of {@link //hashCode} since the hash code is an element\n\t// of the performance-critical {@link LexerATNConfig//hashCode} operation.\n\tthis.cachedHashCode = hashStuff(lexerActions); // \"\".join([str(la) for la in\n\t// lexerActions]))\n\treturn this;\n}\n\n// Creates a {@link LexerActionExecutor} which executes the actions for\n// the input {@code lexerActionExecutor} followed by a specified\n// {@code lexerAction}.\n//\n// @param lexerActionExecutor The executor for actions already traversed by\n// the lexer while matching a token within a particular\n// {@link LexerATNConfig}. If this is {@code null}, the method behaves as\n// though it were an empty executor.\n// @param lexerAction The lexer action to execute after the actions\n// specified in {@code lexerActionExecutor}.\n//\n// @return A {@link LexerActionExecutor} for executing the combine actions\n// of {@code lexerActionExecutor} and {@code lexerAction}.\nLexerActionExecutor.append = function(lexerActionExecutor, lexerAction) {\n\tif (lexerActionExecutor === null) {\n\t\treturn new LexerActionExecutor([ lexerAction ]);\n\t}\n\tvar lexerActions = lexerActionExecutor.lexerActions.concat([ lexerAction ]);\n\treturn new LexerActionExecutor(lexerActions);\n};\n\n// Creates a {@link LexerActionExecutor} which encodes the current offset\n// for position-dependent lexer actions.\n//\n// <p>Normally, when the executor encounters lexer actions where\n// {@link LexerAction//isPositionDependent} returns {@code true}, it calls\n// {@link IntStream//seek} on the input {@link CharStream} to set the input\n// position to the <em>end</em> of the current token. This behavior provides\n// for efficient DFA representation of lexer actions which appear at the end\n// of a lexer rule, even when the lexer rule matches a variable number of\n// characters.</p>\n//\n// <p>Prior to traversing a match transition in the ATN, the current offset\n// from the token start index is assigned to all position-dependent lexer\n// actions which have not already been assigned a fixed offset. By storing\n// the offsets relative to the token start index, the DFA representation of\n// lexer actions which appear in the middle of tokens remains efficient due\n// to sharing among tokens of the same length, regardless of their absolute\n// position in the input stream.</p>\n//\n// <p>If the current executor already has offsets assigned to all\n// position-dependent lexer actions, the method returns {@code this}.</p>\n//\n// @param offset The current offset to assign to all position-dependent\n// lexer actions which do not already have offsets assigned.\n//\n// @return A {@link LexerActionExecutor} which stores input stream offsets\n// for all position-dependent lexer actions.\n// /\nLexerActionExecutor.prototype.fixOffsetBeforeMatch = function(offset) {\n\tvar updatedLexerActions = null;\n\tfor (var i = 0; i < this.lexerActions.length; i++) {\n\t\tif (this.lexerActions[i].isPositionDependent &&\n\t\t\t\t!(this.lexerActions[i] instanceof LexerIndexedCustomAction)) {\n\t\t\tif (updatedLexerActions === null) {\n\t\t\t\tupdatedLexerActions = this.lexerActions.concat([]);\n\t\t\t}\n\t\t\tupdatedLexerActions[i] = new LexerIndexedCustomAction(offset,\n\t\t\t\t\tthis.lexerActions[i]);\n\t\t}\n\t}\n\tif (updatedLexerActions === null) {\n\t\treturn this;\n\t} else {\n\t\treturn new LexerActionExecutor(updatedLexerActions);\n\t}\n};\n\n// Execute the actions encapsulated by this executor within the context of a\n// particular {@link Lexer}.\n//\n// <p>This method calls {@link IntStream//seek} to set the position of the\n// {@code input} {@link CharStream} prior to calling\n// {@link LexerAction//execute} on a position-dependent action. Before the\n// method returns, the input position will be restored to the same position\n// it was in when the method was invoked.</p>\n//\n// @param lexer The lexer instance.\n// @param input The input stream which is the source for the current token.\n// When this method is called, the current {@link IntStream//index} for\n// {@code input} should be the start of the following token, i.e. 1\n// character past the end of the current token.\n// @param startIndex The token start index. This value may be passed to\n// {@link IntStream//seek} to set the {@code input} position to the beginning\n// of the token.\n// /\nLexerActionExecutor.prototype.execute = function(lexer, input, startIndex) {\n\tvar requiresSeek = false;\n\tvar stopIndex = input.index;\n\ttry {\n\t\tfor (var i = 0; i < this.lexerActions.length; i++) {\n\t\t\tvar lexerAction = this.lexerActions[i];\n\t\t\tif (lexerAction instanceof LexerIndexedCustomAction) {\n\t\t\t\tvar offset = lexerAction.offset;\n\t\t\t\tinput.seek(startIndex + offset);\n\t\t\t\tlexerAction = lexerAction.action;\n\t\t\t\trequiresSeek = (startIndex + offset) !== stopIndex;\n\t\t\t} else if (lexerAction.isPositionDependent) {\n\t\t\t\tinput.seek(stopIndex);\n\t\t\t\trequiresSeek = false;\n\t\t\t}\n\t\t\tlexerAction.execute(lexer);\n\t\t}\n\t} finally {\n\t\tif (requiresSeek) {\n\t\t\tinput.seek(stopIndex);\n\t\t}\n\t}\n};\n\nLexerActionExecutor.prototype.hashCode = function() {\n\treturn this.cachedHashCode;\n};\n\nLexerActionExecutor.prototype.updateHashCode = function(hash) {\n hash.update(this.cachedHashCode);\n};\n\n\nLexerActionExecutor.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof LexerActionExecutor)) {\n\t\treturn false;\n\t} else if (this.cachedHashCode != other.cachedHashCode) {\n\t\treturn false;\n\t} else if (this.lexerActions.length != other.lexerActions.length) {\n\t\treturn false;\n\t} else {\n\t\tvar numActions = this.lexerActions.length\n\t\tfor (var idx = 0; idx < numActions; ++idx) {\n\t\t\tif (!this.lexerActions[idx].equals(other.lexerActions[idx])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n};\n\nexports.LexerActionExecutor = LexerActionExecutor;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// The embodiment of the adaptive LL(*), ALL(*), parsing strategy.\n//\n// <p>\n// The basic complexity of the adaptive strategy makes it harder to understand.\n// We begin with ATN simulation to build paths in a DFA. Subsequent prediction\n// requests go through the DFA first. If they reach a state without an edge for\n// the current symbol, the algorithm fails over to the ATN simulation to\n// complete the DFA path for the current input (until it finds a conflict state\n// or uniquely predicting state).</p>\n//\n// <p>\n// All of that is done without using the outer context because we want to create\n// a DFA that is not dependent upon the rule invocation stack when we do a\n// prediction. One DFA works in all contexts. We avoid using context not\n// necessarily because it's slower, although it can be, but because of the DFA\n// caching problem. The closure routine only considers the rule invocation stack\n// created during prediction beginning in the decision rule. For example, if\n// prediction occurs without invoking another rule's ATN, there are no context\n// stacks in the configurations. When lack of context leads to a conflict, we\n// don't know if it's an ambiguity or a weakness in the strong LL(*) parsing\n// strategy (versus full LL(*)).</p>\n//\n// <p>\n// When SLL yields a configuration set with conflict, we rewind the input and\n// retry the ATN simulation, this time using full outer context without adding\n// to the DFA. Configuration context stacks will be the full invocation stacks\n// from the start rule. If we get a conflict using full context, then we can\n// definitively say we have a true ambiguity for that input sequence. If we\n// don't get a conflict, it implies that the decision is sensitive to the outer\n// context. (It is not context-sensitive in the sense of context-sensitive\n// grammars.)</p>\n//\n// <p>\n// The next time we reach this DFA state with an SLL conflict, through DFA\n// simulation, we will again retry the ATN simulation using full context mode.\n// This is slow because we can't save the results and have to \"interpret\" the\n// ATN each time we get that input.</p>\n//\n// <p>\n// <strong>CACHING FULL CONTEXT PREDICTIONS</strong></p>\n//\n// <p>\n// We could cache results from full context to predicted alternative easily and\n// that saves a lot of time but doesn't work in presence of predicates. The set\n// of visible predicates from the ATN start state changes depending on the\n// context, because closure can fall off the end of a rule. I tried to cache\n// tuples (stack context, semantic context, predicted alt) but it was slower\n// than interpreting and much more complicated. Also required a huge amount of\n// memory. The goal is not to create the world's fastest parser anyway. I'd like\n// to keep this algorithm simple. By launching multiple threads, we can improve\n// the speed of parsing across a large number of files.</p>\n//\n// <p>\n// There is no strict ordering between the amount of input used by SLL vs LL,\n// which makes it really hard to build a cache for full context. Let's say that\n// we have input A B C that leads to an SLL conflict with full context X. That\n// implies that using X we might only use A B but we could also use A B C D to\n// resolve conflict. Input A B C D could predict alternative 1 in one position\n// in the input and A B C E could predict alternative 2 in another position in\n// input. The conflicting SLL configurations could still be non-unique in the\n// full context prediction, which would lead us to requiring more input than the\n// original A B C.\tTo make a\tprediction cache work, we have to track\tthe exact\n// input\tused during the previous prediction. That amounts to a cache that maps\n// X to a specific DFA for that context.</p>\n//\n// <p>\n// Something should be done for left-recursive expression predictions. They are\n// likely LL(1) + pred eval. Easier to do the whole SLL unless error and retry\n// with full LL thing Sam does.</p>\n//\n// <p>\n// <strong>AVOIDING FULL CONTEXT PREDICTION</strong></p>\n//\n// <p>\n// We avoid doing full context retry when the outer context is empty, we did not\n// dip into the outer context by falling off the end of the decision state rule,\n// or when we force SLL mode.</p>\n//\n// <p>\n// As an example of the not dip into outer context case, consider as super\n// constructor calls versus function calls. One grammar might look like\n// this:</p>\n//\n// <pre>\n// ctorBody\n// : '{' superCall? stat* '}'\n// ;\n// </pre>\n//\n// <p>\n// Or, you might see something like</p>\n//\n// <pre>\n// stat\n// : superCall ';'\n// | expression ';'\n// | ...\n// ;\n// </pre>\n//\n// <p>\n// In both cases I believe that no closure operations will dip into the outer\n// context. In the first case ctorBody in the worst case will stop at the '}'.\n// In the 2nd case it should stop at the ';'. Both cases should stay within the\n// entry rule and not dip into the outer context.</p>\n//\n// <p>\n// <strong>PREDICATES</strong></p>\n//\n// <p>\n// Predicates are always evaluated if present in either SLL or LL both. SLL and\n// LL simulation deals with predicates differently. SLL collects predicates as\n// it performs closure operations like ANTLR v3 did. It delays predicate\n// evaluation until it reaches and accept state. This allows us to cache the SLL\n// ATN simulation whereas, if we had evaluated predicates on-the-fly during\n// closure, the DFA state configuration sets would be different and we couldn't\n// build up a suitable DFA.</p>\n//\n// <p>\n// When building a DFA accept state during ATN simulation, we evaluate any\n// predicates and return the sole semantically valid alternative. If there is\n// more than 1 alternative, we report an ambiguity. If there are 0 alternatives,\n// we throw an exception. Alternatives without predicates act like they have\n// true predicates. The simple way to think about it is to strip away all\n// alternatives with false predicates and choose the minimum alternative that\n// remains.</p>\n//\n// <p>\n// When we start in the DFA and reach an accept state that's predicated, we test\n// those and return the minimum semantically viable alternative. If no\n// alternatives are viable, we throw an exception.</p>\n//\n// <p>\n// During full LL ATN simulation, closure always evaluates predicates and\n// on-the-fly. This is crucial to reducing the configuration set size during\n// closure. It hits a landmine when parsing with the Java grammar, for example,\n// without this on-the-fly evaluation.</p>\n//\n// <p>\n// <strong>SHARING DFA</strong></p>\n//\n// <p>\n// All instances of the same parser share the same decision DFAs through a\n// static field. Each instance gets its own ATN simulator but they share the\n// same {@link //decisionToDFA} field. They also share a\n// {@link PredictionContextCache} object that makes sure that all\n// {@link PredictionContext} objects are shared among the DFA states. This makes\n// a big size difference.</p>\n//\n// <p>\n// <strong>THREAD SAFETY</strong></p>\n//\n// <p>\n// The {@link ParserATNSimulator} locks on the {@link //decisionToDFA} field when\n// it adds a new DFA object to that array. {@link //addDFAEdge}\n// locks on the DFA for the current decision when setting the\n// {@link DFAState//edges} field. {@link //addDFAState} locks on\n// the DFA for the current decision when looking up a DFA state to see if it\n// already exists. We must make sure that all requests to add DFA states that\n// are equivalent result in the same shared DFA object. This is because lots of\n// threads will be trying to update the DFA at once. The\n// {@link //addDFAState} method also locks inside the DFA lock\n// but this time on the shared context cache when it rebuilds the\n// configurations' {@link PredictionContext} objects using cached\n// subgraphs/nodes. No other locking occurs, even during DFA simulation. This is\n// safe as long as we can guarantee that all threads referencing\n// {@code s.edge[t]} get the same physical target {@link DFAState}, or\n// {@code null}. Once into the DFA, the DFA simulation does not reference the\n// {@link DFA//states} map. It follows the {@link DFAState//edges} field to new\n// targets. The DFA simulator will either find {@link DFAState//edges} to be\n// {@code null}, to be non-{@code null} and {@code dfa.edges[t]} null, or\n// {@code dfa.edges[t]} to be non-null. The\n// {@link //addDFAEdge} method could be racing to set the field\n// but in either case the DFA simulator works; if {@code null}, and requests ATN\n// simulation. It could also race trying to get {@code dfa.edges[t]}, but either\n// way it will work because it's not doing a test and set operation.</p>\n//\n// <p>\n// <strong>Starting with SLL then failing to combined SLL/LL (Two-Stage\n// Parsing)</strong></p>\n//\n// <p>\n// Sam pointed out that if SLL does not give a syntax error, then there is no\n// point in doing full LL, which is slower. We only have to try LL if we get a\n// syntax error. For maximum speed, Sam starts the parser set to pure SLL\n// mode with the {@link BailErrorStrategy}:</p>\n//\n// <pre>\n// parser.{@link Parser//getInterpreter() getInterpreter()}.{@link //setPredictionMode setPredictionMode}{@code (}{@link PredictionMode//SLL}{@code )};\n// parser.{@link Parser//setErrorHandler setErrorHandler}(new {@link BailErrorStrategy}());\n// </pre>\n//\n// <p>\n// If it does not get a syntax error, then we're done. If it does get a syntax\n// error, we need to retry with the combined SLL/LL strategy.</p>\n//\n// <p>\n// The reason this works is as follows. If there are no SLL conflicts, then the\n// grammar is SLL (at least for that input set). If there is an SLL conflict,\n// the full LL analysis must yield a set of viable alternatives which is a\n// subset of the alternatives reported by SLL. If the LL set is a singleton,\n// then the grammar is LL but not SLL. If the LL set is the same size as the SLL\n// set, the decision is SLL. If the LL set has size > 1, then that decision\n// is truly ambiguous on the current input. If the LL set is smaller, then the\n// SLL conflict resolution might choose an alternative that the full LL would\n// rule out as a possibility based upon better context information. If that's\n// the case, then the SLL parse will definitely get an error because the full LL\n// analysis says it's not viable. If SLL conflict resolution chooses an\n// alternative within the LL set, them both SLL and LL would choose the same\n// alternative because they both choose the minimum of multiple conflicting\n// alternatives.</p>\n//\n// <p>\n// Let's say we have a set of SLL conflicting alternatives {@code {1, 2, 3}} and\n// a smaller LL set called <em>s</em>. If <em>s</em> is {@code {2, 3}}, then SLL\n// parsing will get an error because SLL will pursue alternative 1. If\n// <em>s</em> is {@code {1, 2}} or {@code {1, 3}} then both SLL and LL will\n// choose the same alternative because alternative one is the minimum of either\n// set. If <em>s</em> is {@code {2}} or {@code {3}} then SLL will get a syntax\n// error. If <em>s</em> is {@code {1}} then SLL will succeed.</p>\n//\n// <p>\n// Of course, if the input is invalid, then we will get an error for sure in\n// both SLL and LL parsing. Erroneous input will therefore require 2 passes over\n// the input.</p>\n//\n\nvar Utils = require('./../Utils');\nvar Set = Utils.Set;\nvar BitSet = Utils.BitSet;\nvar DoubleDict = Utils.DoubleDict;\nvar ATN = require('./ATN').ATN;\nvar ATNState = require('./ATNState').ATNState;\nvar ATNConfig = require('./ATNConfig').ATNConfig;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar Token = require('./../Token').Token;\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar PredPrediction = require('./../dfa/DFAState').PredPrediction;\nvar ATNSimulator = require('./ATNSimulator').ATNSimulator;\nvar PredictionMode = require('./PredictionMode').PredictionMode;\nvar RuleContext = require('./../RuleContext').RuleContext;\nvar ParserRuleContext = require('./../ParserRuleContext').ParserRuleContext;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar StarLoopEntryState = require('./ATNState').StarLoopEntryState;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar PredictionContext = require('./../PredictionContext').PredictionContext;\nvar Interval = require('./../IntervalSet').Interval;\nvar Transitions = require('./Transition');\nvar Transition = Transitions.Transition;\nvar SetTransition = Transitions.SetTransition;\nvar NotSetTransition = Transitions.NotSetTransition;\nvar RuleTransition = Transitions.RuleTransition;\nvar ActionTransition = Transitions.ActionTransition;\nvar NoViableAltException = require('./../error/Errors').NoViableAltException;\n\nvar SingletonPredictionContext = require('./../PredictionContext').SingletonPredictionContext;\nvar predictionContextFromRuleContext = require('./../PredictionContext').predictionContextFromRuleContext;\n\nfunction ParserATNSimulator(parser, atn, decisionToDFA, sharedContextCache) {\n\tATNSimulator.call(this, atn, sharedContextCache);\n this.parser = parser;\n this.decisionToDFA = decisionToDFA;\n // SLL, LL, or LL + exact ambig detection?//\n this.predictionMode = PredictionMode.LL;\n // LAME globals to avoid parameters!!!!! I need these down deep in predTransition\n this._input = null;\n this._startIndex = 0;\n this._outerContext = null;\n this._dfa = null;\n // Each prediction operation uses a cache for merge of prediction contexts.\n // Don't keep around as it wastes huge amounts of memory. DoubleKeyMap\n // isn't synchronized but we're ok since two threads shouldn't reuse same\n // parser/atnsim object because it can only handle one input at a time.\n // This maps graphs a and b to merged result c. (a,b)→c. We can avoid\n // the merge if we ever see a and b again. Note that (b,a)→c should\n // also be examined during cache lookup.\n //\n this.mergeCache = null;\n return this;\n}\n\nParserATNSimulator.prototype = Object.create(ATNSimulator.prototype);\nParserATNSimulator.prototype.constructor = ParserATNSimulator;\n\nParserATNSimulator.prototype.debug = false;\nParserATNSimulator.prototype.debug_closure = false;\nParserATNSimulator.prototype.debug_add = false;\nParserATNSimulator.prototype.debug_list_atn_decisions = false;\nParserATNSimulator.prototype.dfa_debug = false;\nParserATNSimulator.prototype.retry_debug = false;\n\n\nParserATNSimulator.prototype.reset = function() {\n};\n\nParserATNSimulator.prototype.adaptivePredict = function(input, decision, outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"adaptivePredict decision \" + decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" +\n input.LT(1).column);\n }\n this._input = input;\n this._startIndex = input.index;\n this._outerContext = outerContext;\n\n var dfa = this.decisionToDFA[decision];\n this._dfa = dfa;\n var m = input.mark();\n var index = input.index;\n\n // Now we are certain to have a specific decision's DFA\n // But, do we still need an initial state?\n try {\n var s0;\n if (dfa.precedenceDfa) {\n // the start state for a precedence DFA depends on the current\n // parser precedence, and is provided by a DFA method.\n s0 = dfa.getPrecedenceStartState(this.parser.getPrecedence());\n } else {\n // the start state for a \"regular\" DFA is just s0\n s0 = dfa.s0;\n }\n if (s0===null) {\n if (outerContext===null) {\n outerContext = RuleContext.EMPTY;\n }\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"predictATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \", outerContext=\" + outerContext.toString(this.parser.ruleNames));\n }\n\n var fullCtx = false;\n var s0_closure = this.computeStartState(dfa.atnStartState, RuleContext.EMPTY, fullCtx);\n\n if( dfa.precedenceDfa) {\n // If this is a precedence DFA, we use applyPrecedenceFilter\n // to convert the computed start state to a precedence start\n // state. We then use DFA.setPrecedenceStartState to set the\n // appropriate start state for the precedence level rather\n // than simply setting DFA.s0.\n //\n dfa.s0.configs = s0_closure; // not used for prediction but useful to know start configs anyway\n s0_closure = this.applyPrecedenceFilter(s0_closure);\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.setPrecedenceStartState(this.parser.getPrecedence(), s0);\n } else {\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.s0 = s0;\n }\n }\n var alt = this.execATN(dfa, s0, input, index, outerContext);\n if (this.debug) {\n console.log(\"DFA after predictATN: \" + dfa.toString(this.parser.literalNames));\n }\n return alt;\n } finally {\n this._dfa = null;\n this.mergeCache = null; // wack cache after each prediction\n input.seek(index);\n input.release(m);\n }\n};\n// Performs ATN simulation to compute a predicted alternative based\n// upon the remaining input, but also updates the DFA cache to avoid\n// having to traverse the ATN again for the same input sequence.\n\n// There are some key conditions we're looking for after computing a new\n// set of ATN configs (proposed DFA state):\n // if the set is empty, there is no viable alternative for current symbol\n // does the state uniquely predict an alternative?\n // does the state have a conflict that would prevent us from\n // putting it on the work list?\n\n// We also have some key operations to do:\n // add an edge from previous DFA state to potentially new DFA state, D,\n // upon current symbol but only if adding to work list, which means in all\n // cases except no viable alternative (and possibly non-greedy decisions?)\n // collecting predicates and adding semantic context to DFA accept states\n // adding rule context to context-sensitive DFA accept states\n // consuming an input symbol\n // reporting a conflict\n // reporting an ambiguity\n // reporting a context sensitivity\n // reporting insufficient predicates\n\n// cover these cases:\n// dead end\n// single alt\n// single alt + preds\n// conflict\n// conflict + preds\n//\nParserATNSimulator.prototype.execATN = function(dfa, s0, input, startIndex, outerContext ) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" + input.LT(1).column);\n }\n var alt;\n var previousD = s0;\n\n if (this.debug) {\n console.log(\"s0 = \" + s0);\n }\n var t = input.LA(1);\n while(true) { // while more work\n var D = this.getExistingTargetState(previousD, t);\n if(D===null) {\n D = this.computeTargetState(dfa, previousD, t);\n }\n if(D===ATNSimulator.ERROR) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for SLL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n var e = this.noViableAlt(input, outerContext, previousD.configs, startIndex);\n input.seek(startIndex);\n alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previousD.configs, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n if(D.requiresFullContext && this.predictionMode !== PredictionMode.SLL) {\n // IF PREDS, MIGHT RESOLVE TO SINGLE ALT => SLL (or syntax error)\n var conflictingAlts = null;\n if (D.predicates!==null) {\n if (this.debug) {\n console.log(\"DFA state has preds in DFA sim LL failover\");\n }\n var conflictIndex = input.index;\n if(conflictIndex !== startIndex) {\n input.seek(startIndex);\n }\n conflictingAlts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (conflictingAlts.length===1) {\n if(this.debug) {\n console.log(\"Full LL avoided\");\n }\n return conflictingAlts.minValue();\n }\n if (conflictIndex !== startIndex) {\n // restore the index so reporting the fallback to full\n // context occurs with the index at the correct spot\n input.seek(conflictIndex);\n }\n }\n if (this.dfa_debug) {\n console.log(\"ctx sensitive state \" + outerContext +\" in \" + D);\n }\n var fullCtx = true;\n var s0_closure = this.computeStartState(dfa.atnStartState, outerContext, fullCtx);\n this.reportAttemptingFullContext(dfa, conflictingAlts, D.configs, startIndex, input.index);\n alt = this.execATNWithFullContext(dfa, D, s0_closure, input, startIndex, outerContext);\n return alt;\n }\n if (D.isAcceptState) {\n if (D.predicates===null) {\n return D.prediction;\n }\n var stopIndex = input.index;\n input.seek(startIndex);\n var alts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (alts.length===0) {\n throw this.noViableAlt(input, outerContext, D.configs, startIndex);\n } else if (alts.length===1) {\n return alts.minValue();\n } else {\n // report ambiguity after predicate evaluation to make sure the correct set of ambig alts is reported.\n this.reportAmbiguity(dfa, D, startIndex, stopIndex, false, alts, D.configs);\n return alts.minValue();\n }\n }\n previousD = D;\n\n if (t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n};\n//\n// Get an existing target state for an edge in the DFA. If the target state\n// for the edge has not yet been computed or is otherwise not available,\n// this method returns {@code null}.\n//\n// @param previousD The current DFA state\n// @param t The next input symbol\n// @return The existing target DFA state for the given input symbol\n// {@code t}, or {@code null} if the target state for this edge is not\n// already cached\n//\nParserATNSimulator.prototype.getExistingTargetState = function(previousD, t) {\n var edges = previousD.edges;\n if (edges===null) {\n return null;\n } else {\n return edges[t + 1] || null;\n }\n};\n//\n// Compute a target state for an edge in the DFA, and attempt to add the\n// computed state and corresponding edge to the DFA.\n//\n// @param dfa The DFA\n// @param previousD The current DFA state\n// @param t The next input symbol\n//\n// @return The computed target DFA state for the given input symbol\n// {@code t}. If {@code t} does not lead to a valid DFA state, this method\n// returns {@link //ERROR}.\n//\nParserATNSimulator.prototype.computeTargetState = function(dfa, previousD, t) {\n var reach = this.computeReachSet(previousD.configs, t, false);\n if(reach===null) {\n this.addDFAEdge(dfa, previousD, t, ATNSimulator.ERROR);\n return ATNSimulator.ERROR;\n }\n // create new target state; we'll add to DFA after it's complete\n var D = new DFAState(null, reach);\n\n var predictedAlt = this.getUniqueAlt(reach);\n\n if (this.debug) {\n var altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n console.log(\"SLL altSubSets=\" + Utils.arrayToString(altSubSets) +\n \", previous=\" + previousD.configs +\n \", configs=\" + reach +\n \", predict=\" + predictedAlt +\n \", allSubsetsConflict=\" +\n PredictionMode.allSubsetsConflict(altSubSets) + \", conflictingAlts=\" +\n this.getConflictingAlts(reach));\n }\n if (predictedAlt!==ATN.INVALID_ALT_NUMBER) {\n // NO CONFLICT, UNIQUELY PREDICTED ALT\n D.isAcceptState = true;\n D.configs.uniqueAlt = predictedAlt;\n D.prediction = predictedAlt;\n } else if (PredictionMode.hasSLLConflictTerminatingPrediction(this.predictionMode, reach)) {\n // MORE THAN ONE VIABLE ALTERNATIVE\n D.configs.conflictingAlts = this.getConflictingAlts(reach);\n D.requiresFullContext = true;\n // in SLL-only mode, we will stop at this state and return the minimum alt\n D.isAcceptState = true;\n D.prediction = D.configs.conflictingAlts.minValue();\n }\n if (D.isAcceptState && D.configs.hasSemanticContext) {\n this.predicateDFAState(D, this.atn.getDecisionState(dfa.decision));\n if( D.predicates!==null) {\n D.prediction = ATN.INVALID_ALT_NUMBER;\n }\n }\n // all adds to dfa are done after we've created full D state\n D = this.addDFAEdge(dfa, previousD, t, D);\n return D;\n};\n\nParserATNSimulator.prototype.predicateDFAState = function(dfaState, decisionState) {\n // We need to test all predicates, even in DFA states that\n // uniquely predict alternative.\n var nalts = decisionState.transitions.length;\n // Update DFA so reach becomes accept state with (predicate,alt)\n // pairs if preds found for conflicting alts\n var altsToCollectPredsFrom = this.getConflictingAltsOrUniqueAlt(dfaState.configs);\n var altToPred = this.getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configs, nalts);\n if (altToPred!==null) {\n dfaState.predicates = this.getPredicatePredictions(altsToCollectPredsFrom, altToPred);\n dfaState.prediction = ATN.INVALID_ALT_NUMBER; // make sure we use preds\n } else {\n // There are preds in configs but they might go away\n // when OR'd together like {p}? || NONE == NONE. If neither\n // alt has preds, resolve to min alt\n dfaState.prediction = altsToCollectPredsFrom.minValue();\n }\n};\n\n// comes back with reach.uniqueAlt set to a valid alt\nParserATNSimulator.prototype.execATNWithFullContext = function(dfa, D, // how far we got before failing over\n s0,\n input,\n startIndex,\n outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATNWithFullContext \"+s0);\n }\n var fullCtx = true;\n var foundExactAmbig = false;\n var reach = null;\n var previous = s0;\n input.seek(startIndex);\n var t = input.LA(1);\n var predictedAlt = -1;\n while (true) { // while more work\n reach = this.computeReachSet(previous, t, fullCtx);\n if (reach===null) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for LL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n var e = this.noViableAlt(input, outerContext, previous, startIndex);\n input.seek(startIndex);\n var alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previous, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n var altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n if(this.debug) {\n console.log(\"LL altSubSets=\" + altSubSets + \", predict=\" +\n PredictionMode.getUniqueAlt(altSubSets) + \", resolvesToJustOneViableAlt=\" +\n PredictionMode.resolvesToJustOneViableAlt(altSubSets));\n }\n reach.uniqueAlt = this.getUniqueAlt(reach);\n // unique prediction?\n if(reach.uniqueAlt!==ATN.INVALID_ALT_NUMBER) {\n predictedAlt = reach.uniqueAlt;\n break;\n } else if (this.predictionMode !== PredictionMode.LL_EXACT_AMBIG_DETECTION) {\n predictedAlt = PredictionMode.resolvesToJustOneViableAlt(altSubSets);\n if(predictedAlt !== ATN.INVALID_ALT_NUMBER) {\n break;\n }\n } else {\n // In exact ambiguity mode, we never try to terminate early.\n // Just keeps scarfing until we know what the conflict is\n if (PredictionMode.allSubsetsConflict(altSubSets) && PredictionMode.allSubsetsEqual(altSubSets)) {\n foundExactAmbig = true;\n predictedAlt = PredictionMode.getSingleViableAlt(altSubSets);\n break;\n }\n // else there are multiple non-conflicting subsets or\n // we're not sure what the ambiguity is yet.\n // So, keep going.\n }\n previous = reach;\n if( t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n // If the configuration set uniquely predicts an alternative,\n // without conflict, then we know that it's a full LL decision\n // not SLL.\n if (reach.uniqueAlt !== ATN.INVALID_ALT_NUMBER ) {\n this.reportContextSensitivity(dfa, predictedAlt, reach, startIndex, input.index);\n return predictedAlt;\n }\n // We do not check predicates here because we have checked them\n // on-the-fly when doing full context prediction.\n\n //\n // In non-exact ambiguity detection mode, we might\tactually be able to\n // detect an exact ambiguity, but I'm not going to spend the cycles\n // needed to check. We only emit ambiguity warnings in exact ambiguity\n // mode.\n //\n // For example, we might know that we have conflicting configurations.\n // But, that does not mean that there is no way forward without a\n // conflict. It's possible to have nonconflicting alt subsets as in:\n\n // altSubSets=[{1, 2}, {1, 2}, {1}, {1, 2}]\n\n // from\n //\n // [(17,1,[5 $]), (13,1,[5 10 $]), (21,1,[5 10 $]), (11,1,[$]),\n // (13,2,[5 10 $]), (21,2,[5 10 $]), (11,2,[$])]\n //\n // In this case, (17,1,[5 $]) indicates there is some next sequence that\n // would resolve this without conflict to alternative 1. Any other viable\n // next sequence, however, is associated with a conflict. We stop\n // looking for input because no amount of further lookahead will alter\n // the fact that we should predict alternative 1. We just can't say for\n // sure that there is an ambiguity without looking further.\n\n this.reportAmbiguity(dfa, D, startIndex, input.index, foundExactAmbig, null, reach);\n\n return predictedAlt;\n};\n\nParserATNSimulator.prototype.computeReachSet = function(closure, t, fullCtx) {\n if (this.debug) {\n console.log(\"in computeReachSet, starting closure: \" + closure);\n }\n if( this.mergeCache===null) {\n this.mergeCache = new DoubleDict();\n }\n var intermediate = new ATNConfigSet(fullCtx);\n\n // Configurations already in a rule stop state indicate reaching the end\n // of the decision rule (local context) or end of the start rule (full\n // context). Once reached, these configurations are never updated by a\n // closure operation, so they are handled separately for the performance\n // advantage of having a smaller intermediate set when calling closure.\n //\n // For full-context reach operations, separate handling is required to\n // ensure that the alternative matching the longest overall sequence is\n // chosen when multiple such configurations can match the input.\n\n var skippedStopStates = null;\n\n // First figure out where we can reach on input t\n for (var i=0; i<closure.items.length;i++) {\n var c = closure.items[i];\n if(this.debug_add) {\n console.log(\"testing \" + this.getTokenName(t) + \" at \" + c);\n }\n if (c.state instanceof RuleStopState) {\n if (fullCtx || t === Token.EOF) {\n if (skippedStopStates===null) {\n skippedStopStates = [];\n }\n skippedStopStates.push(c);\n if(this.debug_add) {\n console.log(\"added \" + c + \" to skippedStopStates\");\n }\n }\n continue;\n }\n for(var j=0;j<c.state.transitions.length;j++) {\n var trans = c.state.transitions[j];\n var target = this.getReachableTarget(trans, t);\n if (target!==null) {\n var cfg = new ATNConfig({state:target}, c);\n intermediate.add(cfg, this.mergeCache);\n if(this.debug_add) {\n console.log(\"added \" + cfg + \" to intermediate\");\n }\n }\n }\n }\n // Now figure out where the reach operation can take us...\n var reach = null;\n\n // This block optimizes the reach operation for intermediate sets which\n // trivially indicate a termination state for the overall\n // adaptivePredict operation.\n //\n // The conditions assume that intermediate\n // contains all configurations relevant to the reach set, but this\n // condition is not true when one or more configurations have been\n // withheld in skippedStopStates, or when the current symbol is EOF.\n //\n if (skippedStopStates===null && t!==Token.EOF) {\n if (intermediate.items.length===1) {\n // Don't pursue the closure if there is just one state.\n // It can only have one alternative; just add to result\n // Also don't pursue the closure if there is unique alternative\n // among the configurations.\n reach = intermediate;\n } else if (this.getUniqueAlt(intermediate)!==ATN.INVALID_ALT_NUMBER) {\n // Also don't pursue the closure if there is unique alternative\n // among the configurations.\n reach = intermediate;\n }\n }\n // If the reach set could not be trivially determined, perform a closure\n // operation on the intermediate set to compute its initial value.\n //\n if (reach===null) {\n reach = new ATNConfigSet(fullCtx);\n var closureBusy = new Set();\n var treatEofAsEpsilon = t === Token.EOF;\n for (var k=0; k<intermediate.items.length;k++) {\n this.closure(intermediate.items[k], reach, closureBusy, false, fullCtx, treatEofAsEpsilon);\n }\n }\n if (t === Token.EOF) {\n // After consuming EOF no additional input is possible, so we are\n // only interested in configurations which reached the end of the\n // decision rule (local context) or end of the start rule (full\n // context). Update reach to contain only these configurations. This\n // handles both explicit EOF transitions in the grammar and implicit\n // EOF transitions following the end of the decision or start rule.\n //\n // When reach==intermediate, no closure operation was performed. In\n // this case, removeAllConfigsNotInRuleStopState needs to check for\n // reachable rule stop states as well as configurations already in\n // a rule stop state.\n //\n // This is handled before the configurations in skippedStopStates,\n // because any configurations potentially added from that list are\n // already guaranteed to meet this condition whether or not it's\n // required.\n //\n reach = this.removeAllConfigsNotInRuleStopState(reach, reach === intermediate);\n }\n // If skippedStopStates!==null, then it contains at least one\n // configuration. For full-context reach operations, these\n // configurations reached the end of the start rule, in which case we\n // only add them back to reach if no configuration during the current\n // closure operation reached such a state. This ensures adaptivePredict\n // chooses an alternative matching the longest overall sequence when\n // multiple alternatives are viable.\n //\n if (skippedStopStates!==null && ( (! fullCtx) || (! PredictionMode.hasConfigInRuleStopState(reach)))) {\n for (var l=0; l<skippedStopStates.length;l++) {\n reach.add(skippedStopStates[l], this.mergeCache);\n }\n }\n if (reach.items.length===0) {\n return null;\n } else {\n return reach;\n }\n};\n//\n// Return a configuration set containing only the configurations from\n// {@code configs} which are in a {@link RuleStopState}. If all\n// configurations in {@code configs} are already in a rule stop state, this\n// method simply returns {@code configs}.\n//\n// <p>When {@code lookToEndOfRule} is true, this method uses\n// {@link ATN//nextTokens} for each configuration in {@code configs} which is\n// not already in a rule stop state to see if a rule stop state is reachable\n// from the configuration via epsilon-only transitions.</p>\n//\n// @param configs the configuration set to update\n// @param lookToEndOfRule when true, this method checks for rule stop states\n// reachable by epsilon-only transitions from each configuration in\n// {@code configs}.\n//\n// @return {@code configs} if all configurations in {@code configs} are in a\n// rule stop state, otherwise return a new configuration set containing only\n// the configurations from {@code configs} which are in a rule stop state\n//\nParserATNSimulator.prototype.removeAllConfigsNotInRuleStopState = function(configs, lookToEndOfRule) {\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return configs;\n }\n var result = new ATNConfigSet(configs.fullCtx);\n for(var i=0; i<configs.items.length;i++) {\n var config = configs.items[i];\n if (config.state instanceof RuleStopState) {\n result.add(config, this.mergeCache);\n continue;\n }\n if (lookToEndOfRule && config.state.epsilonOnlyTransitions) {\n var nextTokens = this.atn.nextTokens(config.state);\n if (nextTokens.contains(Token.EPSILON)) {\n var endOfRuleState = this.atn.ruleToStopState[config.state.ruleIndex];\n result.add(new ATNConfig({state:endOfRuleState}, config), this.mergeCache);\n }\n }\n }\n return result;\n};\n\nParserATNSimulator.prototype.computeStartState = function(p, ctx, fullCtx) {\n // always at least the implicit call to start rule\n var initialContext = predictionContextFromRuleContext(this.atn, ctx);\n var configs = new ATNConfigSet(fullCtx);\n for(var i=0;i<p.transitions.length;i++) {\n var target = p.transitions[i].target;\n var c = new ATNConfig({ state:target, alt:i+1, context:initialContext }, null);\n var closureBusy = new Set();\n this.closure(c, configs, closureBusy, true, fullCtx, false);\n }\n return configs;\n};\n\n//\n// This method transforms the start state computed by\n// {@link //computeStartState} to the special start state used by a\n// precedence DFA for a particular precedence value. The transformation\n// process applies the following changes to the start state's configuration\n// set.\n//\n// <ol>\n// <li>Evaluate the precedence predicates for each configuration using\n// {@link SemanticContext//evalPrecedence}.</li>\n// <li>Remove all configurations which predict an alternative greater than\n// 1, for which another configuration that predicts alternative 1 is in the\n// same ATN state with the same prediction context. This transformation is\n// valid for the following reasons:\n// <ul>\n// <li>The closure block cannot contain any epsilon transitions which bypass\n// the body of the closure, so all states reachable via alternative 1 are\n// part of the precedence alternatives of the transformed left-recursive\n// rule.</li>\n// <li>The \"primary\" portion of a left recursive rule cannot contain an\n// epsilon transition, so the only way an alternative other than 1 can exist\n// in a state that is also reachable via alternative 1 is by nesting calls\n// to the left-recursive rule, with the outer calls not being at the\n// preferred precedence level.</li>\n// </ul>\n// </li>\n// </ol>\n//\n// <p>\n// The prediction context must be considered by this filter to address\n// situations like the following.\n// </p>\n// <code>\n// <pre>\n// grammar TA;\n// prog: statement* EOF;\n// statement: letterA | statement letterA 'b' ;\n// letterA: 'a';\n// </pre>\n// </code>\n// <p>\n// If the above grammar, the ATN state immediately before the token\n// reference {@code 'a'} in {@code letterA} is reachable from the left edge\n// of both the primary and closure blocks of the left-recursive rule\n// {@code statement}. The prediction context associated with each of these\n// configurations distinguishes between them, and prevents the alternative\n// which stepped out to {@code prog} (and then back in to {@code statement}\n// from being eliminated by the filter.\n// </p>\n//\n// @param configs The configuration set computed by\n// {@link //computeStartState} as the start state for the DFA.\n// @return The transformed configuration set representing the start state\n// for a precedence DFA at a particular precedence level (determined by\n// calling {@link Parser//getPrecedence}).\n//\nParserATNSimulator.prototype.applyPrecedenceFilter = function(configs) {\n\tvar config;\n\tvar statesFromAlt1 = [];\n var configSet = new ATNConfigSet(configs.fullCtx);\n for(var i=0; i<configs.items.length; i++) {\n config = configs.items[i];\n // handle alt 1 first\n if (config.alt !== 1) {\n continue;\n }\n var updatedContext = config.semanticContext.evalPrecedence(this.parser, this._outerContext);\n if (updatedContext===null) {\n // the configuration was eliminated\n continue;\n }\n statesFromAlt1[config.state.stateNumber] = config.context;\n if (updatedContext !== config.semanticContext) {\n configSet.add(new ATNConfig({semanticContext:updatedContext}, config), this.mergeCache);\n } else {\n configSet.add(config, this.mergeCache);\n }\n }\n for(i=0; i<configs.items.length; i++) {\n config = configs.items[i];\n if (config.alt === 1) {\n // already handled\n continue;\n }\n // In the future, this elimination step could be updated to also\n // filter the prediction context for alternatives predicting alt>1\n // (basically a graph subtraction algorithm).\n\t\tif (!config.precedenceFilterSuppressed) {\n var context = statesFromAlt1[config.state.stateNumber] || null;\n if (context!==null && context.equals(config.context)) {\n // eliminated\n continue;\n }\n\t\t}\n configSet.add(config, this.mergeCache);\n }\n return configSet;\n};\n\nParserATNSimulator.prototype.getReachableTarget = function(trans, ttype) {\n if (trans.matches(ttype, 0, this.atn.maxTokenType)) {\n return trans.target;\n } else {\n return null;\n }\n};\n\nParserATNSimulator.prototype.getPredsForAmbigAlts = function(ambigAlts, configs, nalts) {\n // REACH=[1|1|[]|0:0, 1|2|[]|0:1]\n // altToPred starts as an array of all null contexts. The entry at index i\n // corresponds to alternative i. altToPred[i] may have one of three values:\n // 1. null: no ATNConfig c is found such that c.alt==i\n // 2. SemanticContext.NONE: At least one ATNConfig c exists such that\n // c.alt==i and c.semanticContext==SemanticContext.NONE. In other words,\n // alt i has at least one unpredicated config.\n // 3. Non-NONE Semantic Context: There exists at least one, and for all\n // ATNConfig c such that c.alt==i, c.semanticContext!=SemanticContext.NONE.\n //\n // From this, it is clear that NONE||anything==NONE.\n //\n var altToPred = [];\n for(var i=0;i<configs.items.length;i++) {\n var c = configs.items[i];\n if(ambigAlts.contains( c.alt )) {\n altToPred[c.alt] = SemanticContext.orContext(altToPred[c.alt] || null, c.semanticContext);\n }\n }\n var nPredAlts = 0;\n for (i =1;i< nalts+1;i++) {\n var pred = altToPred[i] || null;\n if (pred===null) {\n altToPred[i] = SemanticContext.NONE;\n } else if (pred !== SemanticContext.NONE) {\n nPredAlts += 1;\n }\n }\n // nonambig alts are null in altToPred\n if (nPredAlts===0) {\n altToPred = null;\n }\n if (this.debug) {\n console.log(\"getPredsForAmbigAlts result \" + Utils.arrayToString(altToPred));\n }\n return altToPred;\n};\n\nParserATNSimulator.prototype.getPredicatePredictions = function(ambigAlts, altToPred) {\n var pairs = [];\n var containsPredicate = false;\n for (var i=1; i<altToPred.length;i++) {\n var pred = altToPred[i];\n // unpredicated is indicated by SemanticContext.NONE\n if( ambigAlts!==null && ambigAlts.contains( i )) {\n pairs.push(new PredPrediction(pred, i));\n }\n if (pred !== SemanticContext.NONE) {\n containsPredicate = true;\n }\n }\n if (! containsPredicate) {\n return null;\n }\n return pairs;\n};\n\n//\n// This method is used to improve the localization of error messages by\n// choosing an alternative rather than throwing a\n// {@link NoViableAltException} in particular prediction scenarios where the\n// {@link //ERROR} state was reached during ATN simulation.\n//\n// <p>\n// The default implementation of this method uses the following\n// algorithm to identify an ATN configuration which successfully parsed the\n// decision entry rule. Choosing such an alternative ensures that the\n// {@link ParserRuleContext} returned by the calling rule will be complete\n// and valid, and the syntax error will be reported later at a more\n// localized location.</p>\n//\n// <ul>\n// <li>If a syntactically valid path or paths reach the end of the decision rule and\n// they are semantically valid if predicated, return the min associated alt.</li>\n// <li>Else, if a semantically invalid but syntactically valid path exist\n// or paths exist, return the minimum associated alt.\n// </li>\n// <li>Otherwise, return {@link ATN//INVALID_ALT_NUMBER}.</li>\n// </ul>\n//\n// <p>\n// In some scenarios, the algorithm described above could predict an\n// alternative which will result in a {@link FailedPredicateException} in\n// the parser. Specifically, this could occur if the <em>only</em> configuration\n// capable of successfully parsing to the end of the decision rule is\n// blocked by a semantic predicate. By choosing this alternative within\n// {@link //adaptivePredict} instead of throwing a\n// {@link NoViableAltException}, the resulting\n// {@link FailedPredicateException} in the parser will identify the specific\n// predicate which is preventing the parser from successfully parsing the\n// decision rule, which helps developers identify and correct logic errors\n// in semantic predicates.\n// </p>\n//\n// @param configs The ATN configurations which were valid immediately before\n// the {@link //ERROR} state was reached\n// @param outerContext The is the \\gamma_0 initial parser context from the paper\n// or the parser stack at the instant before prediction commences.\n//\n// @return The value to return from {@link //adaptivePredict}, or\n// {@link ATN//INVALID_ALT_NUMBER} if a suitable alternative was not\n// identified and {@link //adaptivePredict} should report an error instead.\n//\nParserATNSimulator.prototype.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule = function(configs, outerContext) {\n var cfgs = this.splitAccordingToSemanticValidity(configs, outerContext);\n var semValidConfigs = cfgs[0];\n var semInvalidConfigs = cfgs[1];\n var alt = this.getAltThatFinishedDecisionEntryRule(semValidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // semantically/syntactically viable path exists\n return alt;\n }\n // Is there a syntactically valid path with a failed pred?\n if (semInvalidConfigs.items.length>0) {\n alt = this.getAltThatFinishedDecisionEntryRule(semInvalidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // syntactically viable path exists\n return alt;\n }\n }\n return ATN.INVALID_ALT_NUMBER;\n};\n\nParserATNSimulator.prototype.getAltThatFinishedDecisionEntryRule = function(configs) {\n var alts = [];\n for(var i=0;i<configs.items.length; i++) {\n var c = configs.items[i];\n if (c.reachesIntoOuterContext>0 || ((c.state instanceof RuleStopState) && c.context.hasEmptyPath())) {\n if(alts.indexOf(c.alt)<0) {\n alts.push(c.alt);\n }\n }\n }\n if (alts.length===0) {\n return ATN.INVALID_ALT_NUMBER;\n } else {\n return Math.min.apply(null, alts);\n }\n};\n// Walk the list of configurations and split them according to\n// those that have preds evaluating to true/false. If no pred, assume\n// true pred and include in succeeded set. Returns Pair of sets.\n//\n// Create a new set so as not to alter the incoming parameter.\n//\n// Assumption: the input stream has been restored to the starting point\n// prediction, which is where predicates need to evaluate.\n//\nParserATNSimulator.prototype.splitAccordingToSemanticValidity = function( configs, outerContext) {\n var succeeded = new ATNConfigSet(configs.fullCtx);\n var failed = new ATNConfigSet(configs.fullCtx);\n for(var i=0;i<configs.items.length; i++) {\n var c = configs.items[i];\n if (c.semanticContext !== SemanticContext.NONE) {\n var predicateEvaluationResult = c.semanticContext.evaluate(this.parser, outerContext);\n if (predicateEvaluationResult) {\n succeeded.add(c);\n } else {\n failed.add(c);\n }\n } else {\n succeeded.add(c);\n }\n }\n return [succeeded, failed];\n};\n\n// Look through a list of predicate/alt pairs, returning alts for the\n// pairs that win. A {@code NONE} predicate indicates an alt containing an\n// unpredicated config which behaves as \"always true.\" If !complete\n// then we stop at the first predicate that evaluates to true. This\n// includes pairs with null predicates.\n//\nParserATNSimulator.prototype.evalSemanticContext = function(predPredictions, outerContext, complete) {\n var predictions = new BitSet();\n for(var i=0;i<predPredictions.length;i++) {\n \tvar pair = predPredictions[i];\n if (pair.pred === SemanticContext.NONE) {\n predictions.add(pair.alt);\n if (! complete) {\n break;\n }\n continue;\n }\n var predicateEvaluationResult = pair.pred.evaluate(this.parser, outerContext);\n if (this.debug || this.dfa_debug) {\n console.log(\"eval pred \" + pair + \"=\" + predicateEvaluationResult);\n }\n if (predicateEvaluationResult) {\n if (this.debug || this.dfa_debug) {\n console.log(\"PREDICT \" + pair.alt);\n }\n predictions.add(pair.alt);\n if (! complete) {\n break;\n }\n }\n }\n return predictions;\n};\n\n// TODO: If we are doing predicates, there is no point in pursuing\n// closure operations if we reach a DFA state that uniquely predicts\n// alternative. We will not be caching that DFA state and it is a\n// waste to pursue the closure. Might have to advance when we do\n// ambig detection thought :(\n//\n\nParserATNSimulator.prototype.closure = function(config, configs, closureBusy, collectPredicates, fullCtx, treatEofAsEpsilon) {\n var initialDepth = 0;\n this.closureCheckingStopState(config, configs, closureBusy, collectPredicates,\n fullCtx, initialDepth, treatEofAsEpsilon);\n};\n\n\nParserATNSimulator.prototype.closureCheckingStopState = function(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) {\n if (this.debug || this.debug_closure) {\n console.log(\"closure(\" + config.toString(this.parser,true) + \")\");\n // console.log(\"configs(\" + configs.toString() + \")\");\n if(config.reachesIntoOuterContext>50) {\n throw \"problem\";\n }\n }\n if (config.state instanceof RuleStopState) {\n // We hit rule end. If we have context info, use it\n // run thru all possible stack tops in ctx\n if (! config.context.isEmpty()) {\n for ( var i =0; i<config.context.length; i++) {\n if (config.context.getReturnState(i) === PredictionContext.EMPTY_RETURN_STATE) {\n if (fullCtx) {\n configs.add(new ATNConfig({state:config.state, context:PredictionContext.EMPTY}, config), this.mergeCache);\n continue;\n } else {\n // we have no context info, just chase follow links (if greedy)\n if (this.debug) {\n console.log(\"FALLING off rule \" + this.getRuleName(config.state.ruleIndex));\n }\n this.closure_(config, configs, closureBusy, collectPredicates,\n fullCtx, depth, treatEofAsEpsilon);\n }\n continue;\n }\n var returnState = this.atn.states[config.context.getReturnState(i)];\n var newContext = config.context.getParent(i); // \"pop\" return state\n var parms = {state:returnState, alt:config.alt, context:newContext, semanticContext:config.semanticContext};\n var c = new ATNConfig(parms, null);\n // While we have context to pop back from, we may have\n // gotten that context AFTER having falling off a rule.\n // Make sure we track that we are now out of context.\n c.reachesIntoOuterContext = config.reachesIntoOuterContext;\n this.closureCheckingStopState(c, configs, closureBusy, collectPredicates, fullCtx, depth - 1, treatEofAsEpsilon);\n }\n return;\n } else if( fullCtx) {\n // reached end of start rule\n configs.add(config, this.mergeCache);\n return;\n } else {\n // else if we have no context info, just chase follow links (if greedy)\n if (this.debug) {\n console.log(\"FALLING off rule \" + this.getRuleName(config.state.ruleIndex));\n }\n }\n }\n this.closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon);\n};\n\n\n// Do the actual work of walking epsilon edges//\nParserATNSimulator.prototype.closure_ = function(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) {\n var p = config.state;\n // optimization\n if (! p.epsilonOnlyTransitions) {\n configs.add(config, this.mergeCache);\n // make sure to not return here, because EOF transitions can act as\n // both epsilon transitions and non-epsilon transitions.\n }\n for(var i = 0;i<p.transitions.length; i++) {\n if(i==0 && this.canDropLoopEntryEdgeInLeftRecursiveRule(config))\n continue;\n\n var t = p.transitions[i];\n var continueCollecting = collectPredicates && !(t instanceof ActionTransition);\n var c = this.getEpsilonTarget(config, t, continueCollecting, depth === 0, fullCtx, treatEofAsEpsilon);\n if (c!==null) {\n\t\t\tif (!t.isEpsilon && closureBusy.add(c)!==c){\n\t\t\t\t// avoid infinite recursion for EOF* and EOF+\n\t\t\t\tcontinue;\n\t\t\t}\n var newDepth = depth;\n if ( config.state instanceof RuleStopState) {\n // target fell off end of rule; mark resulting c as having dipped into outer context\n // We can't get here if incoming config was rule stop and we had context\n // track how far we dip into outer context. Might\n // come in handy and we avoid evaluating context dependent\n // preds if this is > 0.\n\n if (closureBusy.add(c)!==c) {\n // avoid infinite recursion for right-recursive rules\n continue;\n }\n\n\t\t\t\tif (this._dfa !== null && this._dfa.precedenceDfa) {\n\t\t\t\t\tif (t.outermostPrecedenceReturn === this._dfa.atnStartState.ruleIndex) {\n\t\t\t\t\t\tc.precedenceFilterSuppressed = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n c.reachesIntoOuterContext += 1;\n configs.dipsIntoOuterContext = true; // TODO: can remove? only care when we add to set per middle of this method\n newDepth -= 1;\n if (this.debug) {\n console.log(\"dips into outer ctx: \" + c);\n }\n } else if (t instanceof RuleTransition) {\n // latch when newDepth goes negative - once we step out of the entry context we can't return\n if (newDepth >= 0) {\n newDepth += 1;\n }\n }\n this.closureCheckingStopState(c, configs, closureBusy, continueCollecting, fullCtx, newDepth, treatEofAsEpsilon);\n }\n }\n};\n\n\nParserATNSimulator.prototype.canDropLoopEntryEdgeInLeftRecursiveRule = function(config) {\n // return False\n var p = config.state;\n // First check to see if we are in StarLoopEntryState generated during\n // left-recursion elimination. For efficiency, also check if\n // the context has an empty stack case. If so, it would mean\n // global FOLLOW so we can't perform optimization\n // Are we the special loop entry/exit state? or SLL wildcard\n if(p.stateType != ATNState.STAR_LOOP_ENTRY)\n return false;\n if(p.stateType != ATNState.STAR_LOOP_ENTRY || !p.isPrecedenceDecision ||\n config.context.isEmpty() || config.context.hasEmptyPath())\n return false;\n\n // Require all return states to return back to the same rule that p is in.\n var numCtxs = config.context.length;\n for(var i=0; i<numCtxs; i++) { // for each stack context\n var returnState = this.atn.states[config.context.getReturnState(i)];\n if (returnState.ruleIndex != p.ruleIndex)\n return false;\n }\n\n var decisionStartState = p.transitions[0].target;\n var blockEndStateNum = decisionStartState.endState.stateNumber;\n var blockEndState = this.atn.states[blockEndStateNum];\n\n // Verify that the top of each stack context leads to loop entry/exit\n // state through epsilon edges and w/o leaving rule.\n for(var i=0; i<numCtxs; i++) { // for each stack context\n var returnStateNumber = config.context.getReturnState(i);\n var returnState = this.atn.states[returnStateNumber];\n // all states must have single outgoing epsilon edge\n if (returnState.transitions.length != 1 || !returnState.transitions[0].isEpsilon)\n return false;\n\n // Look for prefix op case like 'not expr', (' type ')' expr\n var returnStateTarget = returnState.transitions[0].target;\n if ( returnState.stateType == ATNState.BLOCK_END && returnStateTarget == p )\n continue;\n\n // Look for 'expr op expr' or case where expr's return state is block end\n // of (...)* internal block; the block end points to loop back\n // which points to p but we don't need to check that\n if ( returnState == blockEndState )\n continue;\n\n // Look for ternary expr ? expr : expr. The return state points at block end,\n // which points at loop entry state\n if ( returnStateTarget == blockEndState )\n continue;\n\n // Look for complex prefix 'between expr and expr' case where 2nd expr's\n // return state points at block end state of (...)* internal block\n if (returnStateTarget.stateType == ATNState.BLOCK_END && returnStateTarget.transitions.length == 1\n && returnStateTarget.transitions[0].isEpsilon && returnStateTarget.transitions[0].target == p)\n continue;\n\n // anything else ain't conforming\n return false;\n }\n return true;\n};\n\n\nParserATNSimulator.prototype.getRuleName = function( index) {\n if (this.parser!==null && index>=0) {\n return this.parser.ruleNames[index];\n } else {\n return \"<rule \" + index + \">\";\n }\n};\n\nParserATNSimulator.prototype.getEpsilonTarget = function(config, t, collectPredicates, inContext, fullCtx, treatEofAsEpsilon) {\n switch(t.serializationType) {\n case Transition.RULE:\n return this.ruleTransition(config, t);\n case Transition.PRECEDENCE:\n return this.precedenceTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.PREDICATE:\n return this.predTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.ACTION:\n return this.actionTransition(config, t);\n case Transition.EPSILON:\n return new ATNConfig({state:t.target}, config);\n case Transition.ATOM:\n case Transition.RANGE:\n case Transition.SET:\n // EOF transitions act like epsilon transitions after the first EOF\n // transition is traversed\n if (treatEofAsEpsilon) {\n if (t.matches(Token.EOF, 0, 1)) {\n return new ATNConfig({state: t.target}, config);\n }\n }\n return null;\n default:\n \treturn null;\n }\n};\n\nParserATNSimulator.prototype.actionTransition = function(config, t) {\n if (this.debug) {\n var index = t.actionIndex==-1 ? 65535 : t.actionIndex;\n console.log(\"ACTION edge \" + t.ruleIndex + \":\" + index);\n }\n return new ATNConfig({state:t.target}, config);\n};\n\nParserATNSimulator.prototype.precedenceTransition = function(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" +\n pt.precedence + \">=_p, ctx dependent=true\");\n if (this.parser!==null) {\n \tconsole.log(\"context surrounding pred is \" + Utils.arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n var c = null;\n if (collectPredicates && inContext) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n var currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n var predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n var newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n};\n\nParserATNSimulator.prototype.predTransition = function(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" + pt.ruleIndex +\n \":\" + pt.predIndex + \", ctx dependent=\" + pt.isCtxDependent);\n if (this.parser!==null) {\n console.log(\"context surrounding pred is \" + Utils.arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n var c = null;\n if (collectPredicates && ((pt.isCtxDependent && inContext) || ! pt.isCtxDependent)) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n var currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n var predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n var newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n};\n\nParserATNSimulator.prototype.ruleTransition = function(config, t) {\n if (this.debug) {\n console.log(\"CALL rule \" + this.getRuleName(t.target.ruleIndex) + \", ctx=\" + config.context);\n }\n var returnState = t.followState;\n var newContext = SingletonPredictionContext.create(config.context, returnState.stateNumber);\n return new ATNConfig({state:t.target, context:newContext}, config );\n};\n\nParserATNSimulator.prototype.getConflictingAlts = function(configs) {\n var altsets = PredictionMode.getConflictingAltSubsets(configs);\n return PredictionMode.getAlts(altsets);\n};\n\n // Sam pointed out a problem with the previous definition, v3, of\n // ambiguous states. If we have another state associated with conflicting\n // alternatives, we should keep going. For example, the following grammar\n //\n // s : (ID | ID ID?) ';' ;\n //\n // When the ATN simulation reaches the state before ';', it has a DFA\n // state that looks like: [12|1|[], 6|2|[], 12|2|[]]. Naturally\n // 12|1|[] and 12|2|[] conflict, but we cannot stop processing this node\n // because alternative to has another way to continue, via [6|2|[]].\n // The key is that we have a single state that has config's only associated\n // with a single alternative, 2, and crucially the state transitions\n // among the configurations are all non-epsilon transitions. That means\n // we don't consider any conflicts that include alternative 2. So, we\n // ignore the conflict between alts 1 and 2. We ignore a set of\n // conflicting alts when there is an intersection with an alternative\n // associated with a single alt state in the state→config-list map.\n //\n // It's also the case that we might have two conflicting configurations but\n // also a 3rd nonconflicting configuration for a different alternative:\n // [1|1|[], 1|2|[], 8|3|[]]. This can come about from grammar:\n //\n // a : A | A | A B ;\n //\n // After matching input A, we reach the stop state for rule A, state 1.\n // State 8 is the state right before B. Clearly alternatives 1 and 2\n // conflict and no amount of further lookahead will separate the two.\n // However, alternative 3 will be able to continue and so we do not\n // stop working on this state. In the previous example, we're concerned\n // with states associated with the conflicting alternatives. Here alt\n // 3 is not associated with the conflicting configs, but since we can continue\n // looking for input reasonably, I don't declare the state done. We\n // ignore a set of conflicting alts when we have an alternative\n // that we still need to pursue.\n//\n\nParserATNSimulator.prototype.getConflictingAltsOrUniqueAlt = function(configs) {\n var conflictingAlts = null;\n if (configs.uniqueAlt!== ATN.INVALID_ALT_NUMBER) {\n conflictingAlts = new BitSet();\n conflictingAlts.add(configs.uniqueAlt);\n } else {\n conflictingAlts = configs.conflictingAlts;\n }\n return conflictingAlts;\n};\n\nParserATNSimulator.prototype.getTokenName = function( t) {\n if (t===Token.EOF) {\n return \"EOF\";\n }\n if( this.parser!==null && this.parser.literalNames!==null) {\n if (t >= this.parser.literalNames.length && t >= this.parser.symbolicNames.length) {\n console.log(\"\" + t + \" ttype out of range: \" + this.parser.literalNames);\n console.log(\"\" + this.parser.getInputStream().getTokens());\n } else {\n var name = this.parser.literalNames[t] || this.parser.symbolicNames[t];\n return name + \"<\" + t + \">\";\n }\n }\n return \"\" + t;\n};\n\nParserATNSimulator.prototype.getLookaheadName = function(input) {\n return this.getTokenName(input.LA(1));\n};\n\n// Used for debugging in adaptivePredict around execATN but I cut\n// it out for clarity now that alg. works well. We can leave this\n// \"dead\" code for a bit.\n//\nParserATNSimulator.prototype.dumpDeadEndConfigs = function(nvae) {\n console.log(\"dead end configs: \");\n var decs = nvae.getDeadEndConfigs();\n for(var i=0; i<decs.length; i++) {\n \tvar c = decs[i];\n var trans = \"no edges\";\n if (c.state.transitions.length>0) {\n var t = c.state.transitions[0];\n if (t instanceof AtomTransition) {\n trans = \"Atom \"+ this.getTokenName(t.label);\n } else if (t instanceof SetTransition) {\n var neg = (t instanceof NotSetTransition);\n trans = (neg ? \"~\" : \"\") + \"Set \" + t.set;\n }\n }\n console.error(c.toString(this.parser, true) + \":\" + trans);\n }\n};\n\nParserATNSimulator.prototype.noViableAlt = function(input, outerContext, configs, startIndex) {\n return new NoViableAltException(this.parser, input, input.get(startIndex), input.LT(1), configs, outerContext);\n};\n\nParserATNSimulator.prototype.getUniqueAlt = function(configs) {\n var alt = ATN.INVALID_ALT_NUMBER;\n for(var i=0;i<configs.items.length;i++) {\n \tvar c = configs.items[i];\n if (alt === ATN.INVALID_ALT_NUMBER) {\n alt = c.alt // found first alt\n } else if( c.alt!==alt) {\n return ATN.INVALID_ALT_NUMBER;\n }\n }\n return alt;\n};\n\n//\n// Add an edge to the DFA, if possible. This method calls\n// {@link //addDFAState} to ensure the {@code to} state is present in the\n// DFA. If {@code from} is {@code null}, or if {@code t} is outside the\n// range of edges that can be represented in the DFA tables, this method\n// returns without adding the edge to the DFA.\n//\n// <p>If {@code to} is {@code null}, this method returns {@code null}.\n// Otherwise, this method returns the {@link DFAState} returned by calling\n// {@link //addDFAState} for the {@code to} state.</p>\n//\n// @param dfa The DFA\n// @param from The source state for the edge\n// @param t The input symbol\n// @param to The target state for the edge\n//\n// @return If {@code to} is {@code null}, this method returns {@code null};\n// otherwise this method returns the result of calling {@link //addDFAState}\n// on {@code to}\n//\nParserATNSimulator.prototype.addDFAEdge = function(dfa, from_, t, to) {\n if( this.debug) {\n console.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + this.getTokenName(t));\n }\n if (to===null) {\n return null;\n }\n to = this.addDFAState(dfa, to); // used existing if possible not incoming\n if (from_===null || t < -1 || t > this.atn.maxTokenType) {\n return to;\n }\n if (from_.edges===null) {\n from_.edges = [];\n }\n from_.edges[t+1] = to; // connect\n\n if (this.debug) {\n var literalNames = this.parser===null ? null : this.parser.literalNames;\n var symbolicNames = this.parser===null ? null : this.parser.symbolicNames;\n console.log(\"DFA=\\n\" + dfa.toString(literalNames, symbolicNames));\n }\n return to;\n};\n//\n// Add state {@code D} to the DFA if it is not already present, and return\n// the actual instance stored in the DFA. If a state equivalent to {@code D}\n// is already in the DFA, the existing state is returned. Otherwise this\n// method returns {@code D} after adding it to the DFA.\n//\n// <p>If {@code D} is {@link //ERROR}, this method returns {@link //ERROR} and\n// does not change the DFA.</p>\n//\n// @param dfa The dfa\n// @param D The DFA state to add\n// @return The state stored in the DFA. This will be either the existing\n// state if {@code D} is already in the DFA, or {@code D} itself if the\n// state was not already present.\n//\nParserATNSimulator.prototype.addDFAState = function(dfa, D) {\n if (D == ATNSimulator.ERROR) {\n return D;\n }\n var existing = dfa.states.get(D);\n if(existing!==null) {\n return existing;\n }\n D.stateNumber = dfa.states.length;\n if (! D.configs.readOnly) {\n D.configs.optimizeConfigs(this);\n D.configs.setReadonly(true);\n }\n dfa.states.add(D);\n if (this.debug) {\n console.log(\"adding new DFA state: \" + D);\n }\n return D;\n};\n\nParserATNSimulator.prototype.reportAttemptingFullContext = function(dfa, conflictingAlts, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAttemptingFullContext decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser, dfa, startIndex, stopIndex, conflictingAlts, configs);\n }\n};\n\nParserATNSimulator.prototype.reportContextSensitivity = function(dfa, prediction, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportContextSensitivity decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser, dfa, startIndex, stopIndex, prediction, configs);\n }\n};\n\n// If context sensitive parsing, we know it's ambiguity not conflict//\nParserATNSimulator.prototype.reportAmbiguity = function(dfa, D, startIndex, stopIndex,\n exact, ambigAlts, configs ) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAmbiguity \" + ambigAlts + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs);\n }\n};\n\nexports.ParserATNSimulator = ParserATNSimulator;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n//\n// This enumeration defines the prediction modes available in ANTLR 4 along with\n// utility methods for analyzing configuration sets for conflicts and/or\n// ambiguities.\n\nvar Set = require('./../Utils').Set;\nvar Map = require('./../Utils').Map;\nvar BitSet = require('./../Utils').BitSet;\nvar AltDict = require('./../Utils').AltDict;\nvar ATN = require('./ATN').ATN;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar ATNConfig = require('./ATNConfig').ATNConfig;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar Hash = require(\"../Utils\").Hash;\nvar hashStuff = require('./../Utils').hashStuff;\nvar equalArrays = require('./../Utils').equalArrays;\n\nfunction PredictionMode() {\n\treturn this;\n}\n\n//\n// The SLL(*) prediction mode. This prediction mode ignores the current\n// parser context when making predictions. This is the fastest prediction\n// mode, and provides correct results for many grammars. This prediction\n// mode is more powerful than the prediction mode provided by ANTLR 3, but\n// may result in syntax errors for grammar and input combinations which are\n// not SLL.\n//\n// <p>\n// When using this prediction mode, the parser will either return a correct\n// parse tree (i.e. the same parse tree that would be returned with the\n// {@link //LL} prediction mode), or it will report a syntax error. If a\n// syntax error is encountered when using the {@link //SLL} prediction mode,\n// it may be due to either an actual syntax error in the input or indicate\n// that the particular combination of grammar and input requires the more\n// powerful {@link //LL} prediction abilities to complete successfully.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.SLL = 0;\n//\n// The LL(*) prediction mode. This prediction mode allows the current parser\n// context to be used for resolving SLL conflicts that occur during\n// prediction. This is the fastest prediction mode that guarantees correct\n// parse results for all combinations of grammars with syntactically correct\n// inputs.\n//\n// <p>\n// When using this prediction mode, the parser will make correct decisions\n// for all syntactically-correct grammar and input combinations. However, in\n// cases where the grammar is truly ambiguous this prediction mode might not\n// report a precise answer for <em>exactly which</em> alternatives are\n// ambiguous.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.LL = 1;\n//\n// The LL(*) prediction mode with exact ambiguity detection. In addition to\n// the correctness guarantees provided by the {@link //LL} prediction mode,\n// this prediction mode instructs the prediction algorithm to determine the\n// complete and exact set of ambiguous alternatives for every ambiguous\n// decision encountered while parsing.\n//\n// <p>\n// This prediction mode may be used for diagnosing ambiguities during\n// grammar development. Due to the performance overhead of calculating sets\n// of ambiguous alternatives, this prediction mode should be avoided when\n// the exact results are not necessary.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.LL_EXACT_AMBIG_DETECTION = 2;\n\n\n//\n// Computes the SLL prediction termination condition.\n//\n// <p>\n// This method computes the SLL prediction termination condition for both of\n// the following cases.</p>\n//\n// <ul>\n// <li>The usual SLL+LL fallback upon SLL conflict</li>\n// <li>Pure SLL without LL fallback</li>\n// </ul>\n//\n// <p><strong>COMBINED SLL+LL PARSING</strong></p>\n//\n// <p>When LL-fallback is enabled upon SLL conflict, correct predictions are\n// ensured regardless of how the termination condition is computed by this\n// method. Due to the substantially higher cost of LL prediction, the\n// prediction should only fall back to LL when the additional lookahead\n// cannot lead to a unique SLL prediction.</p>\n//\n// <p>Assuming combined SLL+LL parsing, an SLL configuration set with only\n// conflicting subsets should fall back to full LL, even if the\n// configuration sets don't resolve to the same alternative (e.g.\n// {@code {1,2}} and {@code {3,4}}. If there is at least one non-conflicting\n// configuration, SLL could continue with the hopes that more lookahead will\n// resolve via one of those non-conflicting configurations.</p>\n//\n// <p>Here's the prediction termination rule them: SLL (for SLL+LL parsing)\n// stops when it sees only conflicting configuration subsets. In contrast,\n// full LL keeps going when there is uncertainty.</p>\n//\n// <p><strong>HEURISTIC</strong></p>\n//\n// <p>As a heuristic, we stop prediction when we see any conflicting subset\n// unless we see a state that only has one alternative associated with it.\n// The single-alt-state thing lets prediction continue upon rules like\n// (otherwise, it would admit defeat too soon):</p>\n//\n// <p>{@code [12|1|[], 6|2|[], 12|2|[]]. s : (ID | ID ID?) ';' ;}</p>\n//\n// <p>When the ATN simulation reaches the state before {@code ';'}, it has a\n// DFA state that looks like: {@code [12|1|[], 6|2|[], 12|2|[]]}. Naturally\n// {@code 12|1|[]} and {@code 12|2|[]} conflict, but we cannot stop\n// processing this node because alternative to has another way to continue,\n// via {@code [6|2|[]]}.</p>\n//\n// <p>It also let's us continue for this rule:</p>\n//\n// <p>{@code [1|1|[], 1|2|[], 8|3|[]] a : A | A | A B ;}</p>\n//\n// <p>After matching input A, we reach the stop state for rule A, state 1.\n// State 8 is the state right before B. Clearly alternatives 1 and 2\n// conflict and no amount of further lookahead will separate the two.\n// However, alternative 3 will be able to continue and so we do not stop\n// working on this state. In the previous example, we're concerned with\n// states associated with the conflicting alternatives. Here alt 3 is not\n// associated with the conflicting configs, but since we can continue\n// looking for input reasonably, don't declare the state done.</p>\n//\n// <p><strong>PURE SLL PARSING</strong></p>\n//\n// <p>To handle pure SLL parsing, all we have to do is make sure that we\n// combine stack contexts for configurations that differ only by semantic\n// predicate. From there, we can do the usual SLL termination heuristic.</p>\n//\n// <p><strong>PREDICATES IN SLL+LL PARSING</strong></p>\n//\n// <p>SLL decisions don't evaluate predicates until after they reach DFA stop\n// states because they need to create the DFA cache that works in all\n// semantic situations. In contrast, full LL evaluates predicates collected\n// during start state computation so it can ignore predicates thereafter.\n// This means that SLL termination detection can totally ignore semantic\n// predicates.</p>\n//\n// <p>Implementation-wise, {@link ATNConfigSet} combines stack contexts but not\n// semantic predicate contexts so we might see two configurations like the\n// following.</p>\n//\n// <p>{@code (s, 1, x, {}), (s, 1, x', {p})}</p>\n//\n// <p>Before testing these configurations against others, we have to merge\n// {@code x} and {@code x'} (without modifying the existing configurations).\n// For example, we test {@code (x+x')==x''} when looking for conflicts in\n// the following configurations.</p>\n//\n// <p>{@code (s, 1, x, {}), (s, 1, x', {p}), (s, 2, x'', {})}</p>\n//\n// <p>If the configuration set has predicates (as indicated by\n// {@link ATNConfigSet//hasSemanticContext}), this algorithm makes a copy of\n// the configurations to strip out all of the predicates so that a standard\n// {@link ATNConfigSet} will merge everything ignoring predicates.</p>\n//\nPredictionMode.hasSLLConflictTerminatingPrediction = function( mode, configs) {\n // Configs in rule stop states indicate reaching the end of the decision\n // rule (local context) or end of start rule (full context). If all\n // configs meet this condition, then none of the configurations is able\n // to match additional input so we terminate prediction.\n //\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return true;\n }\n // pure SLL mode parsing\n if (mode === PredictionMode.SLL) {\n // Don't bother with combining configs from different semantic\n // contexts if we can fail over to full LL; costs more time\n // since we'll often fail over anyway.\n if (configs.hasSemanticContext) {\n // dup configs, tossing out semantic predicates\n var dup = new ATNConfigSet();\n for(var i=0;i<configs.items.length;i++) {\n \tvar c = configs.items[i];\n c = new ATNConfig({semanticContext:SemanticContext.NONE}, c);\n dup.add(c);\n }\n configs = dup;\n }\n // now we have combined contexts for configs with dissimilar preds\n }\n // pure SLL or combined SLL+LL mode parsing\n var altsets = PredictionMode.getConflictingAltSubsets(configs);\n return PredictionMode.hasConflictingAltSet(altsets) && !PredictionMode.hasStateAssociatedWithOneAlt(configs);\n};\n\n// Checks if any configuration in {@code configs} is in a\n// {@link RuleStopState}. Configurations meeting this condition have reached\n// the end of the decision rule (local context) or end of start rule (full\n// context).\n//\n// @param configs the configuration set to test\n// @return {@code true} if any configuration in {@code configs} is in a\n// {@link RuleStopState}, otherwise {@code false}\nPredictionMode.hasConfigInRuleStopState = function(configs) {\n\tfor(var i=0;i<configs.items.length;i++) {\n\t\tvar c = configs.items[i];\n if (c.state instanceof RuleStopState) {\n return true;\n }\n\t}\n return false;\n};\n\n// Checks if all configurations in {@code configs} are in a\n// {@link RuleStopState}. Configurations meeting this condition have reached\n// the end of the decision rule (local context) or end of start rule (full\n// context).\n//\n// @param configs the configuration set to test\n// @return {@code true} if all configurations in {@code configs} are in a\n// {@link RuleStopState}, otherwise {@code false}\nPredictionMode.allConfigsInRuleStopStates = function(configs) {\n\tfor(var i=0;i<configs.items.length;i++) {\n\t\tvar c = configs.items[i];\n if (!(c.state instanceof RuleStopState)) {\n return false;\n }\n\t}\n return true;\n};\n\n//\n// Full LL prediction termination.\n//\n// <p>Can we stop looking ahead during ATN simulation or is there some\n// uncertainty as to which alternative we will ultimately pick, after\n// consuming more input? Even if there are partial conflicts, we might know\n// that everything is going to resolve to the same minimum alternative. That\n// means we can stop since no more lookahead will change that fact. On the\n// other hand, there might be multiple conflicts that resolve to different\n// minimums. That means we need more look ahead to decide which of those\n// alternatives we should predict.</p>\n//\n// <p>The basic idea is to split the set of configurations {@code C}, into\n// conflicting subsets {@code (s, _, ctx, _)} and singleton subsets with\n// non-conflicting configurations. Two configurations conflict if they have\n// identical {@link ATNConfig//state} and {@link ATNConfig//context} values\n// but different {@link ATNConfig//alt} value, e.g. {@code (s, i, ctx, _)}\n// and {@code (s, j, ctx, _)} for {@code i!=j}.</p>\n//\n// <p>Reduce these configuration subsets to the set of possible alternatives.\n// You can compute the alternative subsets in one pass as follows:</p>\n//\n// <p>{@code A_s,ctx = {i | (s, i, ctx, _)}} for each configuration in\n// {@code C} holding {@code s} and {@code ctx} fixed.</p>\n//\n// <p>Or in pseudo-code, for each configuration {@code c} in {@code C}:</p>\n//\n// <pre>\n// map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n// alt and not pred\n// </pre>\n//\n// <p>The values in {@code map} are the set of {@code A_s,ctx} sets.</p>\n//\n// <p>If {@code |A_s,ctx|=1} then there is no conflict associated with\n// {@code s} and {@code ctx}.</p>\n//\n// <p>Reduce the subsets to singletons by choosing a minimum of each subset. If\n// the union of these alternative subsets is a singleton, then no amount of\n// more lookahead will help us. We will always pick that alternative. If,\n// however, there is more than one alternative, then we are uncertain which\n// alternative to predict and must continue looking for resolution. We may\n// or may not discover an ambiguity in the future, even if there are no\n// conflicting subsets this round.</p>\n//\n// <p>The biggest sin is to terminate early because it means we've made a\n// decision but were uncertain as to the eventual outcome. We haven't used\n// enough lookahead. On the other hand, announcing a conflict too late is no\n// big deal; you will still have the conflict. It's just inefficient. It\n// might even look until the end of file.</p>\n//\n// <p>No special consideration for semantic predicates is required because\n// predicates are evaluated on-the-fly for full LL prediction, ensuring that\n// no configuration contains a semantic context during the termination\n// check.</p>\n//\n// <p><strong>CONFLICTING CONFIGS</strong></p>\n//\n// <p>Two configurations {@code (s, i, x)} and {@code (s, j, x')}, conflict\n// when {@code i!=j} but {@code x=x'}. Because we merge all\n// {@code (s, i, _)} configurations together, that means that there are at\n// most {@code n} configurations associated with state {@code s} for\n// {@code n} possible alternatives in the decision. The merged stacks\n// complicate the comparison of configuration contexts {@code x} and\n// {@code x'}. Sam checks to see if one is a subset of the other by calling\n// merge and checking to see if the merged result is either {@code x} or\n// {@code x'}. If the {@code x} associated with lowest alternative {@code i}\n// is the superset, then {@code i} is the only possible prediction since the\n// others resolve to {@code min(i)} as well. However, if {@code x} is\n// associated with {@code j>i} then at least one stack configuration for\n// {@code j} is not in conflict with alternative {@code i}. The algorithm\n// should keep going, looking for more lookahead due to the uncertainty.</p>\n//\n// <p>For simplicity, I'm doing a equality check between {@code x} and\n// {@code x'} that lets the algorithm continue to consume lookahead longer\n// than necessary. The reason I like the equality is of course the\n// simplicity but also because that is the test you need to detect the\n// alternatives that are actually in conflict.</p>\n//\n// <p><strong>CONTINUE/STOP RULE</strong></p>\n//\n// <p>Continue if union of resolved alternative sets from non-conflicting and\n// conflicting alternative subsets has more than one alternative. We are\n// uncertain about which alternative to predict.</p>\n//\n// <p>The complete set of alternatives, {@code [i for (_,i,_)]}, tells us which\n// alternatives are still in the running for the amount of input we've\n// consumed at this point. The conflicting sets let us to strip away\n// configurations that won't lead to more states because we resolve\n// conflicts to the configuration with a minimum alternate for the\n// conflicting set.</p>\n//\n// <p><strong>CASES</strong></p>\n//\n// <ul>\n//\n// <li>no conflicts and more than 1 alternative in set => continue</li>\n//\n// <li> {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s, 3, z)},\n// {@code (s', 1, y)}, {@code (s', 2, y)} yields non-conflicting set\n// {@code {3}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n// {@code {1,3}} => continue\n// </li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n// {@code (s', 2, y)}, {@code (s'', 1, z)} yields non-conflicting set\n// {@code {1}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n// {@code {1}} => stop and predict 1</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n// {@code (s', 2, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {1}} = {@code {1}} => stop and predict 1, can announce\n// ambiguity {@code {1,2}}</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 2, y)},\n// {@code (s', 3, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {2}} = {@code {1,2}} => continue</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 3, y)},\n// {@code (s', 4, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {3}} = {@code {1,3}} => continue</li>\n//\n// </ul>\n//\n// <p><strong>EXACT AMBIGUITY DETECTION</strong></p>\n//\n// <p>If all states report the same conflicting set of alternatives, then we\n// know we have the exact ambiguity set.</p>\n//\n// <p><code>|A_<em>i</em>|>1</code> and\n// <code>A_<em>i</em> = A_<em>j</em></code> for all <em>i</em>, <em>j</em>.</p>\n//\n// <p>In other words, we continue examining lookahead until all {@code A_i}\n// have more than one alternative and all {@code A_i} are the same. If\n// {@code A={{1,2}, {1,3}}}, then regular LL prediction would terminate\n// because the resolved set is {@code {1}}. To determine what the real\n// ambiguity is, we have to know whether the ambiguity is between one and\n// two or one and three so we keep going. We can only stop prediction when\n// we need exact ambiguity detection when the sets look like\n// {@code A={{1,2}}} or {@code {{1,2},{1,2}}}, etc...</p>\n//\nPredictionMode.resolvesToJustOneViableAlt = function(altsets) {\n return PredictionMode.getSingleViableAlt(altsets);\n};\n\n//\n// Determines if every alternative subset in {@code altsets} contains more\n// than one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if every {@link BitSet} in {@code altsets} has\n// {@link BitSet//cardinality cardinality} > 1, otherwise {@code false}\n//\nPredictionMode.allSubsetsConflict = function(altsets) {\n return ! PredictionMode.hasNonConflictingAltSet(altsets);\n};\n//\n// Determines if any single alternative subset in {@code altsets} contains\n// exactly one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if {@code altsets} contains a {@link BitSet} with\n// {@link BitSet//cardinality cardinality} 1, otherwise {@code false}\n//\nPredictionMode.hasNonConflictingAltSet = function(altsets) {\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (alts.length===1) {\n return true;\n }\n\t}\n return false;\n};\n\n//\n// Determines if any single alternative subset in {@code altsets} contains\n// more than one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if {@code altsets} contains a {@link BitSet} with\n// {@link BitSet//cardinality cardinality} > 1, otherwise {@code false}\n//\nPredictionMode.hasConflictingAltSet = function(altsets) {\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (alts.length>1) {\n return true;\n }\n\t}\n return false;\n};\n\n//\n// Determines if every alternative subset in {@code altsets} is equivalent.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if every member of {@code altsets} is equal to the\n// others, otherwise {@code false}\n//\nPredictionMode.allSubsetsEqual = function(altsets) {\n var first = null;\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (first === null) {\n first = alts;\n } else if (alts!==first) {\n return false;\n }\n\t}\n return true;\n};\n\n//\n// Returns the unique alternative predicted by all alternative subsets in\n// {@code altsets}. If no such alternative exists, this method returns\n// {@link ATN//INVALID_ALT_NUMBER}.\n//\n// @param altsets a collection of alternative subsets\n//\nPredictionMode.getUniqueAlt = function(altsets) {\n var all = PredictionMode.getAlts(altsets);\n if (all.length===1) {\n return all.minValue();\n } else {\n return ATN.INVALID_ALT_NUMBER;\n }\n};\n\n// Gets the complete set of represented alternatives for a collection of\n// alternative subsets. This method returns the union of each {@link BitSet}\n// in {@code altsets}.\n//\n// @param altsets a collection of alternative subsets\n// @return the set of represented alternatives in {@code altsets}\n//\nPredictionMode.getAlts = function(altsets) {\n var all = new BitSet();\n altsets.map( function(alts) { all.or(alts); });\n return all;\n};\n\n//\n// This function gets the conflicting alt subsets from a configuration set.\n// For each configuration {@code c} in {@code configs}:\n//\n// <pre>\n// map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n// alt and not pred\n// </pre>\n\nPredictionMode.getConflictingAltSubsets = function(configs) {\n var configToAlts = new Map();\n configToAlts.hashFunction = function(cfg) { hashStuff(cfg.state.stateNumber, cfg.context); };\n configToAlts.equalsFunction = function(c1, c2) { return c1.state.stateNumber==c2.state.stateNumber && c1.context.equals(c2.context);}\n configs.items.map(function(cfg) {\n var alts = configToAlts.get(cfg);\n if (alts === null) {\n alts = new BitSet();\n configToAlts.put(cfg, alts);\n }\n alts.add(cfg.alt);\n\t});\n return configToAlts.getValues();\n};\n\n//\n// Get a map from state to alt subset from a configuration set. For each\n// configuration {@code c} in {@code configs}:\n//\n// <pre>\n// map[c.{@link ATNConfig//state state}] U= c.{@link ATNConfig//alt alt}\n// </pre>\n//\nPredictionMode.getStateToAltMap = function(configs) {\n var m = new AltDict();\n configs.items.map(function(c) {\n var alts = m.get(c.state);\n if (alts === null) {\n alts = new BitSet();\n m.put(c.state, alts);\n }\n alts.add(c.alt);\n });\n return m;\n};\n\nPredictionMode.hasStateAssociatedWithOneAlt = function(configs) {\n var values = PredictionMode.getStateToAltMap(configs).values();\n for(var i=0;i<values.length;i++) {\n if (values[i].length===1) {\n return true;\n }\n }\n return false;\n};\n\nPredictionMode.getSingleViableAlt = function(altsets) {\n var result = null;\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n var minAlt = alts.minValue();\n if(result===null) {\n result = minAlt;\n } else if(result!==minAlt) { // more than 1 viable alt\n return ATN.INVALID_ALT_NUMBER;\n }\n\t}\n return result;\n};\n\nexports.PredictionMode = PredictionMode;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// A tree structure used to record the semantic context in which\n// an ATN configuration is valid. It's either a single predicate,\n// a conjunction {@code p1&&p2}, or a sum of products {@code p1||p2}.\n//\n// <p>I have scoped the {@link AND}, {@link OR}, and {@link Predicate} subclasses of\n// {@link SemanticContext} within the scope of this outer class.</p>\n//\n\nvar Set = require('./../Utils').Set;\nvar Hash = require('./../Utils').Hash;\n\nfunction SemanticContext() {\n\treturn this;\n}\n\nSemanticContext.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n};\n\n// For context independent predicates, we evaluate them without a local\n// context (i.e., null context). That way, we can evaluate them without\n// having to create proper rule-specific context during prediction (as\n// opposed to the parser, which creates them naturally). In a practical\n// sense, this avoids a cast exception from RuleContext to myruleContext.\n//\n// <p>For context dependent predicates, we must pass in a local context so that\n// references such as $arg evaluate properly as _localctx.arg. We only\n// capture context dependent predicates in the context in which we begin\n// prediction, so we passed in the outer context here in case of context\n// dependent predicate evaluation.</p>\n//\nSemanticContext.prototype.evaluate = function(parser, outerContext) {\n};\n\n//\n// Evaluate the precedence predicates for the context and reduce the result.\n//\n// @param parser The parser instance.\n// @param outerContext The current parser context object.\n// @return The simplified semantic context after precedence predicates are\n// evaluated, which will be one of the following values.\n// <ul>\n// <li>{@link //NONE}: if the predicate simplifies to {@code true} after\n// precedence predicates are evaluated.</li>\n// <li>{@code null}: if the predicate simplifies to {@code false} after\n// precedence predicates are evaluated.</li>\n// <li>{@code this}: if the semantic context is not changed as a result of\n// precedence predicate evaluation.</li>\n// <li>A non-{@code null} {@link SemanticContext}: the new simplified\n// semantic context after precedence predicates are evaluated.</li>\n// </ul>\n//\nSemanticContext.prototype.evalPrecedence = function(parser, outerContext) {\n\treturn this;\n};\n\nSemanticContext.andContext = function(a, b) {\n\tif (a === null || a === SemanticContext.NONE) {\n\t\treturn b;\n\t}\n\tif (b === null || b === SemanticContext.NONE) {\n\t\treturn a;\n\t}\n\tvar result = new AND(a, b);\n\tif (result.opnds.length === 1) {\n\t\treturn result.opnds[0];\n\t} else {\n\t\treturn result;\n\t}\n};\n\nSemanticContext.orContext = function(a, b) {\n\tif (a === null) {\n\t\treturn b;\n\t}\n\tif (b === null) {\n\t\treturn a;\n\t}\n\tif (a === SemanticContext.NONE || b === SemanticContext.NONE) {\n\t\treturn SemanticContext.NONE;\n\t}\n\tvar result = new OR(a, b);\n\tif (result.opnds.length === 1) {\n\t\treturn result.opnds[0];\n\t} else {\n\t\treturn result;\n\t}\n};\n\nfunction Predicate(ruleIndex, predIndex, isCtxDependent) {\n\tSemanticContext.call(this);\n\tthis.ruleIndex = ruleIndex === undefined ? -1 : ruleIndex;\n\tthis.predIndex = predIndex === undefined ? -1 : predIndex;\n\tthis.isCtxDependent = isCtxDependent === undefined ? false : isCtxDependent; // e.g., $i ref in pred\n\treturn this;\n}\n\nPredicate.prototype = Object.create(SemanticContext.prototype);\nPredicate.prototype.constructor = Predicate;\n\n//The default {@link SemanticContext}, which is semantically equivalent to\n//a predicate of the form {@code {true}?}.\n//\nSemanticContext.NONE = new Predicate();\n\n\nPredicate.prototype.evaluate = function(parser, outerContext) {\n\tvar localctx = this.isCtxDependent ? outerContext : null;\n\treturn parser.sempred(localctx, this.ruleIndex, this.predIndex);\n};\n\nPredicate.prototype.updateHashCode = function(hash) {\n\thash.update(this.ruleIndex, this.predIndex, this.isCtxDependent);\n};\n\nPredicate.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof Predicate)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.ruleIndex === other.ruleIndex &&\n\t\t\t\tthis.predIndex === other.predIndex &&\n\t\t\t\tthis.isCtxDependent === other.isCtxDependent;\n\t}\n};\n\nPredicate.prototype.toString = function() {\n\treturn \"{\" + this.ruleIndex + \":\" + this.predIndex + \"}?\";\n};\n\nfunction PrecedencePredicate(precedence) {\n\tSemanticContext.call(this);\n\tthis.precedence = precedence === undefined ? 0 : precedence;\n}\n\nPrecedencePredicate.prototype = Object.create(SemanticContext.prototype);\nPrecedencePredicate.prototype.constructor = PrecedencePredicate;\n\nPrecedencePredicate.prototype.evaluate = function(parser, outerContext) {\n\treturn parser.precpred(outerContext, this.precedence);\n};\n\nPrecedencePredicate.prototype.evalPrecedence = function(parser, outerContext) {\n\tif (parser.precpred(outerContext, this.precedence)) {\n\t\treturn SemanticContext.NONE;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nPrecedencePredicate.prototype.compareTo = function(other) {\n\treturn this.precedence - other.precedence;\n};\n\nPrecedencePredicate.prototype.updateHashCode = function(hash) {\n hash.update(31);\n};\n\nPrecedencePredicate.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof PrecedencePredicate)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.precedence === other.precedence;\n\t}\n};\n\nPrecedencePredicate.prototype.toString = function() {\n\treturn \"{\"+this.precedence+\">=prec}?\";\n};\n\n\n\nPrecedencePredicate.filterPrecedencePredicates = function(set) {\n\tvar result = [];\n\tset.values().map( function(context) {\n\t\tif (context instanceof PrecedencePredicate) {\n\t\t\tresult.push(context);\n\t\t}\n\t});\n\treturn result;\n};\n\n\n// A semantic context which is true whenever none of the contained contexts\n// is false.\n//\nfunction AND(a, b) {\n\tSemanticContext.call(this);\n\tvar operands = new Set();\n\tif (a instanceof AND) {\n\t\ta.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(a);\n\t}\n\tif (b instanceof AND) {\n\t\tb.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(b);\n\t}\n\tvar precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);\n\tif (precedencePredicates.length > 0) {\n\t\t// interested in the transition with the lowest precedence\n\t\tvar reduced = null;\n\t\tprecedencePredicates.map( function(p) {\n\t\t\tif(reduced===null || p.precedence<reduced.precedence) {\n\t\t\t\treduced = p;\n\t\t\t}\n\t\t});\n\t\toperands.add(reduced);\n\t}\n\tthis.opnds = operands.values();\n\treturn this;\n}\n\nAND.prototype = Object.create(SemanticContext.prototype);\nAND.prototype.constructor = AND;\n\nAND.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof AND)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.opnds === other.opnds;\n\t}\n};\n\nAND.prototype.updateHashCode = function(hash) {\n hash.update(this.opnds, \"AND\");\n};\n//\n// {@inheritDoc}\n//\n// <p>\n// The evaluation of predicates by this context is short-circuiting, but\n// unordered.</p>\n//\nAND.prototype.evaluate = function(parser, outerContext) {\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tif (!this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\n\nAND.prototype.evalPrecedence = function(parser, outerContext) {\n\tvar differs = false;\n\tvar operands = [];\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tvar context = this.opnds[i];\n\t\tvar evaluated = context.evalPrecedence(parser, outerContext);\n\t\tdiffers |= (evaluated !== context);\n\t\tif (evaluated === null) {\n\t\t\t// The AND context is false if any element is false\n\t\t\treturn null;\n\t\t} else if (evaluated !== SemanticContext.NONE) {\n\t\t\t// Reduce the result by skipping true elements\n\t\t\toperands.push(evaluated);\n\t\t}\n\t}\n\tif (!differs) {\n\t\treturn this;\n\t}\n\tif (operands.length === 0) {\n\t\t// all elements were true, so the AND context is true\n\t\treturn SemanticContext.NONE;\n\t}\n\tvar result = null;\n\toperands.map(function(o) {\n\t\tresult = result === null ? o : SemanticContext.andContext(result, o);\n\t});\n\treturn result;\n};\n\nAND.prototype.toString = function() {\n\tvar s = \"\";\n\tthis.opnds.map(function(o) {\n\t\ts += \"&& \" + o.toString();\n\t});\n\treturn s.length > 3 ? s.slice(3) : s;\n};\n\n//\n// A semantic context which is true whenever at least one of the contained\n// contexts is true.\n//\nfunction OR(a, b) {\n\tSemanticContext.call(this);\n\tvar operands = new Set();\n\tif (a instanceof OR) {\n\t\ta.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(a);\n\t}\n\tif (b instanceof OR) {\n\t\tb.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(b);\n\t}\n\n\tvar precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);\n\tif (precedencePredicates.length > 0) {\n\t\t// interested in the transition with the highest precedence\n\t\tvar s = precedencePredicates.sort(function(a, b) {\n\t\t\treturn a.compareTo(b);\n\t\t});\n\t\tvar reduced = s[s.length-1];\n\t\toperands.add(reduced);\n\t}\n\tthis.opnds = operands.values();\n\treturn this;\n}\n\nOR.prototype = Object.create(SemanticContext.prototype);\nOR.prototype.constructor = OR;\n\nOR.prototype.constructor = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof OR)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.opnds === other.opnds;\n\t}\n};\n\nOR.prototype.updateHashCode = function(hash) {\n hash.update(this.opnds, \"OR\");\n};\n\n// <p>\n// The evaluation of predicates by this context is short-circuiting, but\n// unordered.</p>\n//\nOR.prototype.evaluate = function(parser, outerContext) {\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tif (this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nOR.prototype.evalPrecedence = function(parser, outerContext) {\n\tvar differs = false;\n\tvar operands = [];\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tvar context = this.opnds[i];\n\t\tvar evaluated = context.evalPrecedence(parser, outerContext);\n\t\tdiffers |= (evaluated !== context);\n\t\tif (evaluated === SemanticContext.NONE) {\n\t\t\t// The OR context is true if any element is true\n\t\t\treturn SemanticContext.NONE;\n\t\t} else if (evaluated !== null) {\n\t\t\t// Reduce the result by skipping false elements\n\t\t\toperands.push(evaluated);\n\t\t}\n\t}\n\tif (!differs) {\n\t\treturn this;\n\t}\n\tif (operands.length === 0) {\n\t\t// all elements were false, so the OR context is false\n\t\treturn null;\n\t}\n\tvar result = null;\n\toperands.map(function(o) {\n\t\treturn result === null ? o : SemanticContext.orContext(result, o);\n\t});\n\treturn result;\n};\n\nOR.prototype.toString = function() {\n\tvar s = \"\";\n\tthis.opnds.map(function(o) {\n\t\ts += \"|| \" + o.toString();\n\t});\n\treturn s.length > 3 ? s.slice(3) : s;\n};\n\nexports.SemanticContext = SemanticContext;\nexports.PrecedencePredicate = PrecedencePredicate;\nexports.Predicate = Predicate;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// An ATN transition between any two ATN states. Subclasses define\n// atom, set, epsilon, action, predicate, rule transitions.\n//\n// <p>This is a one way link. It emanates from a state (usually via a list of\n// transitions) and has a target state.</p>\n//\n// <p>Since we never have to change the ATN transitions once we construct it,\n// we can fix these transitions as specific classes. The DFA transitions\n// on the other hand need to update the labels as it adds transitions to\n// the states. We'll use the term Edge for the DFA to distinguish them from\n// ATN transitions.</p>\n\nvar Token = require('./../Token').Token;\nvar Interval = require('./../IntervalSet').Interval;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\nvar Predicate = require('./SemanticContext').Predicate;\nvar PrecedencePredicate = require('./SemanticContext').PrecedencePredicate;\n\nfunction Transition (target) {\n // The target of this transition.\n if (target===undefined || target===null) {\n throw \"target cannot be null.\";\n }\n this.target = target;\n // Are we epsilon, action, sempred?\n this.isEpsilon = false;\n this.label = null;\n return this;\n}\n // constants for serialization\nTransition.EPSILON = 1;\nTransition.RANGE = 2;\nTransition.RULE = 3;\nTransition.PREDICATE = 4; // e.g., {isType(input.LT(1))}?\nTransition.ATOM = 5;\nTransition.ACTION = 6;\nTransition.SET = 7; // ~(A|B) or ~atom, wildcard, which convert to next 2\nTransition.NOT_SET = 8;\nTransition.WILDCARD = 9;\nTransition.PRECEDENCE = 10;\n\nTransition.serializationNames = [\n \"INVALID\",\n \"EPSILON\",\n \"RANGE\",\n \"RULE\",\n \"PREDICATE\",\n \"ATOM\",\n \"ACTION\",\n \"SET\",\n \"NOT_SET\",\n \"WILDCARD\",\n \"PRECEDENCE\"\n ];\n\nTransition.serializationTypes = {\n EpsilonTransition: Transition.EPSILON,\n RangeTransition: Transition.RANGE,\n RuleTransition: Transition.RULE,\n PredicateTransition: Transition.PREDICATE,\n AtomTransition: Transition.ATOM,\n ActionTransition: Transition.ACTION,\n SetTransition: Transition.SET,\n NotSetTransition: Transition.NOT_SET,\n WildcardTransition: Transition.WILDCARD,\n PrecedencePredicateTransition: Transition.PRECEDENCE\n };\n\n\n// TODO: make all transitions sets? no, should remove set edges\nfunction AtomTransition(target, label) {\n\tTransition.call(this, target);\n\tthis.label_ = label; // The token type or character value; or, signifies special label.\n this.label = this.makeLabel();\n this.serializationType = Transition.ATOM;\n return this;\n}\n\nAtomTransition.prototype = Object.create(Transition.prototype);\nAtomTransition.prototype.constructor = AtomTransition;\n\nAtomTransition.prototype.makeLabel = function() {\n\tvar s = new IntervalSet();\n s.addOne(this.label_);\n return s;\n};\n\nAtomTransition.prototype.matches = function( symbol, minVocabSymbol, maxVocabSymbol) {\n return this.label_ === symbol;\n};\n\nAtomTransition.prototype.toString = function() {\n\treturn this.label_;\n};\n\nfunction RuleTransition(ruleStart, ruleIndex, precedence, followState) {\n\tTransition.call(this, ruleStart);\n this.ruleIndex = ruleIndex; // ptr to the rule definition object for this rule ref\n this.precedence = precedence;\n this.followState = followState; // what node to begin computations following ref to rule\n this.serializationType = Transition.RULE;\n this.isEpsilon = true;\n return this;\n}\n\nRuleTransition.prototype = Object.create(Transition.prototype);\nRuleTransition.prototype.constructor = RuleTransition;\n\nRuleTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\n\nfunction EpsilonTransition(target, outermostPrecedenceReturn) {\n\tTransition.call(this, target);\n this.serializationType = Transition.EPSILON;\n this.isEpsilon = true;\n this.outermostPrecedenceReturn = outermostPrecedenceReturn;\n return this;\n}\n\nEpsilonTransition.prototype = Object.create(Transition.prototype);\nEpsilonTransition.prototype.constructor = EpsilonTransition;\n\nEpsilonTransition.prototype.matches = function( symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nEpsilonTransition.prototype.toString = function() {\n\treturn \"epsilon\";\n};\n\nfunction RangeTransition(target, start, stop) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.RANGE;\n this.start = start;\n this.stop = stop;\n this.label = this.makeLabel();\n return this;\n}\n\nRangeTransition.prototype = Object.create(Transition.prototype);\nRangeTransition.prototype.constructor = RangeTransition;\n\nRangeTransition.prototype.makeLabel = function() {\n var s = new IntervalSet();\n s.addRange(this.start, this.stop);\n return s;\n};\n\nRangeTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= this.start && symbol <= this.stop;\n};\n\nRangeTransition.prototype.toString = function() {\n\treturn \"'\" + String.fromCharCode(this.start) + \"'..'\" + String.fromCharCode(this.stop) + \"'\";\n};\n\nfunction AbstractPredicateTransition(target) {\n\tTransition.call(this, target);\n\treturn this;\n}\n\nAbstractPredicateTransition.prototype = Object.create(Transition.prototype);\nAbstractPredicateTransition.prototype.constructor = AbstractPredicateTransition;\n\nfunction PredicateTransition(target, ruleIndex, predIndex, isCtxDependent) {\n\tAbstractPredicateTransition.call(this, target);\n this.serializationType = Transition.PREDICATE;\n this.ruleIndex = ruleIndex;\n this.predIndex = predIndex;\n this.isCtxDependent = isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n return this;\n}\n\nPredicateTransition.prototype = Object.create(AbstractPredicateTransition.prototype);\nPredicateTransition.prototype.constructor = PredicateTransition;\n\nPredicateTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nPredicateTransition.prototype.getPredicate = function() {\n\treturn new Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent);\n};\n\nPredicateTransition.prototype.toString = function() {\n\treturn \"pred_\" + this.ruleIndex + \":\" + this.predIndex;\n};\n\nfunction ActionTransition(target, ruleIndex, actionIndex, isCtxDependent) {\n\tTransition.call(this, target);\n this.serializationType = Transition.ACTION;\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex===undefined ? -1 : actionIndex;\n this.isCtxDependent = isCtxDependent===undefined ? false : isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n return this;\n}\n\nActionTransition.prototype = Object.create(Transition.prototype);\nActionTransition.prototype.constructor = ActionTransition;\n\n\nActionTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nActionTransition.prototype.toString = function() {\n\treturn \"action_\" + this.ruleIndex + \":\" + this.actionIndex;\n};\n\n\n// A transition containing a set of values.\nfunction SetTransition(target, set) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.SET;\n if (set !==undefined && set !==null) {\n this.label = set;\n } else {\n this.label = new IntervalSet();\n this.label.addOne(Token.INVALID_TYPE);\n }\n return this;\n}\n\nSetTransition.prototype = Object.create(Transition.prototype);\nSetTransition.prototype.constructor = SetTransition;\n\nSetTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn this.label.contains(symbol);\n};\n\n\nSetTransition.prototype.toString = function() {\n\treturn this.label.toString();\n};\n\nfunction NotSetTransition(target, set) {\n\tSetTransition.call(this, target, set);\n\tthis.serializationType = Transition.NOT_SET;\n\treturn this;\n}\n\nNotSetTransition.prototype = Object.create(SetTransition.prototype);\nNotSetTransition.prototype.constructor = NotSetTransition;\n\nNotSetTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= minVocabSymbol && symbol <= maxVocabSymbol &&\n\t\t\t!SetTransition.prototype.matches.call(this, symbol, minVocabSymbol, maxVocabSymbol);\n};\n\nNotSetTransition.prototype.toString = function() {\n\treturn '~' + SetTransition.prototype.toString.call(this);\n};\n\nfunction WildcardTransition(target) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.WILDCARD;\n\treturn this;\n}\n\nWildcardTransition.prototype = Object.create(Transition.prototype);\nWildcardTransition.prototype.constructor = WildcardTransition;\n\n\nWildcardTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= minVocabSymbol && symbol <= maxVocabSymbol;\n};\n\nWildcardTransition.prototype.toString = function() {\n\treturn \".\";\n};\n\nfunction PrecedencePredicateTransition(target, precedence) {\n\tAbstractPredicateTransition.call(this, target);\n this.serializationType = Transition.PRECEDENCE;\n this.precedence = precedence;\n this.isEpsilon = true;\n return this;\n}\n\nPrecedencePredicateTransition.prototype = Object.create(AbstractPredicateTransition.prototype);\nPrecedencePredicateTransition.prototype.constructor = PrecedencePredicateTransition;\n\nPrecedencePredicateTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nPrecedencePredicateTransition.prototype.getPredicate = function() {\n\treturn new PrecedencePredicate(this.precedence);\n};\n\nPrecedencePredicateTransition.prototype.toString = function() {\n\treturn this.precedence + \" >= _p\";\n};\n\nexports.Transition = Transition;\nexports.AtomTransition = AtomTransition;\nexports.SetTransition = SetTransition;\nexports.NotSetTransition = NotSetTransition;\nexports.RuleTransition = RuleTransition;\nexports.ActionTransition = ActionTransition;\nexports.EpsilonTransition = EpsilonTransition;\nexports.RangeTransition = RangeTransition;\nexports.WildcardTransition = WildcardTransition;\nexports.PredicateTransition = PredicateTransition;\nexports.PrecedencePredicateTransition = PrecedencePredicateTransition;\nexports.AbstractPredicateTransition = AbstractPredicateTransition;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.ATN = require('./ATN').ATN;\nexports.ATNDeserializer = require('./ATNDeserializer').ATNDeserializer;\nexports.LexerATNSimulator = require('./LexerATNSimulator').LexerATNSimulator;\nexports.ParserATNSimulator = require('./ParserATNSimulator').ParserATNSimulator;\nexports.PredictionMode = require('./PredictionMode').PredictionMode;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Set = require(\"../Utils\").Set;\nvar DFAState = require('./DFAState').DFAState;\nvar StarLoopEntryState = require('../atn/ATNState').StarLoopEntryState;\nvar ATNConfigSet = require('./../atn/ATNConfigSet').ATNConfigSet;\nvar DFASerializer = require('./DFASerializer').DFASerializer;\nvar LexerDFASerializer = require('./DFASerializer').LexerDFASerializer;\n\n\n\nfunction DFA(atnStartState, decision) {\n\tif (decision === undefined) {\n\t\tdecision = 0;\n\t}\n\t// From which ATN state did we create this DFA?\n\tthis.atnStartState = atnStartState;\n\tthis.decision = decision;\n\t// A set of all DFA states. Use {@link Map} so we can get old state back\n\t// ({@link Set} only allows you to see if it's there).\n\tthis._states = new Set();\n\tthis.s0 = null;\n\t// {@code true} if this DFA is for a precedence decision; otherwise,\n\t// {@code false}. This is the backing field for {@link //isPrecedenceDfa},\n\t// {@link //setPrecedenceDfa}.\n\tthis.precedenceDfa = false;\n if (atnStartState instanceof StarLoopEntryState)\n {\n if (atnStartState.isPrecedenceDecision) {\n this.precedenceDfa = true;\n var precedenceState = new DFAState(null, new ATNConfigSet());\n precedenceState.edges = [];\n precedenceState.isAcceptState = false;\n precedenceState.requiresFullContext = false;\n this.s0 = precedenceState;\n }\n }\n\treturn this;\n}\n\n// Get the start state for a specific precedence value.\n//\n// @param precedence The current precedence.\n// @return The start state corresponding to the specified precedence, or\n// {@code null} if no start state exists for the specified precedence.\n//\n// @throws IllegalStateException if this is not a precedence DFA.\n// @see //isPrecedenceDfa()\n\nDFA.prototype.getPrecedenceStartState = function(precedence) {\n\tif (!(this.precedenceDfa)) {\n\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t}\n\t// s0.edges is never null for a precedence DFA\n\tif (precedence < 0 || precedence >= this.s0.edges.length) {\n\t\treturn null;\n\t}\n\treturn this.s0.edges[precedence] || null;\n};\n\n// Set the start state for a specific precedence value.\n//\n// @param precedence The current precedence.\n// @param startState The start state corresponding to the specified\n// precedence.\n//\n// @throws IllegalStateException if this is not a precedence DFA.\n// @see //isPrecedenceDfa()\n//\nDFA.prototype.setPrecedenceStartState = function(precedence, startState) {\n\tif (!(this.precedenceDfa)) {\n\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t}\n\tif (precedence < 0) {\n\t\treturn;\n\t}\n\n\t// synchronization on s0 here is ok. when the DFA is turned into a\n\t// precedence DFA, s0 will be initialized once and not updated again\n\t// s0.edges is never null for a precedence DFA\n\tthis.s0.edges[precedence] = startState;\n};\n\n//\n// Sets whether this is a precedence DFA. If the specified value differs\n// from the current DFA configuration, the following actions are taken;\n// otherwise no changes are made to the current DFA.\n//\n// <ul>\n// <li>The {@link //states} map is cleared</li>\n// <li>If {@code precedenceDfa} is {@code false}, the initial state\n// {@link //s0} is set to {@code null}; otherwise, it is initialized to a new\n// {@link DFAState} with an empty outgoing {@link DFAState//edges} array to\n// store the start states for individual precedence values.</li>\n// <li>The {@link //precedenceDfa} field is updated</li>\n// </ul>\n//\n// @param precedenceDfa {@code true} if this is a precedence DFA; otherwise,\n// {@code false}\n\nDFA.prototype.setPrecedenceDfa = function(precedenceDfa) {\n\tif (this.precedenceDfa!==precedenceDfa) {\n\t\tthis._states = new DFAStatesSet();\n\t\tif (precedenceDfa) {\n\t\t\tvar precedenceState = new DFAState(null, new ATNConfigSet());\n\t\t\tprecedenceState.edges = [];\n\t\t\tprecedenceState.isAcceptState = false;\n\t\t\tprecedenceState.requiresFullContext = false;\n\t\t\tthis.s0 = precedenceState;\n\t\t} else {\n\t\t\tthis.s0 = null;\n\t\t}\n\t\tthis.precedenceDfa = precedenceDfa;\n\t}\n};\n\nObject.defineProperty(DFA.prototype, \"states\", {\n\tget : function() {\n\t\treturn this._states;\n\t}\n});\n\n// Return a list of all states in this DFA, ordered by state number.\nDFA.prototype.sortedStates = function() {\n\tvar list = this._states.values();\n\treturn list.sort(function(a, b) {\n\t\treturn a.stateNumber - b.stateNumber;\n\t});\n};\n\nDFA.prototype.toString = function(literalNames, symbolicNames) {\n\tliteralNames = literalNames || null;\n\tsymbolicNames = symbolicNames || null;\n\tif (this.s0 === null) {\n\t\treturn \"\";\n\t}\n\tvar serializer = new DFASerializer(this, literalNames, symbolicNames);\n\treturn serializer.toString();\n};\n\nDFA.prototype.toLexerString = function() {\n\tif (this.s0 === null) {\n\t\treturn \"\";\n\t}\n\tvar serializer = new LexerDFASerializer(this);\n\treturn serializer.toString();\n};\n\nexports.DFA = DFA;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// A DFA walker that knows how to dump them to serialized strings.#/\n\n\nfunction DFASerializer(dfa, literalNames, symbolicNames) {\n\tthis.dfa = dfa;\n\tthis.literalNames = literalNames || [];\n\tthis.symbolicNames = symbolicNames || [];\n\treturn this;\n}\n\nDFASerializer.prototype.toString = function() {\n if(this.dfa.s0 === null) {\n return null;\n }\n var buf = \"\";\n var states = this.dfa.sortedStates();\n for(var i=0;i<states.length;i++) {\n var s = states[i];\n if(s.edges!==null) {\n var n = s.edges.length;\n for(var j=0;j<n;j++) {\n var t = s.edges[j] || null;\n if(t!==null && t.stateNumber !== 0x7FFFFFFF) {\n buf = buf.concat(this.getStateString(s));\n buf = buf.concat(\"-\");\n buf = buf.concat(this.getEdgeLabel(j));\n buf = buf.concat(\"->\");\n buf = buf.concat(this.getStateString(t));\n buf = buf.concat('\\n');\n }\n }\n }\n }\n return buf.length===0 ? null : buf;\n};\n\nDFASerializer.prototype.getEdgeLabel = function(i) {\n if (i===0) {\n return \"EOF\";\n } else if(this.literalNames !==null || this.symbolicNames!==null) {\n return this.literalNames[i-1] || this.symbolicNames[i-1];\n } else {\n return String.fromCharCode(i-1);\n }\n};\n\nDFASerializer.prototype.getStateString = function(s) {\n var baseStateStr = ( s.isAcceptState ? \":\" : \"\") + \"s\" + s.stateNumber + ( s.requiresFullContext ? \"^\" : \"\");\n if(s.isAcceptState) {\n if (s.predicates !== null) {\n return baseStateStr + \"=>\" + s.predicates.toString();\n } else {\n return baseStateStr + \"=>\" + s.prediction.toString();\n }\n } else {\n return baseStateStr;\n }\n};\n\nfunction LexerDFASerializer(dfa) {\n\tDFASerializer.call(this, dfa, null);\n\treturn this;\n}\n\nLexerDFASerializer.prototype = Object.create(DFASerializer.prototype);\nLexerDFASerializer.prototype.constructor = LexerDFASerializer;\n\nLexerDFASerializer.prototype.getEdgeLabel = function(i) {\n\treturn \"'\" + String.fromCharCode(i) + \"'\";\n};\n\nexports.DFASerializer = DFASerializer;\nexports.LexerDFASerializer = LexerDFASerializer;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar ATNConfigSet = require('./../atn/ATNConfigSet').ATNConfigSet;\nvar Utils = require('./../Utils');\nvar Hash = Utils.Hash;\nvar Set = Utils.Set;\n\n// Map a predicate to a predicted alternative.///\n\nfunction PredPrediction(pred, alt) {\n\tthis.alt = alt;\n\tthis.pred = pred;\n\treturn this;\n}\n\nPredPrediction.prototype.toString = function() {\n\treturn \"(\" + this.pred + \", \" + this.alt + \")\";\n};\n\n// A DFA state represents a set of possible ATN configurations.\n// As Aho, Sethi, Ullman p. 117 says \"The DFA uses its state\n// to keep track of all possible states the ATN can be in after\n// reading each input symbol. That is to say, after reading\n// input a1a2..an, the DFA is in a state that represents the\n// subset T of the states of the ATN that are reachable from the\n// ATN's start state along some path labeled a1a2..an.\"\n// In conventional NFA→DFA conversion, therefore, the subset T\n// would be a bitset representing the set of states the\n// ATN could be in. We need to track the alt predicted by each\n// state as well, however. More importantly, we need to maintain\n// a stack of states, tracking the closure operations as they\n// jump from rule to rule, emulating rule invocations (method calls).\n// I have to add a stack to simulate the proper lookahead sequences for\n// the underlying LL grammar from which the ATN was derived.\n//\n// <p>I use a set of ATNConfig objects not simple states. An ATNConfig\n// is both a state (ala normal conversion) and a RuleContext describing\n// the chain of rules (if any) followed to arrive at that state.</p>\n//\n// <p>A DFA state may have multiple references to a particular state,\n// but with different ATN contexts (with same or different alts)\n// meaning that state was reached via a different set of rule invocations.</p>\n// /\n\nfunction DFAState(stateNumber, configs) {\n\tif (stateNumber === null) {\n\t\tstateNumber = -1;\n\t}\n\tif (configs === null) {\n\t\tconfigs = new ATNConfigSet();\n\t}\n\tthis.stateNumber = stateNumber;\n\tthis.configs = configs;\n\t// {@code edges[symbol]} points to target of symbol. Shift up by 1 so (-1)\n\t// {@link Token//EOF} maps to {@code edges[0]}.\n\tthis.edges = null;\n\tthis.isAcceptState = false;\n\t// if accept state, what ttype do we match or alt do we predict?\n\t// This is set to {@link ATN//INVALID_ALT_NUMBER} when {@link\n\t// //predicates}{@code !=null} or\n\t// {@link //requiresFullContext}.\n\tthis.prediction = 0;\n\tthis.lexerActionExecutor = null;\n\t// Indicates that this state was created during SLL prediction that\n\t// discovered a conflict between the configurations in the state. Future\n\t// {@link ParserATNSimulator//execATN} invocations immediately jumped doing\n\t// full context prediction if this field is true.\n\tthis.requiresFullContext = false;\n\t// During SLL parsing, this is a list of predicates associated with the\n\t// ATN configurations of the DFA state. When we have predicates,\n\t// {@link //requiresFullContext} is {@code false} since full context\n\t// prediction evaluates predicates\n\t// on-the-fly. If this is not null, then {@link //prediction} is\n\t// {@link ATN//INVALID_ALT_NUMBER}.\n\t//\n\t// <p>We only use these for non-{@link //requiresFullContext} but\n\t// conflicting states. That\n\t// means we know from the context (it's $ or we don't dip into outer\n\t// context) that it's an ambiguity not a conflict.</p>\n\t//\n\t// <p>This list is computed by {@link\n\t// ParserATNSimulator//predicateDFAState}.</p>\n\tthis.predicates = null;\n\treturn this;\n}\n\n// Get the set of all alts mentioned by all ATN configurations in this\n// DFA state.\nDFAState.prototype.getAltSet = function() {\n\tvar alts = new Set();\n\tif (this.configs !== null) {\n\t\tfor (var i = 0; i < this.configs.length; i++) {\n\t\t\tvar c = this.configs[i];\n\t\t\talts.add(c.alt);\n\t\t}\n\t}\n\tif (alts.length === 0) {\n\t\treturn null;\n\t} else {\n\t\treturn alts;\n\t}\n};\n\n// Two {@link DFAState} instances are equal if their ATN configuration sets\n// are the same. This method is used to see if a state already exists.\n//\n// <p>Because the number of alternatives and number of ATN configurations are\n// finite, there is a finite number of DFA states that can be processed.\n// This is necessary to show that the algorithm terminates.</p>\n//\n// <p>Cannot test the DFA state numbers here because in\n// {@link ParserATNSimulator//addDFAState} we need to know if any other state\n// exists that has this exact set of ATN configurations. The\n// {@link //stateNumber} is irrelevant.</p>\nDFAState.prototype.equals = function(other) {\n\t// compare set of ATN configurations in this set with other\n\treturn this === other ||\n\t\t\t(other instanceof DFAState &&\n\t\t\t\tthis.configs.equals(other.configs));\n};\n\nDFAState.prototype.toString = function() {\n\tvar s = \"\" + this.stateNumber + \":\" + this.configs;\n\tif(this.isAcceptState) {\n s = s + \"=>\";\n if (this.predicates !== null)\n s = s + this.predicates;\n else\n s = s + this.prediction;\n }\n\treturn s;\n};\n\nDFAState.prototype.hashCode = function() {\n\tvar hash = new Hash();\n\thash.update(this.configs);\n\tif(this.isAcceptState) {\n if (this.predicates !== null)\n hash.update(this.predicates);\n else\n hash.update(this.prediction);\n }\n return hash.finish();\n};\n\nexports.DFAState = DFAState;\nexports.PredPrediction = PredPrediction;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.DFA = require('./DFA').DFA;\nexports.DFASerializer = require('./DFASerializer').DFASerializer;\nexports.LexerDFASerializer = require('./DFASerializer').LexerDFASerializer;\nexports.PredPrediction = require('./DFAState').PredPrediction;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This implementation of {@link ANTLRErrorListener} can be used to identify\n// certain potential correctness and performance problems in grammars. \"Reports\"\n// are made by calling {@link Parser//notifyErrorListeners} with the appropriate\n// message.\n//\n// <ul>\n// <li><b>Ambiguities</b>: These are cases where more than one path through the\n// grammar can match the input.</li>\n// <li><b>Weak context sensitivity</b>: These are cases where full-context\n// prediction resolved an SLL conflict to a unique alternative which equaled the\n// minimum alternative of the SLL conflict.</li>\n// <li><b>Strong (forced) context sensitivity</b>: These are cases where the\n// full-context prediction resolved an SLL conflict to a unique alternative,\n// <em>and</em> the minimum alternative of the SLL conflict was found to not be\n// a truly viable alternative. Two-stage parsing cannot be used for inputs where\n// this situation occurs.</li>\n// </ul>\n\nvar BitSet = require('./../Utils').BitSet;\nvar ErrorListener = require('./ErrorListener').ErrorListener;\nvar Interval = require('./../IntervalSet').Interval;\n\nfunction DiagnosticErrorListener(exactOnly) {\n\tErrorListener.call(this);\n\texactOnly = exactOnly || true;\n\t// whether all ambiguities or only exact ambiguities are reported.\n\tthis.exactOnly = exactOnly;\n\treturn this;\n}\n\nDiagnosticErrorListener.prototype = Object.create(ErrorListener.prototype);\nDiagnosticErrorListener.prototype.constructor = DiagnosticErrorListener;\n\nDiagnosticErrorListener.prototype.reportAmbiguity = function(recognizer, dfa,\n\t\tstartIndex, stopIndex, exact, ambigAlts, configs) {\n\tif (this.exactOnly && !exact) {\n\t\treturn;\n\t}\n\tvar msg = \"reportAmbiguity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\": ambigAlts=\" +\n\t\t\tthis.getConflictingAlts(ambigAlts, configs) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.reportAttemptingFullContext = function(\n\t\trecognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n\tvar msg = \"reportAttemptingFullContext d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.reportContextSensitivity = function(\n\t\trecognizer, dfa, startIndex, stopIndex, prediction, configs) {\n\tvar msg = \"reportContextSensitivity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.getDecisionDescription = function(recognizer, dfa) {\n\tvar decision = dfa.decision;\n\tvar ruleIndex = dfa.atnStartState.ruleIndex;\n\n\tvar ruleNames = recognizer.ruleNames;\n\tif (ruleIndex < 0 || ruleIndex >= ruleNames.length) {\n\t\treturn \"\" + decision;\n\t}\n\tvar ruleName = ruleNames[ruleIndex] || null;\n\tif (ruleName === null || ruleName.length === 0) {\n\t\treturn \"\" + decision;\n\t}\n\treturn \"\" + decision + \" (\" + ruleName + \")\";\n};\n\n//\n// Computes the set of conflicting or ambiguous alternatives from a\n// configuration set, if that information was not already provided by the\n// parser.\n//\n// @param reportedAlts The set of conflicting or ambiguous alternatives, as\n// reported by the parser.\n// @param configs The conflicting or ambiguous configuration set.\n// @return Returns {@code reportedAlts} if it is not {@code null}, otherwise\n// returns the set of alternatives represented in {@code configs}.\n//\nDiagnosticErrorListener.prototype.getConflictingAlts = function(reportedAlts, configs) {\n\tif (reportedAlts !== null) {\n\t\treturn reportedAlts;\n\t}\n\tvar result = new BitSet();\n\tfor (var i = 0; i < configs.items.length; i++) {\n\t\tresult.add(configs.items[i].alt);\n\t}\n\treturn \"{\" + result.values().join(\", \") + \"}\";\n};\n\nexports.DiagnosticErrorListener = DiagnosticErrorListener;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// Provides an empty default implementation of {@link ANTLRErrorListener}. The\n// default implementation of each method does nothing, but can be overridden as\n// necessary.\n\nfunction ErrorListener() {\n\treturn this;\n}\n\nErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n};\n\nErrorListener.prototype.reportAmbiguity = function(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n};\n\nErrorListener.prototype.reportAttemptingFullContext = function(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n};\n\nErrorListener.prototype.reportContextSensitivity = function(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n};\n\nfunction ConsoleErrorListener() {\n\tErrorListener.call(this);\n\treturn this;\n}\n\nConsoleErrorListener.prototype = Object.create(ErrorListener.prototype);\nConsoleErrorListener.prototype.constructor = ConsoleErrorListener;\n\n//\n// Provides a default instance of {@link ConsoleErrorListener}.\n//\nConsoleErrorListener.INSTANCE = new ConsoleErrorListener();\n\n//\n// {@inheritDoc}\n//\n// <p>\n// This implementation prints messages to {@link System//err} containing the\n// values of {@code line}, {@code charPositionInLine}, and {@code msg} using\n// the following format.</p>\n//\n// <pre>\n// line <em>line</em>:<em>charPositionInLine</em> <em>msg</em>\n// </pre>\n//\nConsoleErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n console.error(\"line \" + line + \":\" + column + \" \" + msg);\n};\n\nfunction ProxyErrorListener(delegates) {\n\tErrorListener.call(this);\n if (delegates===null) {\n throw \"delegates\";\n }\n this.delegates = delegates;\n\treturn this;\n}\n\nProxyErrorListener.prototype = Object.create(ErrorListener.prototype);\nProxyErrorListener.prototype.constructor = ProxyErrorListener;\n\nProxyErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n this.delegates.map(function(d) { d.syntaxError(recognizer, offendingSymbol, line, column, msg, e); });\n};\n\nProxyErrorListener.prototype.reportAmbiguity = function(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n this.delegates.map(function(d) { d.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); });\n};\n\nProxyErrorListener.prototype.reportAttemptingFullContext = function(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n\tthis.delegates.map(function(d) { d.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs); });\n};\n\nProxyErrorListener.prototype.reportContextSensitivity = function(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n\tthis.delegates.map(function(d) { d.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs); });\n};\n\nexports.ErrorListener = ErrorListener;\nexports.ConsoleErrorListener = ConsoleErrorListener;\nexports.ProxyErrorListener = ProxyErrorListener;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./../Token').Token;\nvar Errors = require('./Errors');\nvar NoViableAltException = Errors.NoViableAltException;\nvar InputMismatchException = Errors.InputMismatchException;\nvar FailedPredicateException = Errors.FailedPredicateException;\nvar ParseCancellationException = Errors.ParseCancellationException;\nvar ATNState = require('./../atn/ATNState').ATNState;\nvar Interval = require('./../IntervalSet').Interval;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\n\nfunction ErrorStrategy() {\n\n}\n\nErrorStrategy.prototype.reset = function(recognizer){\n};\n\nErrorStrategy.prototype.recoverInline = function(recognizer){\n};\n\nErrorStrategy.prototype.recover = function(recognizer, e){\n};\n\nErrorStrategy.prototype.sync = function(recognizer){\n};\n\nErrorStrategy.prototype.inErrorRecoveryMode = function(recognizer){\n};\n\nErrorStrategy.prototype.reportError = function(recognizer){\n};\n\n\n\n// This is the default implementation of {@link ANTLRErrorStrategy} used for\n// error reporting and recovery in ANTLR parsers.\n//\nfunction DefaultErrorStrategy() {\n\tErrorStrategy.call(this);\n // Indicates whether the error strategy is currently \"recovering from an\n // error\". This is used to suppress reporting multiple error messages while\n // attempting to recover from a detected syntax error.\n //\n // @see //inErrorRecoveryMode\n //\n this.errorRecoveryMode = false;\n\n // The index into the input stream where the last error occurred.\n // This is used to prevent infinite loops where an error is found\n // but no token is consumed during recovery...another error is found,\n // ad nauseum. This is a failsafe mechanism to guarantee that at least\n // one token/tree node is consumed for two errors.\n //\n this.lastErrorIndex = -1;\n this.lastErrorStates = null;\n return this;\n}\n\nDefaultErrorStrategy.prototype = Object.create(ErrorStrategy.prototype);\nDefaultErrorStrategy.prototype.constructor = DefaultErrorStrategy;\n\n// <p>The default implementation simply calls {@link //endErrorCondition} to\n// ensure that the handler is not in error recovery mode.</p>\nDefaultErrorStrategy.prototype.reset = function(recognizer) {\n this.endErrorCondition(recognizer);\n};\n\n//\n// This method is called to enter error recovery mode when a recognition\n// exception is reported.\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.beginErrorCondition = function(recognizer) {\n this.errorRecoveryMode = true;\n};\n\nDefaultErrorStrategy.prototype.inErrorRecoveryMode = function(recognizer) {\n return this.errorRecoveryMode;\n};\n\n//\n// This method is called to leave error recovery mode after recovering from\n// a recognition exception.\n//\n// @param recognizer\n//\nDefaultErrorStrategy.prototype.endErrorCondition = function(recognizer) {\n this.errorRecoveryMode = false;\n this.lastErrorStates = null;\n this.lastErrorIndex = -1;\n};\n\n//\n// {@inheritDoc}\n//\n// <p>The default implementation simply calls {@link //endErrorCondition}.</p>\n//\nDefaultErrorStrategy.prototype.reportMatch = function(recognizer) {\n this.endErrorCondition(recognizer);\n};\n\n//\n// {@inheritDoc}\n//\n// <p>The default implementation returns immediately if the handler is already\n// in error recovery mode. Otherwise, it calls {@link //beginErrorCondition}\n// and dispatches the reporting task based on the runtime type of {@code e}\n// according to the following table.</p>\n//\n// <ul>\n// <li>{@link NoViableAltException}: Dispatches the call to\n// {@link //reportNoViableAlternative}</li>\n// <li>{@link InputMismatchException}: Dispatches the call to\n// {@link //reportInputMismatch}</li>\n// <li>{@link FailedPredicateException}: Dispatches the call to\n// {@link //reportFailedPredicate}</li>\n// <li>All other types: calls {@link Parser//notifyErrorListeners} to report\n// the exception</li>\n// </ul>\n//\nDefaultErrorStrategy.prototype.reportError = function(recognizer, e) {\n // if we've already reported an error and have not matched a token\n // yet successfully, don't report any errors.\n if(this.inErrorRecoveryMode(recognizer)) {\n return; // don't report spurious errors\n }\n this.beginErrorCondition(recognizer);\n if ( e instanceof NoViableAltException ) {\n this.reportNoViableAlternative(recognizer, e);\n } else if ( e instanceof InputMismatchException ) {\n this.reportInputMismatch(recognizer, e);\n } else if ( e instanceof FailedPredicateException ) {\n this.reportFailedPredicate(recognizer, e);\n } else {\n console.log(\"unknown recognition error type: \" + e.constructor.name);\n console.log(e.stack);\n recognizer.notifyErrorListeners(e.getOffendingToken(), e.getMessage(), e);\n }\n};\n//\n// {@inheritDoc}\n//\n// <p>The default implementation resynchronizes the parser by consuming tokens\n// until we find one in the resynchronization set--loosely the set of tokens\n// that can follow the current rule.</p>\n//\nDefaultErrorStrategy.prototype.recover = function(recognizer, e) {\n if (this.lastErrorIndex===recognizer.getInputStream().index &&\n this.lastErrorStates !== null && this.lastErrorStates.indexOf(recognizer.state)>=0) {\n\t\t// uh oh, another error at same token index and previously-visited\n\t\t// state in ATN; must be a case where LT(1) is in the recovery\n\t\t// token set so nothing got consumed. Consume a single token\n\t\t// at least to prevent an infinite loop; this is a failsafe.\n\t\trecognizer.consume();\n }\n this.lastErrorIndex = recognizer._input.index;\n if (this.lastErrorStates === null) {\n this.lastErrorStates = [];\n }\n this.lastErrorStates.push(recognizer.state);\n var followSet = this.getErrorRecoverySet(recognizer);\n this.consumeUntil(recognizer, followSet);\n};\n\n// The default implementation of {@link ANTLRErrorStrategy//sync} makes sure\n// that the current lookahead symbol is consistent with what were expecting\n// at this point in the ATN. You can call this anytime but ANTLR only\n// generates code to check before subrules/loops and each iteration.\n//\n// <p>Implements Jim Idle's magic sync mechanism in closures and optional\n// subrules. E.g.,</p>\n//\n// <pre>\n// a : sync ( stuff sync )* ;\n// sync : {consume to what can follow sync} ;\n// </pre>\n//\n// At the start of a sub rule upon error, {@link //sync} performs single\n// token deletion, if possible. If it can't do that, it bails on the current\n// rule and uses the default error recovery, which consumes until the\n// resynchronization set of the current rule.\n//\n// <p>If the sub rule is optional ({@code (...)?}, {@code (...)*}, or block\n// with an empty alternative), then the expected set includes what follows\n// the subrule.</p>\n//\n// <p>During loop iteration, it consumes until it sees a token that can start a\n// sub rule or what follows loop. Yes, that is pretty aggressive. We opt to\n// stay in the loop as long as possible.</p>\n//\n// <p><strong>ORIGINS</strong></p>\n//\n// <p>Previous versions of ANTLR did a poor job of their recovery within loops.\n// A single mismatch token or missing token would force the parser to bail\n// out of the entire rules surrounding the loop. So, for rule</p>\n//\n// <pre>\n// classDef : 'class' ID '{' member* '}'\n// </pre>\n//\n// input with an extra token between members would force the parser to\n// consume until it found the next class definition rather than the next\n// member definition of the current class.\n//\n// <p>This functionality cost a little bit of effort because the parser has to\n// compare token set at the start of the loop and at each iteration. If for\n// some reason speed is suffering for you, you can turn off this\n// functionality by simply overriding this method as a blank { }.</p>\n//\nDefaultErrorStrategy.prototype.sync = function(recognizer) {\n // If already recovering, don't try to sync\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n var s = recognizer._interp.atn.states[recognizer.state];\n var la = recognizer.getTokenStream().LA(1);\n // try cheaper subset first; might get lucky. seems to shave a wee bit off\n var nextTokens = recognizer.atn.nextTokens(s);\n if (nextTokens.contains(Token.EPSILON) || nextTokens.contains(la)) {\n return;\n }\n switch (s.stateType) {\n case ATNState.BLOCK_START:\n case ATNState.STAR_BLOCK_START:\n case ATNState.PLUS_BLOCK_START:\n case ATNState.STAR_LOOP_ENTRY:\n // report error and recover if possible\n if( this.singleTokenDeletion(recognizer) !== null) {\n return;\n } else {\n throw new InputMismatchException(recognizer);\n }\n break;\n case ATNState.PLUS_LOOP_BACK:\n case ATNState.STAR_LOOP_BACK:\n this.reportUnwantedToken(recognizer);\n var expecting = new IntervalSet();\n expecting.addSet(recognizer.getExpectedTokens());\n var whatFollowsLoopIterationOrRule = expecting.addSet(this.getErrorRecoverySet(recognizer));\n this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule);\n break;\n default:\n // do nothing if we can't identify the exact kind of ATN state\n }\n};\n\n// This is called by {@link //reportError} when the exception is a\n// {@link NoViableAltException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportNoViableAlternative = function(recognizer, e) {\n var tokens = recognizer.getTokenStream();\n var input;\n if(tokens !== null) {\n if (e.startToken.type===Token.EOF) {\n input = \"<EOF>\";\n } else {\n input = tokens.getText(new Interval(e.startToken.tokenIndex, e.offendingToken.tokenIndex));\n }\n } else {\n input = \"<unknown input>\";\n }\n var msg = \"no viable alternative at input \" + this.escapeWSAndQuote(input);\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n//\n// This is called by {@link //reportError} when the exception is an\n// {@link InputMismatchException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportInputMismatch = function(recognizer, e) {\n var msg = \"mismatched input \" + this.getTokenErrorDisplay(e.offendingToken) +\n \" expecting \" + e.getExpectedTokens().toString(recognizer.literalNames, recognizer.symbolicNames);\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n//\n// This is called by {@link //reportError} when the exception is a\n// {@link FailedPredicateException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportFailedPredicate = function(recognizer, e) {\n var ruleName = recognizer.ruleNames[recognizer._ctx.ruleIndex];\n var msg = \"rule \" + ruleName + \" \" + e.message;\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n// This method is called to report a syntax error which requires the removal\n// of a token from the input stream. At the time this method is called, the\n// erroneous symbol is current {@code LT(1)} symbol and has not yet been\n// removed from the input stream. When this method returns,\n// {@code recognizer} is in error recovery mode.\n//\n// <p>This method is called when {@link //singleTokenDeletion} identifies\n// single-token deletion as a viable recovery strategy for a mismatched\n// input error.</p>\n//\n// <p>The default implementation simply returns if the handler is already in\n// error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n// enter error recovery mode, followed by calling\n// {@link Parser//notifyErrorListeners}.</p>\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.reportUnwantedToken = function(recognizer) {\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n var t = recognizer.getCurrentToken();\n var tokenName = this.getTokenErrorDisplay(t);\n var expecting = this.getExpectedTokens(recognizer);\n var msg = \"extraneous input \" + tokenName + \" expecting \" +\n expecting.toString(recognizer.literalNames, recognizer.symbolicNames);\n recognizer.notifyErrorListeners(msg, t, null);\n};\n// This method is called to report a syntax error which requires the\n// insertion of a missing token into the input stream. At the time this\n// method is called, the missing token has not yet been inserted. When this\n// method returns, {@code recognizer} is in error recovery mode.\n//\n// <p>This method is called when {@link //singleTokenInsertion} identifies\n// single-token insertion as a viable recovery strategy for a mismatched\n// input error.</p>\n//\n// <p>The default implementation simply returns if the handler is already in\n// error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n// enter error recovery mode, followed by calling\n// {@link Parser//notifyErrorListeners}.</p>\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.reportMissingToken = function(recognizer) {\n if ( this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n var t = recognizer.getCurrentToken();\n var expecting = this.getExpectedTokens(recognizer);\n var msg = \"missing \" + expecting.toString(recognizer.literalNames, recognizer.symbolicNames) +\n \" at \" + this.getTokenErrorDisplay(t);\n recognizer.notifyErrorListeners(msg, t, null);\n};\n\n// <p>The default implementation attempts to recover from the mismatched input\n// by using single token insertion and deletion as described below. If the\n// recovery attempt fails, this method throws an\n// {@link InputMismatchException}.</p>\n//\n// <p><strong>EXTRA TOKEN</strong> (single token deletion)</p>\n//\n// <p>{@code LA(1)} is not what we are looking for. If {@code LA(2)} has the\n// right token, however, then assume {@code LA(1)} is some extra spurious\n// token and delete it. Then consume and return the next token (which was\n// the {@code LA(2)} token) as the successful result of the match operation.</p>\n//\n// <p>This recovery strategy is implemented by {@link\n// //singleTokenDeletion}.</p>\n//\n// <p><strong>MISSING TOKEN</strong> (single token insertion)</p>\n//\n// <p>If current token (at {@code LA(1)}) is consistent with what could come\n// after the expected {@code LA(1)} token, then assume the token is missing\n// and use the parser's {@link TokenFactory} to create it on the fly. The\n// \"insertion\" is performed by returning the created token as the successful\n// result of the match operation.</p>\n//\n// <p>This recovery strategy is implemented by {@link\n// //singleTokenInsertion}.</p>\n//\n// <p><strong>EXAMPLE</strong></p>\n//\n// <p>For example, Input {@code i=(3;} is clearly missing the {@code ')'}. When\n// the parser returns from the nested call to {@code expr}, it will have\n// call chain:</p>\n//\n// <pre>\n// stat → expr → atom\n// </pre>\n//\n// and it will be trying to match the {@code ')'} at this point in the\n// derivation:\n//\n// <pre>\n// => ID '=' '(' INT ')' ('+' atom)* ';'\n// ^\n// </pre>\n//\n// The attempt to match {@code ')'} will fail when it sees {@code ';'} and\n// call {@link //recoverInline}. To recover, it sees that {@code LA(1)==';'}\n// is in the set of tokens that can follow the {@code ')'} token reference\n// in rule {@code atom}. It can assume that you forgot the {@code ')'}.\n//\nDefaultErrorStrategy.prototype.recoverInline = function(recognizer) {\n // SINGLE TOKEN DELETION\n var matchedSymbol = this.singleTokenDeletion(recognizer);\n if (matchedSymbol !== null) {\n // we have deleted the extra token.\n // now, move past ttype token as if all were ok\n recognizer.consume();\n return matchedSymbol;\n }\n // SINGLE TOKEN INSERTION\n if (this.singleTokenInsertion(recognizer)) {\n return this.getMissingSymbol(recognizer);\n }\n // even that didn't work; must throw the exception\n throw new InputMismatchException(recognizer);\n};\n\n//\n// This method implements the single-token insertion inline error recovery\n// strategy. It is called by {@link //recoverInline} if the single-token\n// deletion strategy fails to recover from the mismatched input. If this\n// method returns {@code true}, {@code recognizer} will be in error recovery\n// mode.\n//\n// <p>This method determines whether or not single-token insertion is viable by\n// checking if the {@code LA(1)} input symbol could be successfully matched\n// if it were instead the {@code LA(2)} symbol. If this method returns\n// {@code true}, the caller is responsible for creating and inserting a\n// token with the correct type to produce this behavior.</p>\n//\n// @param recognizer the parser instance\n// @return {@code true} if single-token insertion is a viable recovery\n// strategy for the current mismatched input, otherwise {@code false}\n//\nDefaultErrorStrategy.prototype.singleTokenInsertion = function(recognizer) {\n var currentSymbolType = recognizer.getTokenStream().LA(1);\n // if current token is consistent with what could come after current\n // ATN state, then we know we're missing a token; error recovery\n // is free to conjure up and insert the missing token\n var atn = recognizer._interp.atn;\n var currentState = atn.states[recognizer.state];\n var next = currentState.transitions[0].target;\n var expectingAtLL2 = atn.nextTokens(next, recognizer._ctx);\n if (expectingAtLL2.contains(currentSymbolType) ){\n this.reportMissingToken(recognizer);\n return true;\n } else {\n return false;\n }\n};\n\n// This method implements the single-token deletion inline error recovery\n// strategy. It is called by {@link //recoverInline} to attempt to recover\n// from mismatched input. If this method returns null, the parser and error\n// handler state will not have changed. If this method returns non-null,\n// {@code recognizer} will <em>not</em> be in error recovery mode since the\n// returned token was a successful match.\n//\n// <p>If the single-token deletion is successful, this method calls\n// {@link //reportUnwantedToken} to report the error, followed by\n// {@link Parser//consume} to actually \"delete\" the extraneous token. Then,\n// before returning {@link //reportMatch} is called to signal a successful\n// match.</p>\n//\n// @param recognizer the parser instance\n// @return the successfully matched {@link Token} instance if single-token\n// deletion successfully recovers from the mismatched input, otherwise\n// {@code null}\n//\nDefaultErrorStrategy.prototype.singleTokenDeletion = function(recognizer) {\n var nextTokenType = recognizer.getTokenStream().LA(2);\n var expecting = this.getExpectedTokens(recognizer);\n if (expecting.contains(nextTokenType)) {\n this.reportUnwantedToken(recognizer);\n // print(\"recoverFromMismatchedToken deleting \" \\\n // + str(recognizer.getTokenStream().LT(1)) \\\n // + \" since \" + str(recognizer.getTokenStream().LT(2)) \\\n // + \" is what we want\", file=sys.stderr)\n recognizer.consume(); // simply delete extra token\n // we want to return the token we're actually matching\n var matchedSymbol = recognizer.getCurrentToken();\n this.reportMatch(recognizer); // we know current token is correct\n return matchedSymbol;\n } else {\n return null;\n }\n};\n\n// Conjure up a missing token during error recovery.\n//\n// The recognizer attempts to recover from single missing\n// symbols. But, actions might refer to that missing symbol.\n// For example, x=ID {f($x);}. The action clearly assumes\n// that there has been an identifier matched previously and that\n// $x points at that token. If that token is missing, but\n// the next token in the stream is what we want we assume that\n// this token is missing and we keep going. Because we\n// have to return some token to replace the missing token,\n// we have to conjure one up. This method gives the user control\n// over the tokens returned for missing tokens. Mostly,\n// you will want to create something special for identifier\n// tokens. For literals such as '{' and ',', the default\n// action in the parser or tree parser works. It simply creates\n// a CommonToken of the appropriate type. The text will be the token.\n// If you change what tokens must be created by the lexer,\n// override this method to create the appropriate tokens.\n//\nDefaultErrorStrategy.prototype.getMissingSymbol = function(recognizer) {\n var currentSymbol = recognizer.getCurrentToken();\n var expecting = this.getExpectedTokens(recognizer);\n var expectedTokenType = expecting.first(); // get any element\n var tokenText;\n if (expectedTokenType===Token.EOF) {\n tokenText = \"<missing EOF>\";\n } else {\n tokenText = \"<missing \" + recognizer.literalNames[expectedTokenType] + \">\";\n }\n var current = currentSymbol;\n var lookback = recognizer.getTokenStream().LT(-1);\n if (current.type===Token.EOF && lookback !== null) {\n current = lookback;\n }\n return recognizer.getTokenFactory().create(current.source,\n expectedTokenType, tokenText, Token.DEFAULT_CHANNEL,\n -1, -1, current.line, current.column);\n};\n\nDefaultErrorStrategy.prototype.getExpectedTokens = function(recognizer) {\n return recognizer.getExpectedTokens();\n};\n\n// How should a token be displayed in an error message? The default\n// is to display just the text, but during development you might\n// want to have a lot of information spit out. Override in that case\n// to use t.toString() (which, for CommonToken, dumps everything about\n// the token). This is better than forcing you to override a method in\n// your token objects because you don't have to go modify your lexer\n// so that it creates a new Java type.\n//\nDefaultErrorStrategy.prototype.getTokenErrorDisplay = function(t) {\n if (t === null) {\n return \"<no token>\";\n }\n var s = t.text;\n if (s === null) {\n if (t.type===Token.EOF) {\n s = \"<EOF>\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n return this.escapeWSAndQuote(s);\n};\n\nDefaultErrorStrategy.prototype.escapeWSAndQuote = function(s) {\n s = s.replace(/\\n/g,\"\\\\n\");\n s = s.replace(/\\r/g,\"\\\\r\");\n s = s.replace(/\\t/g,\"\\\\t\");\n return \"'\" + s + \"'\";\n};\n\n// Compute the error recovery set for the current rule. During\n// rule invocation, the parser pushes the set of tokens that can\n// follow that rule reference on the stack; this amounts to\n// computing FIRST of what follows the rule reference in the\n// enclosing rule. See LinearApproximator.FIRST().\n// This local follow set only includes tokens\n// from within the rule; i.e., the FIRST computation done by\n// ANTLR stops at the end of a rule.\n//\n// EXAMPLE\n//\n// When you find a \"no viable alt exception\", the input is not\n// consistent with any of the alternatives for rule r. The best\n// thing to do is to consume tokens until you see something that\n// can legally follow a call to r//or* any rule that called r.\n// You don't want the exact set of viable next tokens because the\n// input might just be missing a token--you might consume the\n// rest of the input looking for one of the missing tokens.\n//\n// Consider grammar:\n//\n// a : '[' b ']'\n// | '(' b ')'\n// ;\n// b : c '^' INT ;\n// c : ID\n// | INT\n// ;\n//\n// At each rule invocation, the set of tokens that could follow\n// that rule is pushed on a stack. Here are the various\n// context-sensitive follow sets:\n//\n// FOLLOW(b1_in_a) = FIRST(']') = ']'\n// FOLLOW(b2_in_a) = FIRST(')') = ')'\n// FOLLOW(c_in_b) = FIRST('^') = '^'\n//\n// Upon erroneous input \"[]\", the call chain is\n//\n// a -> b -> c\n//\n// and, hence, the follow context stack is:\n//\n// depth follow set start of rule execution\n// 0 <EOF> a (from main())\n// 1 ']' b\n// 2 '^' c\n//\n// Notice that ')' is not included, because b would have to have\n// been called from a different context in rule a for ')' to be\n// included.\n//\n// For error recovery, we cannot consider FOLLOW(c)\n// (context-sensitive or otherwise). We need the combined set of\n// all context-sensitive FOLLOW sets--the set of all tokens that\n// could follow any reference in the call chain. We need to\n// resync to one of those tokens. Note that FOLLOW(c)='^' and if\n// we resync'd to that token, we'd consume until EOF. We need to\n// sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.\n// In this case, for input \"[]\", LA(1) is ']' and in the set, so we would\n// not consume anything. After printing an error, rule c would\n// return normally. Rule b would not find the required '^' though.\n// At this point, it gets a mismatched token error and throws an\n// exception (since LA(1) is not in the viable following token\n// set). The rule exception handler tries to recover, but finds\n// the same recovery set and doesn't consume anything. Rule b\n// exits normally returning to rule a. Now it finds the ']' (and\n// with the successful match exits errorRecovery mode).\n//\n// So, you can see that the parser walks up the call chain looking\n// for the token that was a member of the recovery set.\n//\n// Errors are not generated in errorRecovery mode.\n//\n// ANTLR's error recovery mechanism is based upon original ideas:\n//\n// \"Algorithms + Data Structures = Programs\" by Niklaus Wirth\n//\n// and\n//\n// \"A note on error recovery in recursive descent parsers\":\n// http://portal.acm.org/citation.cfm?id=947902.947905\n//\n// Later, Josef Grosch had some good ideas:\n//\n// \"Efficient and Comfortable Error Recovery in Recursive Descent\n// Parsers\":\n// ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip\n//\n// Like Grosch I implement context-sensitive FOLLOW sets that are combined\n// at run-time upon error to avoid overhead during parsing.\n//\nDefaultErrorStrategy.prototype.getErrorRecoverySet = function(recognizer) {\n var atn = recognizer._interp.atn;\n var ctx = recognizer._ctx;\n var recoverSet = new IntervalSet();\n while (ctx !== null && ctx.invokingState>=0) {\n // compute what follows who invoked us\n var invokingState = atn.states[ctx.invokingState];\n var rt = invokingState.transitions[0];\n var follow = atn.nextTokens(rt.followState);\n recoverSet.addSet(follow);\n ctx = ctx.parentCtx;\n }\n recoverSet.removeOne(Token.EPSILON);\n return recoverSet;\n};\n\n// Consume tokens until one matches the given token set.//\nDefaultErrorStrategy.prototype.consumeUntil = function(recognizer, set) {\n var ttype = recognizer.getTokenStream().LA(1);\n while( ttype !== Token.EOF && !set.contains(ttype)) {\n recognizer.consume();\n ttype = recognizer.getTokenStream().LA(1);\n }\n};\n\n//\n// This implementation of {@link ANTLRErrorStrategy} responds to syntax errors\n// by immediately canceling the parse operation with a\n// {@link ParseCancellationException}. The implementation ensures that the\n// {@link ParserRuleContext//exception} field is set for all parse tree nodes\n// that were not completed prior to encountering the error.\n//\n// <p>\n// This error strategy is useful in the following scenarios.</p>\n//\n// <ul>\n// <li><strong>Two-stage parsing:</strong> This error strategy allows the first\n// stage of two-stage parsing to immediately terminate if an error is\n// encountered, and immediately fall back to the second stage. In addition to\n// avoiding wasted work by attempting to recover from errors here, the empty\n// implementation of {@link BailErrorStrategy//sync} improves the performance of\n// the first stage.</li>\n// <li><strong>Silent validation:</strong> When syntax errors are not being\n// reported or logged, and the parse result is simply ignored if errors occur,\n// the {@link BailErrorStrategy} avoids wasting work on recovering from errors\n// when the result will be ignored either way.</li>\n// </ul>\n//\n// <p>\n// {@code myparser.setErrorHandler(new BailErrorStrategy());}</p>\n//\n// @see Parser//setErrorHandler(ANTLRErrorStrategy)\n//\nfunction BailErrorStrategy() {\n\tDefaultErrorStrategy.call(this);\n\treturn this;\n}\n\nBailErrorStrategy.prototype = Object.create(DefaultErrorStrategy.prototype);\nBailErrorStrategy.prototype.constructor = BailErrorStrategy;\n\n// Instead of recovering from exception {@code e}, re-throw it wrapped\n// in a {@link ParseCancellationException} so it is not caught by the\n// rule function catches. Use {@link Exception//getCause()} to get the\n// original {@link RecognitionException}.\n//\nBailErrorStrategy.prototype.recover = function(recognizer, e) {\n var context = recognizer._ctx;\n while (context !== null) {\n context.exception = e;\n context = context.parentCtx;\n }\n throw new ParseCancellationException(e);\n};\n\n// Make sure we don't attempt to recover inline; if the parser\n// successfully recovers, it won't throw an exception.\n//\nBailErrorStrategy.prototype.recoverInline = function(recognizer) {\n this.recover(recognizer, new InputMismatchException(recognizer));\n};\n\n// Make sure we don't attempt to recover from problems in subrules.//\nBailErrorStrategy.prototype.sync = function(recognizer) {\n // pass\n};\n\nexports.BailErrorStrategy = BailErrorStrategy;\nexports.DefaultErrorStrategy = DefaultErrorStrategy;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// The root of the ANTLR exception hierarchy. In general, ANTLR tracks just\n// 3 kinds of errors: prediction errors, failed predicate errors, and\n// mismatched input errors. In each case, the parser knows where it is\n// in the input, where it is in the ATN, the rule invocation stack,\n// and what kind of problem occurred.\n\nvar PredicateTransition = require('./../atn/Transition').PredicateTransition;\n\nfunction RecognitionException(params) {\n\tError.call(this);\n\tif (!!Error.captureStackTrace) {\n Error.captureStackTrace(this, RecognitionException);\n\t} else {\n\t\tvar stack = new Error().stack;\n\t}\n\tthis.message = params.message;\n this.recognizer = params.recognizer;\n this.input = params.input;\n this.ctx = params.ctx;\n // The current {@link Token} when an error occurred. Since not all streams\n // support accessing symbols by index, we have to track the {@link Token}\n // instance itself.\n this.offendingToken = null;\n // Get the ATN state number the parser was in at the time the error\n // occurred. For {@link NoViableAltException} and\n // {@link LexerNoViableAltException} exceptions, this is the\n // {@link DecisionState} number. For others, it is the state whose outgoing\n // edge we couldn't match.\n this.offendingState = -1;\n if (this.recognizer!==null) {\n this.offendingState = this.recognizer.state;\n }\n return this;\n}\n\nRecognitionException.prototype = Object.create(Error.prototype);\nRecognitionException.prototype.constructor = RecognitionException;\n\n// <p>If the state number is not known, this method returns -1.</p>\n\n//\n// Gets the set of input symbols which could potentially follow the\n// previously matched symbol at the time this exception was thrown.\n//\n// <p>If the set of expected tokens is not known and could not be computed,\n// this method returns {@code null}.</p>\n//\n// @return The set of token types that could potentially follow the current\n// state in the ATN, or {@code null} if the information is not available.\n// /\nRecognitionException.prototype.getExpectedTokens = function() {\n if (this.recognizer!==null) {\n return this.recognizer.atn.getExpectedTokens(this.offendingState, this.ctx);\n } else {\n return null;\n }\n};\n\nRecognitionException.prototype.toString = function() {\n return this.message;\n};\n\nfunction LexerNoViableAltException(lexer, input, startIndex, deadEndConfigs) {\n\tRecognitionException.call(this, {message:\"\", recognizer:lexer, input:input, ctx:null});\n this.startIndex = startIndex;\n this.deadEndConfigs = deadEndConfigs;\n return this;\n}\n\nLexerNoViableAltException.prototype = Object.create(RecognitionException.prototype);\nLexerNoViableAltException.prototype.constructor = LexerNoViableAltException;\n\nLexerNoViableAltException.prototype.toString = function() {\n var symbol = \"\";\n if (this.startIndex >= 0 && this.startIndex < this.input.size) {\n symbol = this.input.getText((this.startIndex,this.startIndex));\n }\n return \"LexerNoViableAltException\" + symbol;\n};\n\n// Indicates that the parser could not decide which of two or more paths\n// to take based upon the remaining input. It tracks the starting token\n// of the offending input and also knows where the parser was\n// in the various paths when the error. Reported by reportNoViableAlternative()\n//\nfunction NoViableAltException(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) {\n\tctx = ctx || recognizer._ctx;\n\toffendingToken = offendingToken || recognizer.getCurrentToken();\n\tstartToken = startToken || recognizer.getCurrentToken();\n\tinput = input || recognizer.getInputStream();\n\tRecognitionException.call(this, {message:\"\", recognizer:recognizer, input:input, ctx:ctx});\n // Which configurations did we try at input.index() that couldn't match\n\t// input.LT(1)?//\n this.deadEndConfigs = deadEndConfigs;\n // The token object at the start index; the input stream might\n // not be buffering tokens so get a reference to it. (At the\n // time the error occurred, of course the stream needs to keep a\n // buffer all of the tokens but later we might not have access to those.)\n this.startToken = startToken;\n this.offendingToken = offendingToken;\n}\n\nNoViableAltException.prototype = Object.create(RecognitionException.prototype);\nNoViableAltException.prototype.constructor = NoViableAltException;\n\n// This signifies any kind of mismatched input exceptions such as\n// when the current input does not match the expected token.\n//\nfunction InputMismatchException(recognizer) {\n\tRecognitionException.call(this, {message:\"\", recognizer:recognizer, input:recognizer.getInputStream(), ctx:recognizer._ctx});\n this.offendingToken = recognizer.getCurrentToken();\n}\n\nInputMismatchException.prototype = Object.create(RecognitionException.prototype);\nInputMismatchException.prototype.constructor = InputMismatchException;\n\n// A semantic predicate failed during validation. Validation of predicates\n// occurs when normally parsing the alternative just like matching a token.\n// Disambiguating predicate evaluation occurs when we test a predicate during\n// prediction.\n\nfunction FailedPredicateException(recognizer, predicate, message) {\n\tRecognitionException.call(this, {message:this.formatMessage(predicate,message || null), recognizer:recognizer,\n input:recognizer.getInputStream(), ctx:recognizer._ctx});\n var s = recognizer._interp.atn.states[recognizer.state];\n var trans = s.transitions[0];\n if (trans instanceof PredicateTransition) {\n this.ruleIndex = trans.ruleIndex;\n this.predicateIndex = trans.predIndex;\n } else {\n this.ruleIndex = 0;\n this.predicateIndex = 0;\n }\n this.predicate = predicate;\n this.offendingToken = recognizer.getCurrentToken();\n return this;\n}\n\nFailedPredicateException.prototype = Object.create(RecognitionException.prototype);\nFailedPredicateException.prototype.constructor = FailedPredicateException;\n\nFailedPredicateException.prototype.formatMessage = function(predicate, message) {\n if (message !==null) {\n return message;\n } else {\n return \"failed predicate: {\" + predicate + \"}?\";\n }\n};\n\nfunction ParseCancellationException() {\n\tError.call(this);\n\tError.captureStackTrace(this, ParseCancellationException);\n\treturn this;\n}\n\nParseCancellationException.prototype = Object.create(Error.prototype);\nParseCancellationException.prototype.constructor = ParseCancellationException;\n\nexports.RecognitionException = RecognitionException;\nexports.NoViableAltException = NoViableAltException;\nexports.LexerNoViableAltException = LexerNoViableAltException;\nexports.InputMismatchException = InputMismatchException;\nexports.FailedPredicateException = FailedPredicateException;\nexports.ParseCancellationException = ParseCancellationException;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.RecognitionException = require('./Errors').RecognitionException;\nexports.NoViableAltException = require('./Errors').NoViableAltException;\nexports.LexerNoViableAltException = require('./Errors').LexerNoViableAltException;\nexports.InputMismatchException = require('./Errors').InputMismatchException;\nexports.FailedPredicateException = require('./Errors').FailedPredicateException;\nexports.DiagnosticErrorListener = require('./DiagnosticErrorListener').DiagnosticErrorListener;\nexports.BailErrorStrategy = require('./ErrorStrategy').BailErrorStrategy;\nexports.ErrorListener = require('./ErrorListener').ErrorListener;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexports.atn = require('./atn/index');\nexports.codepointat = require('./polyfills/codepointat');\nexports.dfa = require('./dfa/index');\nexports.fromcodepoint = require('./polyfills/fromcodepoint');\nexports.tree = require('./tree/index');\nexports.error = require('./error/index');\nexports.Token = require('./Token').Token;\nexports.CharStreams = require('./CharStreams').CharStreams;\nexports.CommonToken = require('./Token').CommonToken;\nexports.InputStream = require('./InputStream').InputStream;\nexports.FileStream = require('./FileStream').FileStream;\nexports.CommonTokenStream = require('./CommonTokenStream').CommonTokenStream;\nexports.Lexer = require('./Lexer').Lexer;\nexports.Parser = require('./Parser').Parser;\nvar pc = require('./PredictionContext');\nexports.PredictionContextCache = pc.PredictionContextCache;\nexports.ParserRuleContext = require('./ParserRuleContext').ParserRuleContext;\nexports.Interval = require('./IntervalSet').Interval;\nexports.Utils = require('./Utils');\n","/*! https://mths.be/codepointat v0.2.0 by @mathias */\nif (!String.prototype.codePointAt) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar codePointAt = function(position) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar string = String(this);\n\t\t\tvar size = string.length;\n\t\t\t// `ToInteger`\n\t\t\tvar index = position ? Number(position) : 0;\n\t\t\tif (index != index) { // better `isNaN`\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices:\n\t\t\tif (index < 0 || index >= size) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t// Get the first code unit\n\t\t\tvar first = string.charCodeAt(index);\n\t\t\tvar second;\n\t\t\tif ( // check if it’s the start of a surrogate pair\n\t\t\t\tfirst >= 0xD800 && first <= 0xDBFF && // high surrogate\n\t\t\t\tsize > index + 1 // there is a next code unit\n\t\t\t) {\n\t\t\t\tsecond = string.charCodeAt(index + 1);\n\t\t\t\tif (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\treturn (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn first;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'codePointAt', {\n\t\t\t\t'value': codePointAt,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.codePointAt = codePointAt;\n\t\t}\n\t}());\n}\n","/*! https://mths.be/fromcodepoint v0.2.1 by @mathias */\nif (!String.fromCodePoint) {\n\t(function() {\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar stringFromCharCode = String.fromCharCode;\n\t\tvar floor = Math.floor;\n\t\tvar fromCodePoint = function(_) {\n\t\t\tvar MAX_SIZE = 0x4000;\n\t\t\tvar codeUnits = [];\n\t\t\tvar highSurrogate;\n\t\t\tvar lowSurrogate;\n\t\t\tvar index = -1;\n\t\t\tvar length = arguments.length;\n\t\t\tif (!length) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tvar result = '';\n\t\t\twhile (++index < length) {\n\t\t\t\tvar codePoint = Number(arguments[index]);\n\t\t\t\tif (\n\t\t\t\t\t!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n\t\t\t\t\tcodePoint < 0 || // not a valid Unicode code point\n\t\t\t\t\tcodePoint > 0x10FFFF || // not a valid Unicode code point\n\t\t\t\t\tfloor(codePoint) != codePoint // not an integer\n\t\t\t\t) {\n\t\t\t\t\tthrow RangeError('Invalid code point: ' + codePoint);\n\t\t\t\t}\n\t\t\t\tif (codePoint <= 0xFFFF) { // BMP code point\n\t\t\t\t\tcodeUnits.push(codePoint);\n\t\t\t\t} else { // Astral code point; split in surrogate halves\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\t\thighSurrogate = (codePoint >> 10) + 0xD800;\n\t\t\t\t\tlowSurrogate = (codePoint % 0x400) + 0xDC00;\n\t\t\t\t\tcodeUnits.push(highSurrogate, lowSurrogate);\n\t\t\t\t}\n\t\t\t\tif (index + 1 == length || codeUnits.length > MAX_SIZE) {\n\t\t\t\t\tresult += stringFromCharCode.apply(null, codeUnits);\n\t\t\t\t\tcodeUnits.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String, 'fromCodePoint', {\n\t\t\t\t'value': fromCodePoint,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.fromCodePoint = fromCodePoint;\n\t\t}\n\t}());\n}\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// The basic notion of a tree has a parent, a payload, and a list of children.\n// It is the most abstract interface for all the trees used by ANTLR.\n///\n\nvar Token = require('./../Token').Token;\nvar Interval = require('./../IntervalSet').Interval;\nvar INVALID_INTERVAL = new Interval(-1, -2);\nvar Utils = require('../Utils.js');\n\n\nfunction Tree() {\n\treturn this;\n}\n\nfunction SyntaxTree() {\n\tTree.call(this);\n\treturn this;\n}\n\nSyntaxTree.prototype = Object.create(Tree.prototype);\nSyntaxTree.prototype.constructor = SyntaxTree;\n\nfunction ParseTree() {\n\tSyntaxTree.call(this);\n\treturn this;\n}\n\nParseTree.prototype = Object.create(SyntaxTree.prototype);\nParseTree.prototype.constructor = ParseTree;\n\nfunction RuleNode() {\n\tParseTree.call(this);\n\treturn this;\n}\n\nRuleNode.prototype = Object.create(ParseTree.prototype);\nRuleNode.prototype.constructor = RuleNode;\n\nfunction TerminalNode() {\n\tParseTree.call(this);\n\treturn this;\n}\n\nTerminalNode.prototype = Object.create(ParseTree.prototype);\nTerminalNode.prototype.constructor = TerminalNode;\n\nfunction ErrorNode() {\n\tTerminalNode.call(this);\n\treturn this;\n}\n\nErrorNode.prototype = Object.create(TerminalNode.prototype);\nErrorNode.prototype.constructor = ErrorNode;\n\nfunction ParseTreeVisitor() {\n\treturn this;\n}\n\nParseTreeVisitor.prototype.visit = function(ctx) {\n \tif (Array.isArray(ctx)) {\n\t\treturn ctx.map(function(child) {\n return child.accept(this);\n }, this);\n\t} else {\n\t\treturn ctx.accept(this);\n\t}\n};\n\nParseTreeVisitor.prototype.visitChildren = function(ctx) {\n return this.visit(ctx.children);\n}\n\nParseTreeVisitor.prototype.visitTerminal = function(node) {\n};\n\nParseTreeVisitor.prototype.visitErrorNode = function(node) {\n};\n\n\nfunction ParseTreeListener() {\n\treturn this;\n}\n\nParseTreeListener.prototype.visitTerminal = function(node) {\n};\n\nParseTreeListener.prototype.visitErrorNode = function(node) {\n};\n\nParseTreeListener.prototype.enterEveryRule = function(node) {\n};\n\nParseTreeListener.prototype.exitEveryRule = function(node) {\n};\n\nfunction TerminalNodeImpl(symbol) {\n\tTerminalNode.call(this);\n\tthis.parentCtx = null;\n\tthis.symbol = symbol;\n\treturn this;\n}\n\nTerminalNodeImpl.prototype = Object.create(TerminalNode.prototype);\nTerminalNodeImpl.prototype.constructor = TerminalNodeImpl;\n\nTerminalNodeImpl.prototype.getChild = function(i) {\n\treturn null;\n};\n\nTerminalNodeImpl.prototype.getSymbol = function() {\n\treturn this.symbol;\n};\n\nTerminalNodeImpl.prototype.getParent = function() {\n\treturn this.parentCtx;\n};\n\nTerminalNodeImpl.prototype.getPayload = function() {\n\treturn this.symbol;\n};\n\nTerminalNodeImpl.prototype.getSourceInterval = function() {\n\tif (this.symbol === null) {\n\t\treturn INVALID_INTERVAL;\n\t}\n\tvar tokenIndex = this.symbol.tokenIndex;\n\treturn new Interval(tokenIndex, tokenIndex);\n};\n\nTerminalNodeImpl.prototype.getChildCount = function() {\n\treturn 0;\n};\n\nTerminalNodeImpl.prototype.accept = function(visitor) {\n\treturn visitor.visitTerminal(this);\n};\n\nTerminalNodeImpl.prototype.getText = function() {\n\treturn this.symbol.text;\n};\n\nTerminalNodeImpl.prototype.toString = function() {\n\tif (this.symbol.type === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else {\n\t\treturn this.symbol.text;\n\t}\n};\n\n// Represents a token that was consumed during resynchronization\n// rather than during a valid match operation. For example,\n// we will create this kind of a node during single token insertion\n// and deletion as well as during \"consume until error recovery set\"\n// upon no viable alternative exceptions.\n\nfunction ErrorNodeImpl(token) {\n\tTerminalNodeImpl.call(this, token);\n\treturn this;\n}\n\nErrorNodeImpl.prototype = Object.create(TerminalNodeImpl.prototype);\nErrorNodeImpl.prototype.constructor = ErrorNodeImpl;\n\nErrorNodeImpl.prototype.isErrorNode = function() {\n\treturn true;\n};\n\nErrorNodeImpl.prototype.accept = function(visitor) {\n\treturn visitor.visitErrorNode(this);\n};\n\nfunction ParseTreeWalker() {\n\treturn this;\n}\n\nParseTreeWalker.prototype.walk = function(listener, t) {\n\tvar errorNode = t instanceof ErrorNode ||\n\t\t\t(t.isErrorNode !== undefined && t.isErrorNode());\n\tif (errorNode) {\n\t\tlistener.visitErrorNode(t);\n\t} else if (t instanceof TerminalNode) {\n\t\tlistener.visitTerminal(t);\n\t} else {\n\t\tthis.enterRule(listener, t);\n\t\tfor (var i = 0; i < t.getChildCount(); i++) {\n\t\t\tvar child = t.getChild(i);\n\t\t\tthis.walk(listener, child);\n\t\t}\n\t\tthis.exitRule(listener, t);\n\t}\n};\n//\n// The discovery of a rule node, involves sending two events: the generic\n// {@link ParseTreeListener//enterEveryRule} and a\n// {@link RuleContext}-specific event. First we trigger the generic and then\n// the rule specific. We to them in reverse order upon finishing the node.\n//\nParseTreeWalker.prototype.enterRule = function(listener, r) {\n\tvar ctx = r.getRuleContext();\n\tlistener.enterEveryRule(ctx);\n\tctx.enterRule(listener);\n};\n\nParseTreeWalker.prototype.exitRule = function(listener, r) {\n\tvar ctx = r.getRuleContext();\n\tctx.exitRule(listener);\n\tlistener.exitEveryRule(ctx);\n};\n\nParseTreeWalker.DEFAULT = new ParseTreeWalker();\n\nexports.RuleNode = RuleNode;\nexports.ErrorNode = ErrorNode;\nexports.TerminalNode = TerminalNode;\nexports.ErrorNodeImpl = ErrorNodeImpl;\nexports.TerminalNodeImpl = TerminalNodeImpl;\nexports.ParseTreeListener = ParseTreeListener;\nexports.ParseTreeVisitor = ParseTreeVisitor;\nexports.ParseTreeWalker = ParseTreeWalker;\nexports.INVALID_INTERVAL = INVALID_INTERVAL;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Utils = require('./../Utils');\nvar Token = require('./../Token').Token;\nvar RuleNode = require('./Tree').RuleNode;\nvar ErrorNode = require('./Tree').ErrorNode;\nvar TerminalNode = require('./Tree').TerminalNode;\nvar ParserRuleContext = require('./../ParserRuleContext').ParserRuleContext;\nvar RuleContext = require('./../RuleContext').RuleContext;\nvar INVALID_ALT_NUMBER = require('./../atn/ATN').INVALID_ALT_NUMBER;\n\n\n/** A set of utility routines useful for all kinds of ANTLR trees. */\nfunction Trees() {\n}\n\n// Print out a whole tree in LISP form. {@link //getNodeText} is used on the\n// node payloads to get the text for the nodes. Detect\n// parse trees and extract data appropriately.\nTrees.toStringTree = function(tree, ruleNames, recog) {\n\truleNames = ruleNames || null;\n\trecog = recog || null;\n if(recog!==null) {\n ruleNames = recog.ruleNames;\n }\n var s = Trees.getNodeText(tree, ruleNames);\n s = Utils.escapeWhitespace(s, false);\n var c = tree.getChildCount();\n if(c===0) {\n return s;\n }\n var res = \"(\" + s + ' ';\n if(c>0) {\n s = Trees.toStringTree(tree.getChild(0), ruleNames);\n res = res.concat(s);\n }\n for(var i=1;i<c;i++) {\n s = Trees.toStringTree(tree.getChild(i), ruleNames);\n res = res.concat(' ' + s);\n }\n res = res.concat(\")\");\n return res;\n};\n\nTrees.getNodeText = function(t, ruleNames, recog) {\n\truleNames = ruleNames || null;\n\trecog = recog || null;\n if(recog!==null) {\n ruleNames = recog.ruleNames;\n }\n if(ruleNames!==null) {\n if (t instanceof RuleContext) {\n var altNumber = t.getAltNumber();\n if ( altNumber!=INVALID_ALT_NUMBER ) {\n return ruleNames[t.ruleIndex]+\":\"+altNumber;\n }\n return ruleNames[t.ruleIndex];\n } else if ( t instanceof ErrorNode) {\n return t.toString();\n } else if(t instanceof TerminalNode) {\n if(t.symbol!==null) {\n return t.symbol.text;\n }\n }\n }\n // no recog for rule names\n var payload = t.getPayload();\n if (payload instanceof Token ) {\n return payload.text;\n }\n return t.getPayload().toString();\n};\n\n\n// Return ordered list of all children of this node\nTrees.getChildren = function(t) {\n\tvar list = [];\n\tfor(var i=0;i<t.getChildCount();i++) {\n\t\tlist.push(t.getChild(i));\n\t}\n\treturn list;\n};\n\n// Return a list of all ancestors of this node. The first node of\n// list is the root and the last is the parent of this node.\n//\nTrees.getAncestors = function(t) {\n var ancestors = [];\n t = t.getParent();\n while(t!==null) {\n ancestors = [t].concat(ancestors);\n t = t.getParent();\n }\n return ancestors;\n};\n\nTrees.findAllTokenNodes = function(t, ttype) {\n return Trees.findAllNodes(t, ttype, true);\n};\n\nTrees.findAllRuleNodes = function(t, ruleIndex) {\n\treturn Trees.findAllNodes(t, ruleIndex, false);\n};\n\nTrees.findAllNodes = function(t, index, findTokens) {\n\tvar nodes = [];\n\tTrees._findAllNodes(t, index, findTokens, nodes);\n\treturn nodes;\n};\n\nTrees._findAllNodes = function(t, index, findTokens, nodes) {\n\t// check this node (the root) first\n\tif(findTokens && (t instanceof TerminalNode)) {\n\t\tif(t.symbol.type===index) {\n\t\t\tnodes.push(t);\n\t\t}\n\t} else if(!findTokens && (t instanceof ParserRuleContext)) {\n\t\tif(t.ruleIndex===index) {\n\t\t\tnodes.push(t);\n\t\t}\n\t}\n\t// check children\n\tfor(var i=0;i<t.getChildCount();i++) {\n\t\tTrees._findAllNodes(t.getChild(i), index, findTokens, nodes);\n\t}\n};\n\nTrees.descendants = function(t) {\n\tvar nodes = [t];\n for(var i=0;i<t.getChildCount();i++) {\n nodes = nodes.concat(Trees.descendants(t.getChild(i)));\n }\n return nodes;\n};\n\n\nexports.Trees = Trees;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Tree = require('./Tree');\nexports.Trees = require('./Trees').Trees;\nexports.RuleNode = Tree.RuleNode;\nexports.ParseTreeListener = Tree.ParseTreeListener;\nexports.ParseTreeVisitor = Tree.ParseTreeVisitor;\nexports.ParseTreeWalker = Tree.ParseTreeWalker;\n","/*! decimal.js v10.0.1 https://github.com/MikeMcl/decimal.js/LICENCE */\r\n;(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js v10.0.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2017 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\n var EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n Decimal, inexact, noConflict, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { name: '[object Decimal]' };\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * ceil\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\n P.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\n P.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\n P.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * Math.pow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = Math.pow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\n P.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\n P.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = Math.pow(4, -k).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\n P.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(Math.pow(5, -k));\r\n\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\n P.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\n P.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\n P.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\n P.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\n P.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\n P.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\n P.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\n P.isFinite = function () {\r\n return !!this.d;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n P.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n };\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n P.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n };\r\n */\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\n P.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '1e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\n P.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\n P.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n };\r\n\r\n\r\n\r\n /*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\n P.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\n P.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\n P.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n // Add aliases to match BigDecimal method names.\r\n // P.add = P.plus;\r\n P.subtract = P.minus;\r\n P.multiply = P.times;\r\n P.divide = P.div;\r\n P.remainder = P.mod;\r\n P.compareTo = P.cmp;\r\n P.negate = P.neg;\r\n */\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\n function checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n\r\n // Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n // Eg. convertBase('255', 10, 16) returns [15, 15].\r\n // Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\n function convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n\r\n /*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\n function cosine(Ctor, x) {\r\n var k, y,\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = Math.pow(4, -k).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Perform division in the specified base.\r\n */\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n }\r\n\r\n\r\n function getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n }\r\n\r\n\r\n function getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\n function intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n }\r\n\r\n\r\n function isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n }\r\n\r\n\r\n /*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\n function maxOrMin(Ctor, args, ltgt) {\r\n var y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\n function naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\n function naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n // ±Infinity, NaN.\r\n function nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\n function parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? Math.pow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\n function sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) return taylorSeries(Ctor, 2, x, x);\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n // Max k before Math.pow precision loss is 22\r\n x = x.times(Math.pow(5, -k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n // Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\n function taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n }\r\n\r\n\r\n // Return the absolute value of `x` reduced to less than or equal to half pi.\r\n function toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n }\r\n\r\n\r\n /*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\n function toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function abs(x) {\r\n return new this(x).abs();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function acos(x) {\r\n return new this(x).acos();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function acosh(x) {\r\n return new this(x).acosh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function add(x, y) {\r\n return new this(x).plus(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function asin(x) {\r\n return new this(x).asin();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function asinh(x) {\r\n return new this(x).asinh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function atan(x) {\r\n return new this(x).atan();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function atanh(x) {\r\n return new this(x).atanh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\n function atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function cbrt(x) {\r\n return new this(x).cbrt();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function cos(x) {\r\n return new this(x).cos();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function cosh(x) {\r\n return new this(x).cosh();\r\n }\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (v instanceof Decimal) {\r\n x.s = v.s;\r\n x.e = v.e;\r\n x.d = (v = v.d) ? v.slice() : v;\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n x.e = e;\r\n x.d = [v];\r\n return;\r\n\r\n // Infinity, NaN.\r\n } else if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n\r\n } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if (v.charCodeAt(0) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function div(x, y) {\r\n return new this(x).div(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\n function exp(x) {\r\n return new this(x).exp();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n */\r\n function hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n }\r\n\r\n\r\n /*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\n function isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.name === '[object Decimal]' || false;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function ln(x) {\r\n return new this(x).ln();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n function log(x, y) {\r\n return new this(x).log(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function log2(x) {\r\n return new this(x).log(2);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function log10(x) {\r\n return new this(x).log(10);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\n function max() {\r\n return maxOrMin(this, arguments, 'lt');\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\n function min() {\r\n return maxOrMin(this, arguments, 'gt');\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function mod(x, y) {\r\n return new this(x).mod(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function mul(x, y) {\r\n return new this(x).mul(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\n function pow(x, y) {\r\n return new this(x).pow(y);\r\n }\r\n\r\n\r\n /*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\n function random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n }\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n */\r\n function sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function sin(x) {\r\n return new this(x).sin();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function sinh(x) {\r\n return new this(x).sinh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function sqrt(x) {\r\n return new this(x).sqrt();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function sub(x, y) {\r\n return new this(x).sub(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function tan(x) {\r\n return new this(x).tan();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function tanh(x) {\r\n return new this(x).tanh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(DEFAULTS);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Create the internal constants from their string values.\r\n LN10 = new Decimal(LN10);\r\n PI = new Decimal(PI);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self ? self : window;\r\n }\r\n\r\n noConflict = globalScope.Decimal;\r\n Decimal.noConflict = function () {\r\n globalScope.Decimal = noConflict;\r\n return Decimal;\r\n };\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","/*!\n * jQuery Nearest plugin v1.4.0\n *\n * Finds elements closest to a single point based on screen location and pixel dimensions\n * http://gilmoreorless.github.io/jquery-nearest/\n * Copyright (c) 2011-2015 Gilmore Davidson under the MIT licence:\n * http://gilmoreorless.github.io/jquery-nearest/LICENSE.txt\n *\n * Requires jQuery 1.4 or above\n * Also supports Ben Alman's \"each2\" plugin for faster looping (if available)\n */\n\n/**\n * Method signatures:\n *\n * $.nearest({x, y}, selector) - find $(selector) closest to point\n * $(elem).nearest(selector) - find $(selector) closest to elem\n * $(elemSet).nearest({x, y}) - filter $(elemSet) and return closest to point\n *\n * Also:\n * $.furthest()\n * $(elem).furthest()\n *\n * $.touching()\n * $(elem).touching()\n */\n;(function ($, undefined) {\n\n\t/**\n\t * Internal method that does the grunt work\n\t *\n\t * @param mixed selector Any valid jQuery selector providing elements to filter\n\t * @param hash options Key/value list of options for matching elements\n\t * @param mixed thisObj (optional) Any valid jQuery selector that represents self\n\t * for the \"includeSelf\" option\n\t * @return array List of matching elements, can be zero length\n\t */\n\tvar rPerc = /^([\\d.]+)%$/;\n\tfunction nearest(selector, options, thisObj) {\n\t\t// Normalise selector, dimensions and constraints\n\t\tselector || (selector = 'div'); // I STRONGLY recommend passing in a selector\n\t\tvar $container = $(options.container),\n\t\t\tcontainerOffset = $container.offset() || {left: 0, top: 0},\n\t\t\tcontainerWH = [\n\t\t\t\t$container.width() || 0,\n\t\t\t\t$container.height() || 0\n\t\t\t],\n\t\t\tcontainerProps = {\n\t\t\t\t// prop: [min, max]\n\t\t\t\tx: [containerOffset.left, containerOffset.left + containerWH[0]],\n\t\t\t\ty: [containerOffset.top, containerOffset.top + containerWH[1]],\n\t\t\t\tw: [0, containerWH[0]],\n\t\t\t\th: [0, containerWH[1]]\n\t\t\t},\n\t\t\tdirectionConstraints = options.directionConstraints,\n\t\t\tprop, dims, match;\n\t\tfor (prop in containerProps) if (containerProps.hasOwnProperty(prop)) {\n\t\t\tmatch = rPerc.exec(options[prop]);\n\t\t\tif (match) {\n\t\t\t\tdims = containerProps[prop];\n\t\t\t\toptions[prop] = (dims[1] - dims[0]) * match[1] / 100 + dims[0];\n\t\t\t}\n\t\t}\n\t\tif (!$.isArray(directionConstraints)) {\n\t\t\tdirectionConstraints = (typeof directionConstraints === 'string') ? [directionConstraints] : [];\n\t\t}\n\n\t\t// Deprecated options - remove in 2.0\n\t\tif (options.sameX === false && options.checkHoriz === false) {\n\t\t\toptions.sameX = !options.checkHoriz;\n\t\t}\n\t\tif (options.sameY === false && options.checkVert === false) {\n\t\t\toptions.sameY = !options.checkVert;\n\t\t}\n\n\t\t// Get elements and work out x/y points\n\t\tvar $all = $container.find(selector),\n\t\t\tcache = [],\n\t\t\tfurthest = !!options.furthest,\n\t\t\tcheckX = !options.sameX,\n\t\t\tcheckY = !options.sameY,\n\t\t\tonlyX = !!options.onlyX,\n\t\t\tonlyY = !!options.onlyY,\n\t\t\tcompDist = furthest ? 0 : Infinity,\n\t\t\tpoint1x = parseFloat(options.x) || 0,\n\t\t\tpoint1y = parseFloat(options.y) || 0,\n\t\t\tpoint2x = parseFloat(point1x + options.w) || point1x,\n\t\t\tpoint2y = parseFloat(point1y + options.h) || point1y,\n\t\t\tbox = {\n\t\t\t\tx1: point1x,\n\t\t\t\ty1: point1y,\n\t\t\t\tx2: point2x,\n\t\t\t\ty2: point2y\n\t\t\t},\n\t\t\ttolerance = parseFloat(options.tolerance) || 0,\n\t\t\thasEach2 = !!$.fn.each2,\n\t\t\t// Shortcuts to help with compression\n\t\t\tmin = Math.min,\n\t\t\tmax = Math.max;\n\n\t\t// Normalise the remaining options\n\t\tif (!options.includeSelf && thisObj) {\n\t\t\t$all = $all.not(thisObj);\n\t\t}\n\t\tif (tolerance < 0) {\n\t\t\ttolerance = 0;\n\t\t}\n\t\t// Loop through all elements and check their positions\n\t\t$all[hasEach2 ? 'each2' : 'each'](function (i, elem) {\n\t\t\tvar $this = hasEach2 ? elem : $(this),\n\t\t\t\toff = $this.offset(),\n\t\t\t\tx = off.left,\n\t\t\t\ty = off.top,\n\t\t\t\tw = $this.outerWidth(),\n\t\t\t\th = $this.outerHeight(),\n\t\t\t\tx2 = x + w,\n\t\t\t\ty2 = y + h,\n\t\t\t\tmaxX1 = max(x, point1x),\n\t\t\t\tminX2 = min(x2, point2x),\n\t\t\t\tmaxY1 = max(y, point1y),\n\t\t\t\tminY2 = min(y2, point2y),\n\t\t\t\tthisBox = {\n\t\t\t\t\tx1: x,\n\t\t\t\t\ty1: y,\n\t\t\t\t\tx2: x2,\n\t\t\t\t\ty2: y2\n\t\t\t\t},\n\t\t\t\tintersectX = minX2 >= maxX1,\n\t\t\t\tintersectY = minY2 >= maxY1,\n\t\t\t\tdistX, distY, distT, isValid;\n\t\t\tif (\n\t\t\t\t// .nearest() / .furthest()\n\t\t\t\t(checkX && checkY) ||\n\t\t\t\t// .touching()\n\t\t\t\t(!checkX && !checkY && intersectX && intersectY) ||\n\t\t\t\t// .nearest({sameY: true})\n\t\t\t\t(checkX && intersectY) ||\n\t\t\t\t// .nearest({sameX: true})\n\t\t\t\t(checkY && intersectX) ||\n\t\t\t\t// .nearest({onlyX: true})\n\t\t\t\t(checkX && onlyX) ||\n\t\t\t\t// .nearest({onlyY: true})\n\t\t\t\t(checkY && onlyY)\n\t\t\t) {\n\t\t\t\tdistX = intersectX ? 0 : maxX1 - minX2;\n\t\t\t\tdistY = intersectY ? 0 : maxY1 - minY2;\n\t\t\t\tif (onlyX || onlyY) {\n\t\t\t\t\tdistT = onlyX ? distX : distY;\n\t\t\t\t} else {\n\t\t\t\t\tdistT = intersectX || intersectY ?\n\t\t\t\t\t\tmax(distX, distY) :\n\t\t\t\t\t\tMath.sqrt(distX * distX + distY * distY);\n\t\t\t\t}\n\n\t\t\t\tisValid = furthest ?\n\t\t\t\t\tdistT >= compDist - tolerance :\n\t\t\t\t\tdistT <= compDist + tolerance;\n\t\t\t\tif (!checkDirectionConstraints(box, thisBox, directionConstraints)) {\n\t\t\t\t\tisValid = false;\n\t\t\t\t}\n\n\t\t\t\tif (isValid) {\n\t\t\t\t\tcompDist = furthest ?\n\t\t\t\t\t\tmax(compDist, distT) :\n\t\t\t\t\t\tmin(compDist, distT);\n\t\t\t\t\tcache.push({\n\t\t\t\t\t\tnode: this,\n\t\t\t\t\t\tdist: distT\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (options.sort === 'nearest') {\n\t\t\tcache.sort(function(a,b) { return a.dist - b.dist; });\n\t\t} else if (options.sort === 'furthest') {\n\t\t\tcache.sort(function(a,b) { return b.dist - a.dist; });\n\t\t}\n\n\t\t// Make sure all cached items are within tolerance range\n\t\tvar len = cache.length,\n\t\t\tfiltered = [],\n\t\t\tcompMin, compMax,\n\t\t\ti, item;\n\t\tif (len) {\n\t\t\tif (furthest) {\n\t\t\t\tcompMin = compDist - tolerance;\n\t\t\t\tcompMax = compDist;\n\t\t\t} else {\n\t\t\t\tcompMin = compDist;\n\t\t\t\tcompMax = compDist + tolerance;\n\t\t\t}\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\titem = cache[i];\n\t\t\t\tif (item.dist >= compMin && item.dist <= compMax) {\n\t\t\t\t\tfiltered.push(item.node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn filtered;\n\t}\n\n\tfunction checkDirectionConstraints(refBox, itemBox, constraints) {\n\t\tvar results = {\n\t\t\tleft: refBox.x1 > itemBox.x1,\n\t\t\tright: refBox.x2 < itemBox.x2,\n\t\t\ttop: refBox.y1 > itemBox.y1,\n\t\t\tbottom: refBox.y2 < itemBox.y2\n\t\t};\n\n\t\treturn constraints.reduce(function(result, direction) {\n\t\t\treturn result && !!results[direction];\n\t\t}, true);\n\t}\n\n\t$.each(['nearest', 'furthest', 'touching'], function (i, name) {\n\n\t\t// Internal default options\n\t\t// Not exposed publicly because they're method-dependent and easily overwritten anyway\n\t\tvar defaults = {\n\t\t\tx: 0, // X position of top left corner of point/region\n\t\t\ty: 0, // Y position of top left corner of point/region\n\t\t\tw: 0, // Width of region\n\t\t\th: 0, // Height of region\n\t\t\ttolerance: 1, // Distance tolerance in pixels, mainly to handle fractional pixel rounding bugs\n\t\t\tcontainer: document, // Container of objects for calculating %-based dimensions\n\t\t\tfurthest: name == 'furthest', // Find max distance (true) or min distance (false)\n\t\t\tincludeSelf: false, // Include 'this' in search results (t/f) - only applies to $(elem).func(selector) syntax\n\t\t\tsameX: name === 'touching', // Only match for the same X axis values (t/f)\n\t\t\tsameY: name === 'touching', // Only match for the same Y axis values (t/f)\n\t\t\tonlyX: false, // Only check X axis variations (t/f)\n\t\t\tonlyY: false, // Only check Y axis variations (t/f),\n\t\t\tdirectionConstraints: [], // Array of directions to limit search: 'left', 'right' ,'top', 'bottom'\n\t\t\tsort: false // Sort results based on distance: 'nearest', 'furthest'\n\t\t};\n\n\t\t/**\n\t\t * $.nearest() / $.furthest() / $.touching()\n\t\t *\n\t\t * Utility functions for finding elements near a specific point or region on screen\n\t\t *\n\t\t * @param hash point Co-ordinates for the point or region to measure from\n\t\t * \"x\" and \"y\" keys are required, \"w\" and \"h\" keys are optional\n\t\t * @param mixed selector Any valid jQuery selector that provides elements to filter\n\t\t * @param hash options (optional) Extra filtering options\n\t\t * Not technically needed as the options could go on the point object,\n\t\t * but it's good to have a consistent API\n\t\t * @return jQuery object containing matching elements in selector\n\t\t */\n\t\t$[name] = function (point, selector, options) {\n\t\t\tif (!point || point.x === undefined || point.y === undefined) {\n\t\t\t\treturn $([]);\n\t\t\t}\n\t\t\tvar opts = $.extend({}, defaults, point, options || {});\n\t\t\treturn $(nearest(selector, opts));\n\t\t};\n\n\t\t/**\n\t\t * SIGNATURE 1:\n\t\t * $(elem).nearest(selector) / $(elem).furthest(selector) / $(elem).touching(selector)\n\t\t *\n\t\t * Finds all elements in selector that are nearest to/furthest from elem\n\t\t *\n\t\t * @param mixed selector Any valid jQuery selector that provides elements to filter\n\t\t * @param hash options (optional) Extra filtering options\n\t\t * @return jQuery object containing matching elements in selector\n\t\t *\n\t\t * SIGNATURE 2:\n\t\t * $(elemSet).nearest(point) / $(elemSet).furthest(point) / $(elemSet).touching(point)\n\t\t *\n\t\t * Filters elemSet to return only the elements nearest to/furthest from point\n\t\t * Effectively a wrapper for $.nearest(point, elemSet) but with the benefits of method chaining\n\t\t *\n\t\t * @param hash point Co-ordinates for the point or region to measure from\n\t\t * @return jQuery object containing matching elements in elemSet\n\t\t */\n\t\t$.fn[name] = function (selector, options) {\n\t\t\tif (!this.length) {\n\t\t\t\treturn this.pushStack([]);\n\t\t\t}\n\t\t\tvar opts;\n\t\t\tif (selector && $.isPlainObject(selector)) {\n\t\t\t\topts = $.extend({}, defaults, selector, options || {});\n\t\t\t\treturn this.pushStack(nearest(this, opts));\n\t\t\t}\n\t\t\tvar offset = this.offset(),\n\t\t\t\tdimensions = {\n\t\t\t\t\tx: offset.left,\n\t\t\t\t\ty: offset.top,\n\t\t\t\t\tw: this.outerWidth(),\n\t\t\t\t\th: this.outerHeight()\n\t\t\t\t};\n\t\t\topts = $.extend({}, defaults, dimensions, options || {});\n\t\t\treturn this.pushStack(nearest(selector, opts, this));\n\t\t};\n\t});\n})(jQuery);\n","/*!\n * jQuery JavaScript Library v3.3.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2018-01-20T17:24Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, doc, node ) {\n\t\tdoc = doc || document;\n\n\t\tvar i,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\t\t\t\tif ( node[ i ] ) {\n\t\t\t\t\tscript[ i ] = node[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.3.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\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\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\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\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\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\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\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\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\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\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\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// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\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\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\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\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\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\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\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\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\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\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\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\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\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\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\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\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\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// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\t\t) );\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && support.scrollboxSize() === styles.position ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\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\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\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\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\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\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\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} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\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\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\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\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","var LanguageService = /** @class */ (function () {\n function LanguageService(lsKey, defaultLang) {\n if (defaultLang === void 0) { defaultLang = 'pt'; }\n this.lsKey = lsKey;\n this.defaultLang = defaultLang;\n this.listeners = [];\n this.document = document;\n this.setupListener();\n }\n LanguageService.prototype.setupListener = function () {\n var _this = this;\n if (this.document !== null) {\n this.document.addEventListener(\"storage\", (function (event) {\n var e = event;\n if (e.key === _this.lsKey) {\n _this.listeners.forEach(function (l) { return l(); });\n }\n }));\n }\n };\n LanguageService.prototype.getLang = function () {\n var lang = localStorage.getItem(this.lsKey);\n if (lang === null || lang === undefined) {\n console.warn(\"Internal Error: User language information has not been set. Returning default...\");\n return this.getDefaultLang();\n }\n return lang;\n };\n LanguageService.prototype.getDefaultLang = function () {\n return this.defaultLang;\n };\n LanguageService.prototype.registerLanguageChangeListener = function (listener) {\n this.listeners.push(listener);\n };\n return LanguageService;\n}());\nexport { LanguageService };\n","var LanguageServiceNoLS = /** @class */ (function () {\n function LanguageServiceNoLS(lang) {\n this.lang = lang;\n this.listeners = [];\n }\n LanguageServiceNoLS.prototype.setupListener = function () { };\n LanguageServiceNoLS.prototype.notifyChange = function () {\n this.listeners.forEach(function (l) { return l(); });\n };\n LanguageServiceNoLS.prototype.setLang = function (lang) {\n this.lang = lang;\n this.notifyChange();\n };\n LanguageServiceNoLS.prototype.getLang = function () {\n return this.lang;\n };\n LanguageServiceNoLS.prototype.getDefaultLang = function () {\n return this.lang;\n };\n LanguageServiceNoLS.prototype.registerLanguageChangeListener = function (listener) {\n this.listeners.push(listener);\n };\n return LanguageServiceNoLS;\n}());\nexport { LanguageServiceNoLS };\n","import { StringTypes } from './StringTypes';\nvar LocalizedStrings = /** @class */ (function () {\n function LocalizedStrings(service, i18nData, listenToChange) {\n if (listenToChange === void 0) { listenToChange = false; }\n var _this = this;\n this.service = service;\n this.i18nData = i18nData;\n this.listenToChange = listenToChange;\n this.document = document;\n if (this.listenToChange) {\n service.registerLanguageChangeListener(function () {\n _this.updateTagText();\n });\n }\n }\n LocalizedStrings.prototype.getString = function (id, type) {\n var i18nObj = this.i18nData[this.service.getLang()];\n if (!!!i18nObj) {\n console.warn(\"Internal Error. The language set at ivprog.lang is not valid: \" + this.service.getLang());\n i18nObj = this.i18nData[this.service.getDefaultLang()];\n }\n if (!!!i18nObj[type]) {\n return \"{MISSING_I18N_TYPE_IDENTIFIER}\";\n }\n else if (!!!i18nObj[type][id]) {\n return \"{MISSING_I18N_IDENTIFIER}\";\n }\n else {\n return i18nObj[type][id];\n }\n };\n LocalizedStrings.prototype.getOR = function () {\n return this.getUI('join_or');\n };\n LocalizedStrings.prototype.getError = function (id, context) {\n if (context === void 0) { context = []; }\n var text = this.getString(id, StringTypes.ERROR);\n return this.processString(text, context);\n };\n LocalizedStrings.prototype.getMessage = function (id, context) {\n if (context === void 0) { context = []; }\n var text = this.getString(id, StringTypes.MESSAGE);\n return this.processString(text, context);\n };\n LocalizedStrings.prototype.getUI = function (id, context) {\n if (context === void 0) { context = []; }\n var text = this.getString(id, StringTypes.UI);\n return this.processString(text, context);\n };\n LocalizedStrings.prototype.processString = function (text, context) {\n for (var i = 0; i < context.length; i++) {\n var v = context[i];\n text = text.replace('\\$' + i, v);\n }\n return text;\n };\n LocalizedStrings.prototype.updateTagText = function (func) {\n var _this = this;\n if (func === void 0) { func = null; }\n if (this.document !== null) {\n var list = this.document.querySelectorAll(\"data.i18n\");\n list.forEach(function (node) {\n if (func === null) {\n node.innerHTML = _this.processTagTex(node.getAttribute(\"value\"));\n }\n else {\n node.innerHTML = func(node.getAttribute(\"value\"));\n }\n });\n }\n };\n LocalizedStrings.prototype.processTagTex = function (text) {\n if (text === null) {\n return \"<Invalid i18n identifier>\";\n }\n var opts = text.split(':');\n var type = opts[0].toLowerCase();\n var id = opts[1];\n if (StringTypes.ERROR === type) {\n return this.getError(id);\n }\n else if (StringTypes.MESSAGE === type) {\n return this.getMessage(id);\n }\n else if (StringTypes.UI === type) {\n return this.getUI(id);\n }\n else {\n console.warn(\" A string has been passed to the i18n helper function that was not in the form type:id -> \" + text);\n return this.getString(id, type);\n }\n };\n return LocalizedStrings;\n}());\nexport { LocalizedStrings };\n","export var StringTypes;\n(function (StringTypes) {\n StringTypes[\"ERROR\"] = \"error\";\n StringTypes[\"MESSAGE\"] = \"message\";\n StringTypes[\"UI\"] = \"ui\";\n})(StringTypes || (StringTypes = {}));\n","import { LanguageService } from \"./LanguageService\";\nimport { LocalizedStrings } from \"./LocalizedStrings\";\nimport { StringTypes } from \"./StringTypes\";\nimport { LanguageServiceNoLS } from \"./LanguageServiceNoLS\";\nexport default {\n LanguageService: LanguageService,\n LanguageServiceNoLS: LanguageServiceNoLS,\n LocalizedStrings: LocalizedStrings,\n StringTypes: StringTypes\n};\n","/**\n * DEVELOPED BY\n * GIL LOPES BUENO\n * gilbueno.mail@gmail.com\n *\n * WORKS WITH:\n * IE8*, IE 9+, FF 4+, SF 5+, WebKit, CH 7+, OP 12+, BESEN, Rhino 1.7+\n * For IE8 (and other legacy browsers) WatchJS will use dirty checking \n *\n * FORK:\n * https://github.com/melanke/Watch.JS\n *\n * LICENSE: MIT\n */\n\n\"use strict\";\n(function (factory) {\n if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like enviroments that support module.exports,\n // like Node.\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else {\n // Browser globals\n window.WatchJS = factory();\n window.watch = window.WatchJS.watch;\n window.unwatch = window.WatchJS.unwatch;\n window.callWatchers = window.WatchJS.callWatchers;\n }\n}(function () {\n\n var WatchJS = {\n noMore: false, // use WatchJS.suspend(obj) instead\n useDirtyCheck: false, // use only dirty checking to track changes.\n preserveExistingSetters: false\n },\n lengthsubjects = [];\n \n var dirtyChecklist = [];\n var pendingChanges = []; // used coalesce changes from defineProperty and __defineSetter__\n \n var supportDefineProperty = false;\n try {\n supportDefineProperty = Object.defineProperty && Object.defineProperty({},'x', {});\n } catch(ex) { /* not supported */ }\n\n var isFunction = function (functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) == '[object Function]';\n };\n\n var isInt = function (x) {\n return x % 1 === 0;\n };\n\n var isArray = function(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n\n var isObject = function(obj) {\n return {}.toString.apply(obj) === '[object Object]';\n };\n \n var getObjDiff = function(a, b){\n var aplus = [],\n bplus = [];\n\n if(!(typeof a == \"string\") && !(typeof b == \"string\")){\n\n if (isArray(a) && b) {\n for (var i=0; i<a.length; i++) {\n if (b[i] === undefined) aplus.push(i);\n }\n } else {\n for(var i in a){\n if (a.hasOwnProperty(i)) {\n if(b && !b.hasOwnProperty(i)) {\n aplus.push(i);\n }\n }\n }\n }\n\n if (isArray(b) && a) {\n for (var j=0; j<b.length; j++) {\n if (a[j] === undefined) bplus.push(j);\n }\n } else {\n for(var j in b){\n if (b.hasOwnProperty(j)) {\n if(a && !a.hasOwnProperty(j)) {\n bplus.push(j);\n }\n }\n }\n }\n }\n\n return {\n added: aplus,\n removed: bplus\n }\n };\n\n var clone = function(obj){\n\n if (null == obj || \"object\" != typeof obj) {\n return obj;\n }\n\n var copy = obj.constructor();\n\n for (var attr in obj) {\n copy[attr] = obj[attr];\n }\n\n return copy; \n\n }\n\n var getExistingSetter = function (obj, propName) {\n if (WatchJS.preserveExistingSetters) {\n var existing = Object.getOwnPropertyDescriptor(obj, propName);\n return existing.set;\n }\n\n return undefined;\n }\n\n var defineGetAndSet = function (obj, propName, getter, setter) {\n try {\n var existingSetter = getExistingSetter(obj, propName);\n Object.defineProperty(obj, propName, {\n get: getter,\n set: function(value) {\n setter.call(this, value, true); // coalesce changes\n if (existingSetter) {\n existingSetter(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n }\n catch(e1) {\n try{\n Object.prototype.__defineGetter__.call(obj, propName, getter);\n Object.prototype.__defineSetter__.call(obj, propName, function(value) {\n setter.call(this,value,true); // coalesce changes\n });\n }\n catch(e2) {\n observeDirtyChanges(obj,propName,setter);\n //throw new Error(\"watchJS error: browser not supported :/\")\n }\n }\n\n };\n\n var defineProp = function (obj, propName, value) {\n try {\n Object.defineProperty(obj, propName, {\n enumerable: false,\n configurable: true,\n writable: false,\n value: value\n });\n } catch(error) {\n obj[propName] = value;\n }\n };\n\n var observeDirtyChanges = function(obj,propName,setter) {\n dirtyChecklist[dirtyChecklist.length] = {\n prop: propName,\n object: obj,\n orig: clone(obj[propName]),\n callback: setter\n } \n }\n \n var watch = function () {\n\n if (isFunction(arguments[1])) {\n watchAll.apply(this, arguments);\n } else if (isArray(arguments[1])) {\n watchMany.apply(this, arguments);\n } else {\n watchOne.apply(this, arguments);\n }\n\n };\n\n\n var watchAll = function (obj, watcher, level, addNRemove) {\n\n if ((typeof obj == \"string\") || (!(obj instanceof Object) && !isArray(obj))) { //accepts only objects and array (not string)\n return;\n }\n\n if(isArray(obj)) {\n defineWatcher(obj, \"__watchall__\", watcher, level); // watch all changes on the array\n if (level===undefined||level > 0) {\n for (var prop = 0; prop < obj.length; prop++) { // watch objects in array\n watchAll(obj[prop],watcher,level, addNRemove);\n }\n }\n } \n else {\n var prop,props = [];\n for (prop in obj) { //for each attribute if obj is an object\n if (prop == \"$val\" || (!supportDefineProperty && prop === 'watchers')) {\n continue;\n }\n\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n props.push(prop); //put in the props\n }\n }\n watchMany(obj, props, watcher, level, addNRemove); //watch all items of the props\n }\n\n\n if (addNRemove) {\n pushToLengthSubjects(obj, \"$$watchlengthsubjectroot\", watcher, level);\n }\n };\n\n\n var watchMany = function (obj, props, watcher, level, addNRemove) {\n\n if ((typeof obj == \"string\") || (!(obj instanceof Object) && !isArray(obj))) { //accepts only objects and array (not string)\n return;\n }\n\n for (var i=0; i<props.length; i++) { //watch each property\n var prop = props[i];\n watchOne(obj, prop, watcher, level, addNRemove);\n }\n\n };\n\n var watchOne = function (obj, prop, watcher, level, addNRemove) {\n if ((typeof obj == \"string\") || (!(obj instanceof Object) && !isArray(obj))) { //accepts only objects and array (not string)\n return;\n }\n\n if(isFunction(obj[prop])) { //dont watch if it is a function\n return;\n }\n if(obj[prop] != null && (level === undefined || level > 0)){\n watchAll(obj[prop], watcher, level!==undefined? level-1 : level); //recursively watch all attributes of this\n }\n\n defineWatcher(obj, prop, watcher, level);\n\n if(addNRemove && (level === undefined || level > 0)){\n pushToLengthSubjects(obj, prop, watcher, level);\n }\n\n };\n\n var unwatch = function () {\n\n if (isFunction(arguments[1])) {\n unwatchAll.apply(this, arguments);\n } else if (isArray(arguments[1])) {\n unwatchMany.apply(this, arguments);\n } else {\n unwatchOne.apply(this, arguments);\n }\n\n };\n\n var unwatchAll = function (obj, watcher) {\n\n if (obj instanceof String || (!(obj instanceof Object) && !isArray(obj))) { //accepts only objects and array (not string)\n return;\n }\n\n if (isArray(obj)) {\n var props = ['__watchall__'];\n for (var prop = 0; prop < obj.length; prop++) { //for each item if obj is an array\n props.push(prop); //put in the props\n }\n unwatchMany(obj, props, watcher); //watch all itens of the props\n } else {\n var unwatchPropsInObject = function (obj2) {\n var props = [];\n for (var prop2 in obj2) { //for each attribute if obj is an object\n if (obj2.hasOwnProperty(prop2)) {\n if (obj2[prop2] instanceof Object) {\n unwatchPropsInObject(obj2[prop2]); //recurs into object props\n } else {\n props.push(prop2); //put in the props\n }\n }\n }\n unwatchMany(obj2, props, watcher); //unwatch all of the props\n };\n unwatchPropsInObject(obj);\n }\n };\n\n\n var unwatchMany = function (obj, props, watcher) {\n\n for (var prop2 in props) { //watch each attribute of \"props\" if is an object\n if (props.hasOwnProperty(prop2)) {\n unwatchOne(obj, props[prop2], watcher);\n }\n }\n };\n\n var timeouts = [],\n timerID = null;\n function clearTimerID() {\n timerID = null;\n for(var i=0; i< timeouts.length; i++) {\n timeouts[i]();\n }\n timeouts.length = 0;\n }\n var getTimerID= function () {\n if (!timerID) {\n timerID = setTimeout(clearTimerID);\n }\n return timerID;\n }\n var registerTimeout = function(fn) { // register function to be called on timeout\n if (timerID==null) getTimerID();\n timeouts[timeouts.length] = fn;\n }\n \n // Track changes made to an array, object or an object's property \n // and invoke callback with a single change object containing type, value, oldvalue and array splices\n // Syntax: \n // trackChange(obj, callback, recursive, addNRemove)\n // trackChange(obj, prop, callback, recursive, addNRemove)\n var trackChange = function() {\n var fn = (isFunction(arguments[2])) ? trackProperty : trackObject ;\n fn.apply(this,arguments);\n }\n\n // track changes made to an object and invoke callback with a single change object containing type, value and array splices\n var trackObject= function(obj, callback, recursive, addNRemove) {\n var change = null,lastTimerID = -1;\n var isArr = isArray(obj);\n var level,fn = function(prop, action, newValue, oldValue) {\n var timerID = getTimerID();\n if (lastTimerID!==timerID) { // check if timer has changed since last update\n lastTimerID = timerID;\n change = {\n type: 'update'\n }\n change['value'] = obj;\n change['splices'] = null;\n registerTimeout(function() {\n callback.call(this,change);\n change = null;\n });\n }\n // create splices for array changes\n if (isArr && obj === this && change !== null) { \n if (action==='pop'||action==='shift') {\n newValue = [];\n oldValue = [oldValue];\n }\n else if (action==='push'||action==='unshift') {\n newValue = [newValue];\n oldValue = [];\n }\n else if (action!=='splice') { \n return; // return here - for reverse and sort operations we don't need to return splices. a simple update will do\n }\n if (!change.splices) change.splices = [];\n change.splices[change.splices.length] = {\n index: prop,\n deleteCount: oldValue ? oldValue.length : 0,\n addedCount: newValue ? newValue.length : 0,\n added: newValue,\n deleted: oldValue\n };\n }\n\n } \n level = (recursive==true) ? undefined : 0; \n watchAll(obj,fn, level, addNRemove);\n }\n \n // track changes made to the property of an object and invoke callback with a single change object containing type, value, oldvalue and splices\n var trackProperty = function(obj,prop,callback,recursive, addNRemove) { \n if (obj && prop) {\n watchOne(obj,prop,function(prop, action, newvalue, oldvalue) {\n var change = {\n type: 'update'\n }\n change['value'] = newvalue;\n change['oldvalue'] = oldvalue;\n if (recursive && isObject(newvalue)||isArray(newvalue)) {\n trackObject(newvalue,callback,recursive, addNRemove);\n } \n callback.call(this,change);\n },0)\n \n if (recursive && isObject(obj[prop])||isArray(obj[prop])) {\n trackObject(obj[prop],callback,recursive, addNRemove);\n } \n }\n }\n \n \n var defineWatcher = function (obj, prop, watcher, level) {\n var newWatcher = false;\n var isArr = isArray(obj);\n \n if (!obj.watchers) {\n defineProp(obj, \"watchers\", {});\n if (isArr) {\n // watch array functions\n watchFunctions(obj, function(index,action,newValue, oldValue) {\n addPendingChange(obj, index, action,newValue, oldValue);\n if (level !== 0 && newValue && (isObject(newValue) || isArray(newValue))) {\n var i,n, ln, wAll, watchList = obj.watchers[prop];\n if ((wAll = obj.watchers['__watchall__'])) {\n watchList = watchList ? watchList.concat(wAll) : wAll;\n }\n ln = watchList ? watchList.length : 0;\n for (i = 0; i<ln; i++) {\n if (action!=='splice') {\n watchAll(newValue, watchList[i], (level===undefined)?level:level-1);\n }\n else {\n // watch spliced values\n for(n=0; n < newValue.length; n++) {\n watchAll(newValue[n], watchList[i], (level===undefined)?level:level-1);\n }\n }\n }\n }\n });\n }\n }\n\n if (!obj.watchers[prop]) {\n obj.watchers[prop] = [];\n if (!isArr) newWatcher = true;\n }\n\n for (var i=0; i<obj.watchers[prop].length; i++) {\n if(obj.watchers[prop][i] === watcher){\n return;\n }\n }\n\n obj.watchers[prop].push(watcher); //add the new watcher to the watchers array\n\n if (newWatcher) {\n var val = obj[prop]; \n var getter = function () {\n return val; \n };\n\n var setter = function (newval, delayWatcher) {\n var oldval = val;\n val = newval; \n if (level !== 0 \n && obj[prop] && (isObject(obj[prop]) || isArray(obj[prop]))\n && !obj[prop].watchers) {\n // watch sub properties\n var i,ln = obj.watchers[prop].length; \n for(i=0; i<ln; i++) {\n watchAll(obj[prop], obj.watchers[prop][i], (level===undefined)?level:level-1);\n }\n }\n\n //watchFunctions(obj, prop);\n \n if (isSuspended(obj, prop)) {\n resume(obj, prop);\n return;\n }\n\n if (!WatchJS.noMore){ // this does not work with Object.observe\n //if (JSON.stringify(oldval) !== JSON.stringify(newval)) {\n if (oldval !== newval) {\n if (!delayWatcher) {\n callWatchers(obj, prop, \"set\", newval, oldval);\n }\n else {\n addPendingChange(obj, prop, \"set\", newval, oldval);\n }\n WatchJS.noMore = false;\n }\n }\n };\n\n if (WatchJS.useDirtyCheck) {\n observeDirtyChanges(obj,prop,setter);\n }\n else {\n defineGetAndSet(obj, prop, getter, setter);\n }\n }\n\n };\n\n var callWatchers = function (obj, prop, action, newval, oldval) {\n if (prop !== undefined) {\n var ln, wl, watchList = obj.watchers[prop];\n if ((wl = obj.watchers['__watchall__'])) {\n watchList = watchList ? watchList.concat(wl) : wl;\n }\n ln = watchList ? watchList.length : 0;\n for (var wr=0; wr< ln; wr++) {\n watchList[wr].call(obj, prop, action, newval, oldval);\n }\n } else {\n for (var prop in obj) {//call all\n if (obj.hasOwnProperty(prop)) {\n callWatchers(obj, prop, action, newval, oldval);\n }\n }\n }\n };\n\n var methodNames = ['pop', 'push', 'reverse', 'shift', 'sort', 'slice', 'unshift', 'splice'];\n var defineArrayMethodWatcher = function (obj, original, methodName, callback) {\n defineProp(obj, methodName, function () {\n var index = 0;\n var i,newValue, oldValue, response; \n // get values before splicing array \n if (methodName === 'splice') {\n var start = arguments[0];\n var end = start + arguments[1];\n oldValue = obj.slice(start,end);\n newValue = [];\n for(i=2;i<arguments.length;i++) {\n newValue[i-2] = arguments[i];\n }\n index = start;\n } \n else {\n newValue = arguments.length > 0 ? arguments[0] : undefined;\n } \n\n response = original.apply(obj, arguments);\n if (methodName !== 'slice') {\n if (methodName === 'pop') {\n oldValue = response;\n index = obj.length;\n }\n else if (methodName === 'push') {\n index = obj.length-1;\n }\n else if (methodName === 'shift') {\n oldValue = response;\n }\n else if (methodName !== 'unshift' && newValue===undefined) {\n newValue = response;\n }\n callback.call(obj, index, methodName,newValue, oldValue)\n }\n return response;\n });\n };\n\n var watchFunctions = function(obj, callback) {\n\n if (!isFunction(callback) || !obj || (obj instanceof String) || (!isArray(obj))) {\n return;\n }\n\n for (var i = methodNames.length, methodName; i--;) {\n methodName = methodNames[i];\n defineArrayMethodWatcher(obj, obj[methodName], methodName, callback);\n }\n\n };\n\n var unwatchOne = function (obj, prop, watcher) {\n if (prop) {\n if (obj.watchers && obj.watchers[prop]) {\n if (watcher === undefined) {\n delete obj.watchers[prop]; // remove all property watchers\n }\n else {\n for (var i = 0; i < obj.watchers[prop].length; i++) {\n var w = obj.watchers[prop][i];\n if (w == watcher) {\n obj.watchers[prop].splice(i, 1);\n }\n }\n }\n }\n } else {\n delete obj.watchers;\n }\n\n removeFromLengthSubjects(obj, prop, watcher);\n removeFromDirtyChecklist(obj, prop);\n };\n \n // suspend watchers until next update cycle\n var suspend = function(obj, prop) {\n if (obj.watchers) {\n var name = '__wjs_suspend__'+(prop!==undefined ? prop : '');\n obj.watchers[name] = true;\n }\n }\n \n var isSuspended = function(obj, prop) {\n return obj.watchers \n && (obj.watchers['__wjs_suspend__'] || \n obj.watchers['__wjs_suspend__'+prop]);\n }\n \n // resumes preivously suspended watchers\n var resume = function(obj, prop) {\n registerTimeout(function() {\n delete obj.watchers['__wjs_suspend__'];\n delete obj.watchers['__wjs_suspend__'+prop];\n })\n }\n\n var pendingTimerID = null;\n var addPendingChange = function(obj,prop, mode, newval, oldval) {\n pendingChanges[pendingChanges.length] = {\n obj:obj,\n prop: prop,\n mode: mode,\n newval: newval,\n oldval: oldval\n };\n if (pendingTimerID===null) {\n pendingTimerID = setTimeout(applyPendingChanges);\n }\n };\n \n \n var applyPendingChanges = function() {\n // apply pending changes\n var change = null;\n pendingTimerID = null;\n for(var i=0;i < pendingChanges.length;i++) {\n change = pendingChanges[i];\n callWatchers(change.obj, change.prop, change.mode, change.newval, change.oldval);\n }\n if (change) {\n pendingChanges = [];\n change = null;\n } \n }\n\n var loop = function(){\n\n // check for new or deleted props\n for(var i=0; i<lengthsubjects.length; i++) {\n\n var subj = lengthsubjects[i];\n\n if (subj.prop === \"$$watchlengthsubjectroot\") {\n\n var difference = getObjDiff(subj.obj, subj.actual);\n\n if(difference.added.length || difference.removed.length){\n if(difference.added.length){\n watchMany(subj.obj, difference.added, subj.watcher, subj.level - 1, true);\n }\n\n subj.watcher.call(subj.obj, \"root\", \"differentattr\", difference, subj.actual);\n }\n subj.actual = clone(subj.obj);\n\n\n } else {\n\n var difference = getObjDiff(subj.obj[subj.prop], subj.actual);\n\n if(difference.added.length || difference.removed.length){\n if(difference.added.length){\n for (var j=0; j<subj.obj.watchers[subj.prop].length; j++) {\n watchMany(subj.obj[subj.prop], difference.added, subj.obj.watchers[subj.prop][j], subj.level - 1, true);\n }\n }\n\n callWatchers(subj.obj, subj.prop, \"differentattr\", difference, subj.actual);\n }\n\n subj.actual = clone(subj.obj[subj.prop]);\n\n }\n\n }\n \n // start dirty check\n var n, value;\n if (dirtyChecklist.length > 0) {\n for (var i = 0; i < dirtyChecklist.length; i++) {\n n = dirtyChecklist[i];\n value = n.object[n.prop];\n if (!compareValues(n.orig, value)) {\n n.orig = clone(value);\n n.callback(value);\n }\n }\n }\n\n };\n\n var compareValues = function(a,b) {\n var i, state = true;\n if (a!==b) {\n if (isObject(a)) {\n for(i in a) {\n if (!supportDefineProperty && i==='watchers') continue;\n if (a[i]!==b[i]) {\n state = false;\n break;\n };\n }\n }\n else {\n state = false;\n }\n }\n return state;\n }\n \n var pushToLengthSubjects = function(obj, prop, watcher, level){\n\n var actual;\n\n if (prop === \"$$watchlengthsubjectroot\") {\n actual = clone(obj);\n } else {\n actual = clone(obj[prop]);\n }\n\n lengthsubjects.push({\n obj: obj,\n prop: prop,\n actual: actual,\n watcher: watcher,\n level: level\n });\n };\n\n var removeFromLengthSubjects = function(obj, prop, watcher){\n for (var i=0; i<lengthsubjects.length; i++) {\n var subj = lengthsubjects[i];\n\n if (subj.obj == obj) {\n if (!prop || subj.prop == prop) {\n if (!watcher || subj.watcher == watcher) {\n // if we splice off one item at position i\n // we need to decrement i as the array is one item shorter\n // so when we increment i in the loop statement we\n // will land at the correct index.\n // if it's not decremented, you won't delete all length subjects\n lengthsubjects.splice(i--, 1);\n }\n }\n }\n }\n\n };\n \n var removeFromDirtyChecklist = function(obj, prop){\n var notInUse;\n for (var i=0; i<dirtyChecklist.length; i++) {\n var n = dirtyChecklist[i];\n var watchers = n.object.watchers;\n notInUse = (\n n.object == obj \n && (!prop || n.prop == prop)\n && watchers\n && (!prop || !watchers[prop] || watchers[prop].length == 0 )\n );\n if (notInUse) {\n // we use the same syntax as in removeFromLengthSubjects\n dirtyChecklist.splice(i--, 1);\n }\n }\n\n }; \n\n setInterval(loop, 50);\n\n WatchJS.watch = watch;\n WatchJS.unwatch = unwatch;\n WatchJS.callWatchers = callWatchers;\n WatchJS.suspend = suspend; // suspend watchers \n WatchJS.onChange = trackChange; // track changes made to object or it's property and return a single change object\n\n return WatchJS;\n\n}));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n"],"sourceRoot":""}
|