{"version":3,"sources":["webpack:///./node_modules/bluebird/js/browser/bluebird.js-exposed","webpack:///./node_modules/jquery/dist/jquery.js-exposed?28a1","webpack:///./node_modules/jstree/dist/jstree.js","webpack:///./node_modules/bluebird/js/browser/bluebird.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/jquery/dist/jquery.js-exposed","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/process/browser.js"],"names":["module","factory","$","undefined","jstree","instance_counter","ccp_node","ccp_mode","ccp_inst","themes_loaded","src","attr","document","window","version","defaults","plugins","path","indexOf","replace","idregex","root","create","el","options","tmp","core","opt","extend","each","i","k","plugin","data","init","destroy","off","id","this","_id","_cnt","_wrk","_data","themes","name","dots","icons","ellipsis","selected","last_error","working","worker_queue","focused","reference","needle","obj","tagName","nodeType","length","ignore","closest","inst","_model","fn","arg","is_method","args","Array","prototype","slice","call","arguments","result","instance","method","apply","isPlainObject","expr","pseudos","createPseudo","search","a","hasClass","strings","check_callback","error","noop","animation","multiple","url","dir","stripes","variant","responsive","expand_selected_onload","worker","force_text","dblclick_toggle","deco","opts","Child","changed","force_full_redraw","redraw_timeout","default_state","loaded","opened","disabled","parent","parents","children","children_d","state","element","addClass","settings","ready","rtl","css","bind","trigger","original_container_html","find","clone","addBack","contents","filter","nodeValue","test","remove","html","get_string","li_height","get_container_ul","first","outerHeight","node","_create_prototype_node","load_node","keep_html","URL","revokeObjectURL","empty","teardown","_temp1","_temp2","_node","createElement","setAttribute","className","appendChild","unbind","removeClass","removeData","word","tout","was_click","on","e","target","toLowerCase","selection","getSelection","sel","removeAllRanges","collapse","proxy","preventDefault","Date","toggle_node","currentTarget","activeElement","focus","activate_node","which","shiftKey","ctrlKey","altKey","metaKey","o","type","is_open","close_node","get_parent","get_node","get_prev_dom","is_closed","open_node","_firstChild","get_next_dom","open_all","last","edit","status","setTimeout","j","concat","vakata","array_unique","clearTimeout","chr","String","fromCharCode","col","ind","index","end","v","text","RegExp","charAt","s","set_theme","set_theme_variant","mouseleave","not","mouseenter","act","hover_node","dehover_node","ev","triggerHandler","get_container","key","isFunction","dom","firstChild","nextSibling","_nextSibling","_previousSibling","previousSibling","as_dom","ex","get_path","glue","ids","p","push","get_text","reverse","join","strict","offsetHeight","parentsUntil","nextAll","lastChild","parentNode","get_children_dom","is_parent","is_loaded","is_loading","loading","is_leaf","callback","l","c","isArray","_load_nodes","array_filter","inArray","failed","_load_node","m","has_children","hidden","nodes","is_callback","force_reload","r","done","load_all","to_load","t","notTextOrCommentNode","d","parseHTML","ajax","x","getResponseHeader","_append_json_data","_append_html_data","JSON","stringify","fail","f","_node_changed","cb","dat","is","par","chd","dpc","_parse_model_from_html","redraw","force_processing","parse","w","func","rslt","add","df","t_id","t_cnt","parse_flat","ps","unshift","tid","toString","icon","li_attr","a_attr","href","original","hasOwnProperty","parse_nest","postMessage","cnt","mod","Blob","Worker","createObjectURL","onmessage","terminate","shift","attributes","trim","_parse_model_from_flat_json","_parse_model_from_json","_redraw","fe","redraw_node","append","full","draw_children","deep","force_render","old","last_sibling","querySelector","substr","getElementById","cloneNode","childNodes","style","backgroundImage","backgroundPosition","backgroundSize","createTextNode","innerHTML","insertBefore","scrollTop","scrollLeft","t1","t2","stop","slideDown","display","ok","_open_to","slideUp","original_obj","_this","close_all","get","is_disabled","enable_node","disable_node","is_hidden","hide_node","skip_redraw","show_node","hide_all","show_all","last_clicked","deselect_node","select_node","is_selected","deselect_all","supress_event","prevent_open","array_remove_item","select_all","get_selected","map","get_top_selected","get_bottom_selected","get_state","open","set_state","initial_selection","sort","scroll","left","top","isEmptyObject","refresh","skip_loading","forget_state","refresh_node","set_id","set_text","val","get_json","flat","get_icon","no_data","no_state","no_li_attr","no_a_attr","no_id","no_children","create_node","pos","match","check","rename_node","delete_node","lft","array_remove","chk","more","chc","is_multi","functions","move_node","origin","old_par","old_pos","new_par","old_ins","copy_node","cut","copy","get_buffer","can_paste","paste","clear_buffer","default_text","h1","h2","cancel","width","appendTo","stopImmediatePropagation","nv","replaceWith","value","blur","Math","min","fontFamily","fontSize","fontWeight","fontStyle","fontStretch","fontVariant","letterSpacing","wordSpacing","select","one","theme_name","theme_url","get_theme","variant_name","get_theme_variant","show_stripes","hide_stripes","toggle_stripes","show_dots","hide_dots","toggle_dots","show_icons","hide_icons","toggle_icons","show_ellipsis","hide_ellipsis","toggle_ellipsis","set_icon","hide_icon","removeAttr","show_icon","with_values","array","from","splice","item","b","deselected","drg","elm","_i","checkbox","visible","three_state","whole_node","keep_selected_style","cascade","tie_selection","cascade_to_disabled","cascade_to_hidden","uto","_undetermined","checked","cur","selectedIds","_cascade_new_checked_state","forEach","undetermined","allIds","old_parent","tt","tmp2","checkbox_disabled","show_checkboxes","checkboxes","hide_checkboxes","toggle_checkboxes","is_undetermined","disable_checkbox","enable_checkbox","is_checked","uncheck_node","check_node","checkedState","self","selectedNodeIds","selectedChildrenIds","selectedChildIds","get_checked_descendants","childId","check_all","uncheck_all","get_checked","get_top_checked","get_bottom_checked","res","conditionalselect","contextmenu","show_at_node","items","new_node","ey","last_ts","cto","show_contextmenu","pageX","pageY","context","hide","originalEvent","changedTouches","clientX","clientY","abs","y","offset","_show_contextmenu","cls","show","right_to_left","vakata_context","position_x","position_y","is_visible","hide_onmouseleave","_trigger","event_name","_execute","_disabled","action","_parse","str","sep","separator_before","_class","shortcut","title","label","shortcut_label","submenu","separator_after","_show_submenu","xl","outerWidth","h","height","dw","dh","position","detach","to","contains","relatedTarget","siblings","prevAll","click","dnd","open_timeout","is_draggable","check_while_dragging","always_copy","inside_pos","drag_selection","touch","large_drop_target","large_drag_target","use_html5","mlt","txt","escape","start","lastmv","laster","lastev","opento","marker","isDifferentNode","event","op","pr","ip","tm","is_copy","pn","ins","ref","rel","helper","z","dataTransfer","dropEffect","_get","_clean","div","strip","vakata_dnd","is_down","is_drag","helper_w","init_x","init_y","scroll_l","scroll_t","scroll_e","scroll_i","is_touch","scroll_speed","scroll_proximity","helper_left","helper_top","threshold","threshold_touch","clearInterval","drag","_scroll","init_only","setInterval","elementFromPoint","pageXOffset","pageYOffset","unselectable","onselectstart","touchAction","msTouchAction","MozUserSelect","wh","ww","dt","dl","ht","hl","scrollHeight","scrollWidth","offsetWidth","parseInt","massload","toLoad","fuzzy","case_sensitive","show_only_matches","show_only_matches_children","close_opened_onclear","search_leaves_only","search_callback","opn","som","smc","hdn","skip_async","inside","clear_search","lastRequest","abort","caseSensitive","ii","isMatch","querySelectorAll","pattern","matchmask","pattern_alphabet","match_bitapScore","MATCH_LOCATION","location","MATCH_DISTANCE","distance","MATCH_THRESHOLD","patternLen","mask","accuracy","proximity","score","binMin","binMid","lastRd","finish","rd","charMatch","textLen","scoreThreshold","bestLoc","binMax","locations","lastIndexOf","floor","max","events","ttl","save_state","restore_state","st","storage","set","sec","clear_state","del","localStorage","setItem","getItem","removeItem","types","_delete_ids","get_rules","max_children","valid_children","max_depth","get_type","rules","set_type","old_type","old_icon","unique","duplicate","counter","n","wholerow","Event","registerElement","Object","proto","HTMLElement","createdCallback","getAttribute","define","exports","u","_dereq_","Error","code","1","Promise","SomePromiseArray","_SomePromiseArray","any","promises","ret","promise","setHowMany","setUnwrap","2","firstLineError","schedule","Queue","util","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","setScheduler","prev","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","process","stderr","write","stack","exit","throwLater","invokeLater","invoke","settlePromises","_settlePromises","_drainQueue","queue","_reset","3","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","resolve","4","bluebird","noConflict","5","cr","callerCache","getterCache","canEvaluate","caller","methodName","message","classString","TypeError","ensureMethod","pop","namedGetter","indexedGetter","isIdentifier","propertyName","getter","maybeGetter","getGetter","6","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","keys","instances","boundTo","predicateLoop","matchesPredicate","isObject","8","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","env","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","warn","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","config","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","hasLongStackTraces","fireDomEvent","CustomEvent","global","dispatchEvent","domEvent","detail","cancelable","createEvent","initCustomEvent","fireGlobalEvent","emit","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","reject","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","monitoring","_fireEvent","handler","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","line","isTraceLine","isInternalFrame","shouldIgnore","split","stackFramesAsArray","isSoft","console","log","localHandler","localEventFired","formatNonError","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","fileName","_promisesCreated","uncycle","inherits","stackToIndex","cycleEdgeNode","currentChildLength","stacks","current","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","err","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","info","deprecated","replacement","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","_value","11","PromiseReduce","reduce","PromiseAll","all","promiseAllThis","mapSeries","12","_TypeError","_RangeError","es5","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","constructor","CancellationError","TimeoutError","AggregateError","RangeError","methods","defineProperty","configurable","writable","enumerable","level","OperationalError","cause","indent","lines","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","names","getOwnPropertyNames","getPrototypeOf","propertyIsWritable","prop","descriptor","has","ObjectKeys","desc","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","then","lastly","tap","tapCatch","handlerOrPredicate","len","catchInstances","16","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","next","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","spread","18","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","isFinite","_init$","_init","values","_values","preservedValues","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","errors","APPLY","createContext","nodebackForPromise","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","toFastProperties","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","Map","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","size","extractEntry","PropertiesPromiseArray","entries","isMap","_isMap","props","castValue","entriesToMap","keyOffset","26","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","srcIndex","dst","dstIndex","arrayMove","27","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","toggleScheduled","div2","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","setImmediate","ProcessNextTick","nextTick","isRecentNode","nativePromise","navigator","standalone","cordova","classList","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","_initialized","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","count","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","handle","afterValue","delay","ms","successClear","failureClear","timeout","handleWrapper","afterTimeout","35","NULL","dispose","resources","iterator","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Parent","T","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","Function","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","rident","filledRange","prefix","isError","Symbol","ArrayFrom","itResult","it","hasEnvVariables","chrome","loadTimes","versions","Number","P","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","MessageChannel","port1","port2","documentElement","script","onreadystatechange","removeChild","random","source","addEventListener","attachEvent","task","clearImmediate","run","noGlobal","arr","getProto","class2type","hasOwn","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","head","toType","jQuery","selector","isArrayLike","jquery","toArray","num","pushStack","elems","merge","prevObject","elem","eq","even","grep","_elem","odd","copyIsArray","expando","isReady","Ctor","globalEval","makeArray","results","second","invert","callbackExpect","guid","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","list","whitespace","identifier","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","nonHex","high","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","nodeName","els","seed","nid","groups","newSelector","newContext","ownerDocument","exec","getElementsByTagName","getElementsByClassName","qsa","testContext","scope","toSelector","cssSupportsSelector","CSS","supports","qsaError","removeAttribute","cache","cacheLength","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","diff","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","selectors","relative","preFilter","excess","unquoted","nodeNameSelector","operator","what","_argument","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","hasFocus","tabIndex","selectedIndex","_matchIndexes","radio","file","password","image","submit","reset","tokens","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","_name","isXMLDoc","escapeSelector","until","truncate","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","rparentsprev","guaranteedUnique","sibling","targets","nextUntil","prevUntil","contentDocument","content","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","Callbacks","object","flag","createOptions","firing","memory","fired","locked","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Deferred","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","readyException","readyList","removeEventListener","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","noCloneChecked","option","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","ignored","wrap","attached","fragment","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","load","noBubble","beforeunload","isDefaultPrevented","defaultPrevented","timeStamp","now","isSimulated","bubbles","eventPhase","view","charCode","keyCode","buttons","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","prepend","before","after","replaceChild","prependTo","insertAfter","replaceAll","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","rboxStyle","rtrimCSS","curCSS","computed","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","setProperty","getBoundingClientRect","scrollboxSizeBuggy","margin","padding","border","expand","expanded","parts","propHooks","percent","eased","duration","step","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","animate","optall","doAnimation","stopQueue","timers","cssFn","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","time","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classNames","curValue","finalValue","toggleClass","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","isLocal","protocol","processData","contentType","accepts","json","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","rect","win","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","delegate","undelegate","hover","fnOver","fnOut","holdReady","hold","parseJSON","isNumeric","isNaN","_jQuery","_$","g","Timeout","clearFn","_clearFn","close","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","browser","argv","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask"],"mappings":"6EAAA,YAAAA,EAAA,kBAAqC,EAAQ,O,sCCA7C,YAAAA,EAAA,YAA+B,EAAQ,O,sCCAvC,WACC,SAAUC,GACV,aAEC,EAAO,CAAC,YAAkB,0BAAP,EAQnB,SAAUC,EAAGC;;;;;;;;;;;;;;AAkBd,GAAGD,EAAEE,OACJ,OAQD,IAAIC,EAAmB,EACtBC,GAAW,EACXC,GAAW,EACXC,GAAW,EACXC,EAAgB,GAChBC,EAAMR,EAAE,eAAeS,KAAK,OAC5BC,EAAWC,OAAOD,SAMnBV,EAAEE,OAAS,CAKVU,QAAU,QAKVC,SAAW,CAKVC,QAAU,IAMXA,QAAU,GACVC,KAAOP,IAA6B,IAAtBA,EAAIQ,QAAQ,KAAcR,EAAIS,QAAQ,YAAY,IAAM,GACtEC,QAAU,2CACVC,KAAO,KAURnB,EAAEE,OAAOkB,OAAS,SAAUC,EAAIC,GAC/B,IAAIC,EAAM,IAAIvB,EAAEE,OAAOsB,OAAOrB,GAC7BsB,EAAMH,EAYP,OAXAA,EAAUtB,EAAE0B,QAAO,EAAM,GAAI1B,EAAEE,OAAOW,SAAUS,GAC7CG,GAAOA,EAAIX,UACbQ,EAAQR,QAAUW,EAAIX,SAEvBd,EAAE2B,KAAKL,EAAQR,SAAS,SAAUc,EAAGC,GAC3B,SAAND,IACFL,EAAMA,EAAIO,OAAOD,EAAGP,EAAQO,QAG9B7B,EAAEqB,GAAIU,KAAK,SAAUR,GACrBA,EAAIS,KAAKX,EAAIC,GACNC,GAMRvB,EAAEE,OAAO+B,QAAU,WAClBjC,EAAE,kBAAkBE,OAAO,WAC3BF,EAAEU,GAAUwB,IAAI,YAQjBlC,EAAEE,OAAOsB,KAAO,SAAUW,GACzBC,KAAKC,IAAMF,EACXC,KAAKE,KAAO,EACZF,KAAKG,KAAO,KACZH,KAAKI,MAAQ,CACZhB,KAAO,CACNiB,OAAS,CACRC,MAAO,EACPC,MAAO,EACPC,OAAQ,EACRC,UAAW,GAEZC,SAAW,GACXC,WAAa,GACbC,SAAU,EACVC,aAAe,GACfC,QAAU,QAwBblD,EAAEE,OAAOiD,UAAY,SAAUC,GAC9B,IAAI7B,EAAM,KACT8B,EAAM,KAGP,IAFGD,IAAUA,EAAOjB,IAAQiB,EAAOE,SAAYF,EAAOG,WAAaH,EAASA,EAAOjB,KAE/EkB,IAAQA,EAAIG,OACf,IAAMH,EAAMrD,EAAEoD,GAAW,MAAOK,IAEjC,IAAIJ,IAAQA,EAAIG,OACf,IAAMH,EAAMrD,EAAE,IAAMoD,EAAOnC,QAAQjB,EAAEE,OAAOgB,QAAQ,SAAY,MAAOuC,IAcxE,OAZGJ,GAAOA,EAAIG,SAAWH,EAAMA,EAAIK,QAAQ,YAAYF,SAAWH,EAAMA,EAAItB,KAAK,WAChFR,EAAM8B,EAGNrD,EAAE,WAAW2B,MAAK,WACjB,IAAIgC,EAAO3D,EAAEoC,MAAML,KAAK,UACxB,GAAG4B,GAAQA,EAAKC,OAAO7B,KAAKqB,GAE3B,OADA7B,EAAMoC,GACC,KAIHpC,GA0BRvB,EAAE6D,GAAG3D,OAAS,SAAU4D,GAEvB,IAAIC,EAA4B,iBAARD,EACvBE,EAAQC,MAAMC,UAAUC,MAAMC,KAAKC,UAAW,GAC9CC,EAAU,KACX,SAAW,IAARR,IAAiB1B,KAAKoB,UACzBpB,KAAKT,MAAK,WAET,IAAI4C,EAAWvE,EAAEE,OAAOiD,UAAUf,MACjCoC,EAAST,GAAaQ,EAAWA,EAAST,GAAO,KAclD,GAZAQ,EAASP,GAAaS,EACrBA,EAAOC,MAAMF,EAAUP,GACvB,KAEGO,GAAaR,GAAcD,IAAQ7D,IAAaD,EAAE0E,cAAcZ,IACnE9D,EAAEE,OAAOkB,OAAOgB,KAAM0B,IAGlBS,IAAaR,IAAsB,IAARD,KAC/BQ,EAASC,IAAY,GAGR,OAAXD,GAAmBA,IAAWrE,EAChC,OAAO,KAIS,OAAXqE,GAAmBA,IAAWrE,EACpCqE,EAASlC,OAcXpC,EAAE2E,KAAKC,QAAQ1E,OAASF,EAAE2E,KAAKE,cAAa,SAASC,GACpD,OAAO,SAASC,GACf,OAAO/E,EAAE+E,GAAGC,SAAS,WACpBhF,EAAE+E,GAAGhD,KAAK,YAAc9B,MAQ3BD,EAAEE,OAAOW,SAASW,KAAO,CAmDxBO,MAAS,EAoBTkD,SAAY,EAoBZC,gBAAiB,EAKjBC,MAAUnF,EAAEoF,KAKZC,UAAa,IAKbC,UAAY,EAKZ7C,OAAW,CAKVC,MAAS,EAKT6C,KAAS,EAKTC,KAAS,EAKT7C,MAAS,EAKTC,OAAU,EAKVC,UAAY,EAKZ4C,SAAY,EAKZC,SAAY,EAKZC,YAAc,GAMfC,wBAAyB,EAKzBC,QAAS,EAKTC,YAAa,EAKbC,iBAAkB,GAEnB/F,EAAEE,OAAOsB,KAAK0C,UAAY,CASzBpC,OAAS,SAAUkE,EAAMC,GACxB,IAAIC,EAAQlG,EAAEE,OAAOY,QAAQkF,GAC7B,OAAGE,GACF9D,KAAKI,MAAMwD,GAAQ,GACnBE,EAAMhC,UAAY9B,KACX,IAAI8D,EAAMD,EAAM7D,OAEjBA,MAURJ,KAAO,SAAUX,EAAIC,GACpBc,KAAKwB,OAAS,CACb7B,KAAO,GACPoE,QAAU,GACVC,mBAAoB,EACpBC,gBAAiB,EACjBC,cAAgB,CACfC,QAAS,EACTC,QAAS,EACT1D,UAAW,EACX2D,UAAW,IAGbrE,KAAKwB,OAAO7B,KAAK/B,EAAEE,OAAOiB,MAAQ,CACjCgB,GAAKnC,EAAEE,OAAOiB,KACduF,OAAS,KACTC,QAAU,GACVC,SAAW,GACXC,WAAa,GACbC,MAAQ,CAAEP,QAAS,IAGpBnE,KAAK2E,QAAU/G,EAAEqB,GAAI2F,SAAS,iBAAmB5E,KAAKC,KACtDD,KAAK6E,SAAW3F,EAEhBc,KAAKI,MAAMhB,KAAK0F,OAAQ,EACxB9E,KAAKI,MAAMhB,KAAK+E,QAAS,EACzBnE,KAAKI,MAAMhB,KAAK2F,IAAyC,QAAlC/E,KAAK2E,QAAQK,IAAI,aACxChF,KAAK2E,QAAQ3E,KAAKI,MAAMhB,KAAK2F,IAAM,WAAa,eAAe,cAC/D/E,KAAK2E,QAAQtG,KAAK,OAAO,QACtB2B,KAAK6E,SAASzF,KAAK8D,UACrBlD,KAAK2E,QAAQtG,KAAK,wBAAwB,GAEvC2B,KAAK2E,QAAQtG,KAAK,aACrB2B,KAAK2E,QAAQtG,KAAK,WAAW,KAG9B2B,KAAKiF,OAMLjF,KAAKkF,QAAQ,QAEblF,KAAKI,MAAMhB,KAAK+F,wBAA0BnF,KAAK2E,QAAQS,KAAK,cAAcC,OAAM,GAChFrF,KAAKI,MAAMhB,KAAK+F,wBACdC,KAAK,MAAME,UACXC,WAAWC,QAAO,WAClB,OAAyB,IAAlBxF,KAAKmB,YAAoBnB,KAAKyF,WAAa,QAAQC,KAAK1F,KAAKyF,eAEpEE,SACF3F,KAAK2E,QAAQiB,KAAK,yEAA+E5F,KAAKC,IAApF,4NAAyTD,KAAK6F,WAAW,eAAiB,kBAC5W7F,KAAK2E,QAAQtG,KAAK,wBAAwB,IAAM2B,KAAKC,IAAM,YAC3DD,KAAKI,MAAMhB,KAAK0G,UAAY9F,KAAK+F,mBAAmBvB,SAAS,MAAMwB,QAAQC,eAAiB,GAC5FjG,KAAKI,MAAMhB,KAAK8G,KAAOlG,KAAKmG,yBAM5BnG,KAAKkF,QAAQ,WACblF,KAAKoG,UAAUxI,EAAEE,OAAOiB,OAOzBc,QAAU,SAAUwG,GAOnB,GADArG,KAAKkF,QAAQ,WACVlF,KAAKG,KACP,IACC5B,OAAO+H,IAAIC,gBAAgBvG,KAAKG,MAChCH,KAAKG,KAAO,KAEb,MAAOkB,IAEJgF,GAAarG,KAAK2E,QAAQ6B,QAC9BxG,KAAKyG,YAKNN,uBAAyB,WACxB,IAA0CO,EAAQC,EAA9CC,EAAQtI,EAASuI,cAAc,MAiBnC,OAhBAD,EAAME,aAAa,OAAQ,aAC3BJ,EAASpI,EAASuI,cAAc,MACzBE,UAAY,yBACnBL,EAAOI,aAAa,OAAQ,gBAC5BF,EAAMI,YAAYN,IAClBA,EAASpI,EAASuI,cAAc,MACzBE,UAAY,gBACnBL,EAAOI,aAAa,OAAO,KAC3BJ,EAAOI,aAAa,WAAW,OAC/BH,EAASrI,EAASuI,cAAc,MACzBE,UAAY,+BACnBJ,EAAOG,aAAa,OAAQ,gBAC5BJ,EAAOM,YAAYL,GACnBC,EAAMI,YAAYN,GAClBA,EAASC,EAAS,KAEXC,GAORH,SAAW,WACVzG,KAAKiH,SACLjH,KAAK2E,QACHuC,YAAY,UACZC,WAAW,UACX/B,KAAK,qBACJE,UACAjH,KAAK,SAAS,WAAc,OAAO2B,KAAK+G,UAAUlI,QAAQ,kBAAkB,OAC/EmB,KAAK2E,QAAU,MAOhBM,KAAO,WACN,IAAImC,EAAO,GACVC,EAAO,KACPC,EAAY,EACbtH,KAAK2E,QACH4C,GAAG,mBAAmB,SAAUC,GAC/B,GAAGA,EAAEC,OAAOvG,SAA8C,UAAnCsG,EAAEC,OAAOvG,QAAQwG,cAA6B,OAAO,EAC5E,GAAGpJ,EAASqJ,WAAarJ,EAASqJ,UAAUnB,MAC3ClI,EAASqJ,UAAUnB,aAGnB,GAAGjI,OAAOqJ,aAAc,CACvB,IAAIC,EAAMtJ,OAAOqJ,eACjB,IACCC,EAAIC,kBACJD,EAAIE,WACH,MAAO1G,SAIZkG,GAAG,mBAAoB3J,EAAEoK,OAAM,SAAUR,GACrCA,EAAEC,SAAWzH,KAAK2E,QAAQ,KAC5B6C,EAAES,iBACFX,GAAa,IAAKY,QAEjBlI,OACHuH,GAAG,mBAAoB,eAAe,SAAUC,GAC/CA,EAAES,oBAEHV,GAAG,eAAgB,cAAe3J,EAAEoK,OAAM,SAAUR,GACnDxH,KAAKmI,YAAYX,EAAEC,UACjBzH,OACHuH,GAAG,kBAAmB,iBAAkB3J,EAAEoK,OAAM,SAAUR,GACzD,GAAGA,EAAEC,OAAOvG,SAA8C,UAAnCsG,EAAEC,OAAOvG,QAAQwG,cAA6B,OAAO,EACzE1H,KAAK6E,SAASzF,KAAKuE,iBACrB3D,KAAKmI,YAAYX,EAAEC,UAElBzH,OACHuH,GAAG,eAAgB,iBAAkB3J,EAAEoK,OAAM,SAAUR,GACtDA,EAAES,iBACCT,EAAEY,gBAAkB9J,EAAS+J,eAAiBzK,EAAE4J,EAAEY,eAAeE,QACpEtI,KAAKuI,cAAcf,EAAEY,cAAeZ,KAClCxH,OACHuH,GAAG,iBAAkB,iBAAkB3J,EAAEoK,OAAM,SAAUR,GACxD,GAAGA,EAAEC,OAAOvG,SAA8C,UAAnCsG,EAAEC,OAAOvG,QAAQwG,cAA6B,OAAO,EAC5E,GAAe,KAAZF,EAAEgB,OAA4B,KAAZhB,EAAEgB,QAAiBhB,EAAEiB,UAAYjB,EAAEkB,SAAWlB,EAAEmB,QAAUnB,EAAEoB,SAAY,OAAO,EACpG,IAAIC,EAAI,KAKR,OAJG7I,KAAKI,MAAMhB,KAAK2F,MACH,KAAZyC,EAAEgB,MAAgBhB,EAAEgB,MAAQ,GACX,KAAZhB,EAAEgB,QAAgBhB,EAAEgB,MAAQ,KAE9BhB,EAAEgB,OACR,KAAK,GACDhB,EAAEkB,UACJlB,EAAEsB,KAAO,QACTlL,EAAE4J,EAAEY,eAAelD,QAAQsC,IAE5B,MACD,KAAK,GACJA,EAAEsB,KAAO,QACTlL,EAAE4J,EAAEY,eAAelD,QAAQsC,GAC3B,MACD,KAAK,GACJA,EAAES,iBACCjI,KAAK+I,QAAQvB,EAAEY,eACjBpI,KAAKgJ,WAAWxB,EAAEY,gBAGlBS,EAAI7I,KAAKiJ,WAAWzB,EAAEY,iBACdS,EAAE9I,KAAOnC,EAAEE,OAAOiB,MAAQiB,KAAKkJ,SAASL,GAAG,GAAMrE,SAAS,kBAAkB8D,QAErF,MACD,KAAK,GACJd,EAAES,kBACFY,EAAI7I,KAAKmJ,aAAa3B,EAAEY,iBAChBS,EAAEzH,QAAUyH,EAAErE,SAAS,kBAAkB8D,QACjD,MACD,KAAK,GACJd,EAAES,iBACCjI,KAAKoJ,UAAU5B,EAAEY,eACnBpI,KAAKqJ,UAAU7B,EAAEY,eAAe,SAAUS,GAAK7I,KAAKkJ,SAASL,GAAG,GAAMrE,SAAS,kBAAkB8D,WAEzFtI,KAAK+I,QAAQvB,EAAEY,iBACvBS,EAAI7I,KAAKkJ,SAAS1B,EAAEY,eAAe,GAAM5D,SAAS,oBAAoB,KAC9D5G,EAAEoC,KAAKsJ,YAAYT,IAAIrE,SAAS,kBAAkB8D,QAE3D,MACD,KAAK,GACJd,EAAES,kBACFY,EAAI7I,KAAKuJ,aAAa/B,EAAEY,iBAChBS,EAAEzH,QAAUyH,EAAErE,SAAS,kBAAkB8D,QACjD,MACD,KAAK,IACJtI,KAAKwJ,WACL,MACD,KAAK,GACJhC,EAAES,kBACFY,EAAI7I,KAAKsJ,YAAYtJ,KAAK+F,mBAAmB,MACrCnI,EAAEiL,GAAGrE,SAAS,kBAAkBgB,OAAO,YAAY8C,QAC3D,MACD,KAAK,GACJd,EAAES,iBACFjI,KAAK2E,QAAQS,KAAK,kBAAkBI,OAAO,YAAYiE,OAAOnB,QAC9D,MACD,KAAK,IACJd,EAAES,iBACFjI,KAAK0J,KAAKlC,EAAEY,kBAiBZpI,OACHuH,GAAG,mBAAoB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GACxCA,EAAKgK,SACJhK,EAAKuG,KAAKnG,KAAOnC,EAAEE,OAAOiB,MAASiB,KAAKI,MAAMhB,KAAK+E,SACrDnE,KAAKI,MAAMhB,KAAK+E,QAAS,EACtBnE,KAAKsJ,YAAYtJ,KAAK+F,mBAAmB,KAC3C/F,KAAK2E,QAAQtG,KAAK,wBAAwB2B,KAAKsJ,YAAYtJ,KAAK+F,mBAAmB,IAAIhG,IAOxFC,KAAKkF,QAAQ,WAEVlF,KAAKI,MAAMhB,KAAK0F,OACnB8E,WAAWhM,EAAEoK,OAAM,WAClB,GAAGhI,KAAK2E,UAAY3E,KAAK+F,mBAAmBX,KAAK,mBAAmBhE,OAAQ,CAE3E,GADApB,KAAKI,MAAMhB,KAAK0F,OAAQ,EACrB9E,KAAKI,MAAMhB,KAAKsB,SAASU,OAAQ,CACnC,GAAGpB,KAAK6E,SAASzF,KAAKoE,uBAAwB,CAC7C,IAAchE,EAAGqK,EAAb1K,EAAM,GACV,IAAIK,EAAI,EAAGqK,EAAI7J,KAAKI,MAAMhB,KAAKsB,SAASU,OAAQ5B,EAAIqK,EAAGrK,IACtDL,EAAMA,EAAI2K,OAAO9J,KAAKwB,OAAO7B,KAAKK,KAAKI,MAAMhB,KAAKsB,SAASlB,IAAI+E,SAGhE,IAAI/E,EAAI,EAAGqK,GADX1K,EAAMvB,EAAEmM,OAAOC,aAAa7K,IACTiC,OAAQ5B,EAAIqK,EAAGrK,IACjCQ,KAAKqJ,UAAUlK,EAAIK,IAAI,EAAO,GAGhCQ,KAAKkF,QAAQ,UAAW,CAAE,OAAW,QAAS,SAAalF,KAAKI,MAAMhB,KAAKsB,WAO5EV,KAAKkF,QAAQ,YAEZlF,MAAO,MAGVA,OAEHuH,GAAG,kBAAmB3J,EAAEoK,OAAM,SAAUR,GACvC,GAAGA,EAAEC,OAAOvG,SAA8C,UAAnCsG,EAAEC,OAAOvG,QAAQwG,cAA6B,OAAO,EACzEL,GAAQ4C,aAAa5C,GACxBA,EAAOuC,YAAW,WACjBxC,EAAO,KACL,KAEH,IAAI8C,EAAMC,OAAOC,aAAa5C,EAAEgB,OAAOd,cACtC2C,EAAMrK,KAAK2E,QAAQS,KAAK,kBAAkBI,OAAO,YACjD8E,EAAMD,EAAIE,MAAMjM,EAAS+J,gBAAkB,EAC3CmC,GAAM,EAIP,IAHApD,GAAQ8C,GAGA9I,OAAS,EAAG,CAQnB,GAPAiJ,EAAItI,MAAMuI,GAAK/K,KAAK3B,EAAEoK,OAAM,SAAUxI,EAAGiL,GACxC,GAA+C,IAA5C7M,EAAE6M,GAAGC,OAAOhD,cAAc9I,QAAQwI,GAGpC,OAFAxJ,EAAE6M,GAAGnC,QACLkC,GAAM,GACC,IAENxK,OACAwK,EAAO,OAUV,GAPAH,EAAItI,MAAM,EAAGuI,GAAK/K,KAAK3B,EAAEoK,OAAM,SAAUxI,EAAGiL,GAC3C,GAA+C,IAA5C7M,EAAE6M,GAAGC,OAAOhD,cAAc9I,QAAQwI,GAGpC,OAFAxJ,EAAE6M,GAAGnC,QACLkC,GAAM,GACC,IAENxK,OACAwK,EAAO,OAGX,GAAG,IAAIG,OAAO,IAAMT,EAAIrL,QAAQ,yBAA0B,QAAU,MAAM6G,KAAK0B,GAAO,CASrF,GAPAiD,EAAItI,MAAMuI,EAAM,GAAG/K,KAAK3B,EAAEoK,OAAM,SAAUxI,EAAGiL,GAC5C,GAAG7M,EAAE6M,GAAGC,OAAOhD,cAAckD,OAAO,KAAOV,EAG1C,OAFAtM,EAAE6M,GAAGnC,QACLkC,GAAM,GACC,IAENxK,OACAwK,EAAO,OAUV,GAPAH,EAAItI,MAAM,EAAGuI,EAAM,GAAG/K,KAAK3B,EAAEoK,OAAM,SAAUxI,EAAGiL,GAC/C,GAAG7M,EAAE6M,GAAGC,OAAOhD,cAAckD,OAAO,KAAOV,EAG1C,OAFAtM,EAAE6M,GAAGnC,QACLkC,GAAM,GACC,IAENxK,OACAwK,EAAO,UAETxK,OAEHuH,GAAG,cAAe3J,EAAEoK,OAAM,WACzB,IAAI6C,EAAI7K,KAAK6E,SAASzF,KAAKiB,OAC3BL,KAAKI,MAAMhB,KAAKiB,OAAOE,KAASsK,EAAEtK,KAClCP,KAAKI,MAAMhB,KAAKiB,OAAOgD,QAAWwH,EAAExH,QACpCrD,KAAKI,MAAMhB,KAAKiB,OAAOG,MAASqK,EAAErK,MAClCR,KAAKI,MAAMhB,KAAKiB,OAAOI,SAAYoK,EAAEpK,SACrCT,KAAK8K,UAAUD,EAAEvK,MAAQ,UAAWuK,EAAE1H,KACtCnD,KAAK+K,kBAAkBF,EAAEvH,WACvBtD,OACHuH,GAAG,iBAAkB3J,EAAEoK,OAAM,WAC5BhI,KAAMA,KAAKI,MAAMhB,KAAKiB,OAAOE,KAAO,YAAc,eAClDP,KAAMA,KAAKI,MAAMhB,KAAKiB,OAAOG,MAAQ,aAAe,gBACpDR,KAAMA,KAAKI,MAAMhB,KAAKiB,OAAOgD,QAAU,eAAiB,kBACxDrD,KAAMA,KAAKI,MAAMhB,KAAKiB,OAAOI,SAAW,gBAAkB,qBACxDT,OACHuH,GAAG,cAAe,iBAAkB3J,EAAEoK,OAAM,SAAUR,GACrDxH,KAAKI,MAAMhB,KAAK0B,QAAU,KAC1BlD,EAAE4J,EAAEY,eAAe5C,OAAO,mBAAmBwF,aAC7ChL,KAAK2E,QAAQtG,KAAK,WAAY,OAC5B2B,OACHuH,GAAG,eAAgB,iBAAkB3J,EAAEoK,OAAM,SAAUR,GACtD,IAAIrI,EAAMa,KAAKkJ,SAAS1B,EAAEY,eACvBjJ,GAAOA,EAAIY,KACbC,KAAKI,MAAMhB,KAAK0B,QAAU3B,EAAIY,IAE/BC,KAAK2E,QAAQS,KAAK,mBAAmB6F,IAAIzD,EAAEY,eAAe4C,aAC1DpN,EAAE4J,EAAEY,eAAe8C,aACnBlL,KAAK2E,QAAQtG,KAAK,WAAY,QAC5B2B,OACHuH,GAAG,eAAgB3J,EAAEoK,OAAM,WAC1B,IAAI,IAAKE,KAAUZ,EAAY,MAAQtH,KAAKI,MAAMhB,KAAK0B,QAAS,CAC/DwG,EAAY,EACZ,IAAI6D,EAAMnL,KAAKkJ,SAASlJ,KAAK2E,QAAQtG,KAAK,0BAA0B,GACjE8M,GACFA,EAAI/F,KAAK,oBAAoBkD,WAG7BtI,OACHuH,GAAG,oBAAqB,iBAAkB3J,EAAEoK,OAAM,SAAUR,GAC3DxH,KAAKoL,WAAW5D,EAAEY,iBAChBpI,OACHuH,GAAG,oBAAqB,iBAAkB3J,EAAEoK,OAAM,SAAUR,GAC3DxH,KAAKqL,aAAa7D,EAAEY,iBAClBpI,QAONiH,OAAS,WACRjH,KAAK2E,QAAQ7E,IAAI,WACjBlC,EAAEU,GAAUwB,IAAI,WAAaE,KAAKC,MASnCiF,QAAU,SAAUoG,EAAI3L,GACnBA,IACHA,EAAO,IAERA,EAAKwC,SAAWnC,KAChBA,KAAK2E,QAAQ4G,eAAeD,EAAGzM,QAAQ,UAAU,IAAM,UAAWc,IAOnE6L,cAAgB,WACf,OAAOxL,KAAK2E,SAQboB,iBAAmB,WAClB,OAAO/F,KAAK2E,QAAQH,SAAS,oBAAoBwB,SASlDH,WAAa,SAAU4F,GACtB,IAAI9I,EAAI3C,KAAK6E,SAASzF,KAAKyD,QAC3B,OAAGjF,EAAE8N,WAAW/I,GAAaA,EAAEX,KAAKhC,KAAMyL,GACvC9I,GAAKA,EAAE8I,GAAe9I,EAAE8I,GACpBA,GASRnC,YAAc,SAAUqC,GAEvB,IADAA,EAAMA,EAAMA,EAAIC,WAAa,KACf,OAARD,GAAiC,IAAjBA,EAAIxK,UACzBwK,EAAMA,EAAIE,YAEX,OAAOF,GASRG,aAAe,SAAUH,GAExB,IADAA,EAAMA,EAAMA,EAAIE,YAAc,KAChB,OAARF,GAAiC,IAAjBA,EAAIxK,UACzBwK,EAAMA,EAAIE,YAEX,OAAOF,GASRI,iBAAmB,SAAUJ,GAE5B,IADAA,EAAMA,EAAMA,EAAIK,gBAAkB,KACpB,OAARL,GAAiC,IAAjBA,EAAIxK,UACzBwK,EAAMA,EAAIK,gBAEX,OAAOL,GASRzC,SAAW,SAAUjI,EAAKgL,GAIzB,IAAIN,EAHD1K,GAAOA,EAAIlB,KACbkB,EAAMA,EAAIlB,IAGX,IACC,GAAGC,KAAKwB,OAAO7B,KAAKsB,GACnBA,EAAMjB,KAAKwB,OAAO7B,KAAKsB,QAEnB,GAAkB,iBAARA,GAAoBjB,KAAKwB,OAAO7B,KAAKsB,EAAIpC,QAAQ,KAAM,KACrEoC,EAAMjB,KAAKwB,OAAO7B,KAAKsB,EAAIpC,QAAQ,KAAM,UAErC,GAAkB,iBAARoC,IAAqB0K,EAAM/N,EAAE,IAAMqD,EAAIpC,QAAQjB,EAAEE,OAAOgB,QAAQ,QAASkB,KAAK2E,UAAUvD,QAAUpB,KAAKwB,OAAO7B,KAAKgM,EAAIrK,QAAQ,gBAAgBjD,KAAK,OAClK4C,EAAMjB,KAAKwB,OAAO7B,KAAKgM,EAAIrK,QAAQ,gBAAgBjD,KAAK,YAEpD,IAAIsN,EAAM/N,EAAEqD,EAAKjB,KAAK2E,UAAUvD,QAAUpB,KAAKwB,OAAO7B,KAAKgM,EAAIrK,QAAQ,gBAAgBjD,KAAK,OAChG4C,EAAMjB,KAAKwB,OAAO7B,KAAKgM,EAAIrK,QAAQ,gBAAgBjD,KAAK,WAEpD,MAAIsN,EAAM/N,EAAEqD,EAAKjB,KAAK2E,UAAUvD,SAAUuK,EAAI/I,SAAS,UAI3D,OAAO,EAHP3B,EAAMjB,KAAKwB,OAAO7B,KAAK/B,EAAEE,OAAOiB,MASjC,OAHGkN,IACFhL,EAAMA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAOiB,KAAK2E,QAAU/G,EAAE,IAAMqD,EAAIlB,GAAGlB,QAAQjB,EAAEE,OAAOgB,QAAQ,QAASkB,KAAK2E,UAEhG1D,EACN,MAAOiL,GAAM,OAAO,IAUvBC,SAAW,SAAUlL,EAAKmL,EAAMC,GAE/B,KADApL,EAAMA,EAAIsD,QAAUtD,EAAMjB,KAAKkJ,SAASjI,KAC7BA,EAAIlB,KAAOnC,EAAEE,OAAOiB,OAASkC,EAAIsD,QAC3C,OAAO,EAER,IAAI/E,EAAGqK,EAAGyC,EAAI,GAEd,IADAA,EAAEC,KAAKF,EAAMpL,EAAIlB,GAAKkB,EAAIyJ,MACtBlL,EAAI,EAAGqK,EAAI5I,EAAIsD,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,IACzC8M,EAAEC,KAAKF,EAAMpL,EAAIsD,QAAQ/E,GAAKQ,KAAKwM,SAASvL,EAAIsD,QAAQ/E,KAGzD,OADA8M,EAAIA,EAAEG,UAAU1K,MAAM,GACfqK,EAAOE,EAAEI,KAAKN,GAAQE,GAS9B/C,aAAe,SAAUtI,EAAK0L,GAC7B,IAAIxN,EAEJ,IADA8B,EAAMjB,KAAKkJ,SAASjI,GAAK,IAClB,KAAOjB,KAAK2E,QAAQ,GAAI,CAE9B,IADAxF,EAAMa,KAAKsJ,YAAYtJ,KAAK+F,mBAAmB,IACxC5G,GAA4B,IAArBA,EAAIyN,cACjBzN,EAAMa,KAAK8L,aAAa3M,GAEzB,QAAOA,GAAMvB,EAAEuB,GAEhB,IAAI8B,IAAQA,EAAIG,OACf,OAAO,EAER,GAAGuL,EAAQ,CACVxN,EAAM8B,EAAI,GACV,GACC9B,EAAMa,KAAK8L,aAAa3M,SAChBA,GAA4B,IAArBA,EAAIyN,cACpB,QAAOzN,GAAMvB,EAAEuB,GAEhB,GAAG8B,EAAI2B,SAAS,eAAgB,CAE/B,IADAzD,EAAMa,KAAKsJ,YAAYrI,EAAIuD,SAAS,oBAAoB,IACjDrF,GAA4B,IAArBA,EAAIyN,cACjBzN,EAAMa,KAAK8L,aAAa3M,GAEzB,GAAW,OAARA,EACF,OAAOvB,EAAEuB,GAGXA,EAAM8B,EAAI,GACV,GACC9B,EAAMa,KAAK8L,aAAa3M,SAChBA,GAA4B,IAArBA,EAAIyN,cACpB,OAAW,OAARzN,EACKvB,EAAEuB,GAEH8B,EAAI4L,aAAa,UAAU,gBAAgBC,QAAQ,wBAAwB9G,SASnFmD,aAAe,SAAUlI,EAAK0L,GAC7B,IAAIxN,EAEJ,IADA8B,EAAMjB,KAAKkJ,SAASjI,GAAK,IAClB,KAAOjB,KAAK2E,QAAQ,GAAI,CAE9B,IADAxF,EAAMa,KAAK+F,mBAAmB,GAAGgH,UAC1B5N,GAA4B,IAArBA,EAAIyN,cACjBzN,EAAMa,KAAK+L,iBAAiB5M,GAE7B,QAAOA,GAAMvB,EAAEuB,GAEhB,IAAI8B,IAAQA,EAAIG,OACf,OAAO,EAER,GAAGuL,EAAQ,CACVxN,EAAM8B,EAAI,GACV,GACC9B,EAAMa,KAAK+L,iBAAiB5M,SACpBA,GAA4B,IAArBA,EAAIyN,cACpB,QAAOzN,GAAMvB,EAAEuB,GAEhBA,EAAM8B,EAAI,GACV,GACC9B,EAAMa,KAAK+L,iBAAiB5M,SACpBA,GAA4B,IAArBA,EAAIyN,cACpB,GAAW,OAARzN,EAAc,CAEhB,IADA8B,EAAMrD,EAAEuB,GACF8B,EAAI2B,SAAS,gBAClB3B,EAAMA,EAAIuD,SAAS,oBAAoBwB,QAAQxB,SAAS,6BAEzD,OAAOvD,EAGR,UADA9B,EAAM8B,EAAI,GAAG+L,WAAWA,cACV7N,EAAI4H,YAAuD,IAA1C5H,EAAI4H,UAAUnI,QAAQ,iBAAwBhB,EAAEuB,IAQhF8J,WAAa,SAAUhI,GAEtB,UADAA,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,OAGxBkC,EAAIqD,QAQZ2I,iBAAmB,SAAUhM,GAE5B,OADAA,EAAMjB,KAAKkJ,SAASjI,GAAK,IAClB,KAAOjB,KAAK2E,QAAQ,GACnB3E,KAAK+F,mBAAmBvB,SAAS,mBAErCvD,IAAQA,EAAIG,SAGTH,EAAIuD,SAAS,oBAAoBA,SAAS,iBAQlD0I,UAAY,SAAUjM,GAErB,OADAA,EAAMjB,KAAKkJ,SAASjI,OACgB,IAArBA,EAAIyD,MAAMP,QAAoBlD,EAAIuD,SAASpD,OAAS,IAQpE+L,UAAY,SAAUlM,GAErB,OADAA,EAAMjB,KAAKkJ,SAASjI,KACNA,EAAIyD,MAAMP,QAQzBiJ,WAAa,SAAUnM,GAEtB,OADAA,EAAMjB,KAAKkJ,SAASjI,KACNA,EAAIyD,OAASzD,EAAIyD,MAAM2I,SAQtCtE,QAAU,SAAU9H,GAEnB,OADAA,EAAMjB,KAAKkJ,SAASjI,KACNA,EAAIyD,MAAMN,QAQzBgF,UAAY,SAAUnI,GAErB,OADAA,EAAMjB,KAAKkJ,SAASjI,KACNjB,KAAKkN,UAAUjM,KAASA,EAAIyD,MAAMN,QAQjDkJ,QAAU,SAAUrM,GACnB,OAAQjB,KAAKkN,UAAUjM,IAUxBmF,UAAY,SAAUnF,EAAKsM,GAC1B,IAAI9N,EAAG+N,EAAGhO,EAAGqK,EAAG4D,EAChB,GAAG7P,EAAE8P,QAAQzM,GAEZ,OADAjB,KAAK2N,YAAY1M,EAAIc,QAASwL,IACvB,EAGR,KADAtM,EAAMjB,KAAKkJ,SAASjI,IAGnB,OADGsM,GAAYA,EAASvL,KAAKhC,KAAMiB,GAAK,IACjC,EAGR,GAAGA,EAAIyD,MAAMP,OAAQ,CAEpB,IADAlD,EAAIyD,MAAMP,QAAS,EACf3E,EAAI,EAAGqK,EAAI5I,EAAIsD,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,IACzCQ,KAAKwB,OAAO7B,KAAKsB,EAAIsD,QAAQ/E,IAAIiF,WAAa7G,EAAEmM,OAAO6D,aAAa5N,KAAKwB,OAAO7B,KAAKsB,EAAIsD,QAAQ/E,IAAIiF,YAAY,SAAUgG,GAC1H,OAAyC,IAAlC7M,EAAEiQ,QAAQpD,EAAGxJ,EAAIwD,eAG1B,IAAIhF,EAAI,EAAG+N,EAAIvM,EAAIwD,WAAWrD,OAAQ3B,EAAI+N,EAAG/N,IACzCO,KAAKwB,OAAO7B,KAAKsB,EAAIwD,WAAWhF,IAAIiF,MAAMhE,WAC5C+M,GAAI,UAEEzN,KAAKwB,OAAO7B,KAAKsB,EAAIwD,WAAWhF,IAEpCgO,IACHzN,KAAKI,MAAMhB,KAAKsB,SAAW9C,EAAEmM,OAAO6D,aAAa5N,KAAKI,MAAMhB,KAAKsB,UAAU,SAAU+J,GACpF,OAAyC,IAAlC7M,EAAEiQ,QAAQpD,EAAGxJ,EAAIwD,gBAG1BxD,EAAIuD,SAAW,GACfvD,EAAIwD,WAAa,GACdgJ,GACFzN,KAAKkF,QAAQ,UAAW,CAAE,OAAW,YAAa,KAASjE,EAAK,SAAajB,KAAKI,MAAMhB,KAAKsB,WA0C/F,OAvCAO,EAAIyD,MAAMoJ,QAAS,EACnB7M,EAAIyD,MAAM2I,SAAU,EACpBrN,KAAKkJ,SAASjI,GAAK,GAAM2D,SAAS,kBAAkBvG,KAAK,aAAY,GACrE2B,KAAK+N,WAAW9M,EAAKrD,EAAEoK,OAAM,SAAU2B,IACtC1I,EAAMjB,KAAKwB,OAAO7B,KAAKsB,EAAIlB,KACvB2E,MAAM2I,SAAU,EACpBpM,EAAIyD,MAAMP,OAASwF,EACnB1I,EAAIyD,MAAMoJ,QAAU7M,EAAIyD,MAAMP,OAC9B,IAA2C0F,EAAvC8B,EAAM3L,KAAKkJ,SAASjI,GAAK,GAAOzB,EAAI,EAAUwO,EAAIhO,KAAKwB,OAAO7B,KAAMsO,GAAe,EACvF,IAAIzO,EAAI,EAAGqK,EAAI5I,EAAIuD,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC1C,GAAGwO,EAAE/M,EAAIuD,SAAShF,MAAQwO,EAAE/M,EAAIuD,SAAShF,IAAIkF,MAAMwJ,OAAQ,CAC1DD,GAAe,EACf,MAGChN,EAAIyD,MAAMP,QAAUwH,GAAOA,EAAIvK,SACjCuK,EAAIzE,YAAY,yCACX+G,EAIW,MAAXhN,EAAIlB,IACP4L,EAAI/G,SAAS3D,EAAIyD,MAAMN,OAAS,cAAgB,iBAJjDuH,EAAI/G,SAAS,gBAQf+G,EAAIzE,YAAY,kBAAkB7I,KAAK,aAAY,GAQnD2B,KAAKkF,QAAQ,YAAa,CAAE,KAASjE,EAAK,OAAW0I,IAClD4D,GACFA,EAASvL,KAAKhC,KAAMiB,EAAK0I,KAExB3J,QACI,GASR2N,YAAc,SAAUQ,EAAOZ,EAAUa,EAAaC,GACrD,IAEuB7O,EAAGqK,EAFtByE,GAAI,EACPb,EAAI,WAAczN,KAAK2N,YAAYQ,EAAOZ,GAAU,IACpDS,EAAIhO,KAAKwB,OAAO7B,KAAYR,EAAM,GACnC,IAAIK,EAAI,EAAGqK,EAAIsE,EAAM/M,OAAQ5B,EAAIqK,EAAGrK,IAChCwO,EAAEG,EAAM3O,OAAWwO,EAAEG,EAAM3O,IAAIkF,MAAMP,SAAW6J,EAAEG,EAAM3O,IAAIkF,MAAMoJ,SAAaM,GAAeC,KAC5FrO,KAAKoN,WAAWe,EAAM3O,KACzBQ,KAAKoG,UAAU+H,EAAM3O,GAAIiO,GAE1Ba,GAAI,GAGN,GAAGA,EAAG,CACL,IAAI9O,EAAI,EAAGqK,EAAIsE,EAAM/M,OAAQ5B,EAAIqK,EAAGrK,IAChCwO,EAAEG,EAAM3O,KAAOwO,EAAEG,EAAM3O,IAAIkF,MAAMP,QACnChF,EAAIoN,KAAK4B,EAAM3O,IAGd+N,IAAaA,EAASgB,OACxBhB,EAASvL,KAAKhC,KAAMb,GACpBoO,EAASgB,MAAO,KAWnBC,SAAW,SAAUvN,EAAKsM,GAGzB,GAFItM,IAAOA,EAAMrD,EAAEE,OAAOiB,QAC1BkC,EAAMjB,KAAKkJ,SAASjI,IACT,OAAO,EAClB,IAGCzB,EAAGqK,EAHA4E,EAAU,GACbT,EAAIhO,KAAKwB,OAAO7B,KAChB8N,EAAIO,EAAE/M,EAAIlB,IAAI0E,WAKf,IAHGxD,EAAIyD,QAAUzD,EAAIyD,MAAMP,QAC1BsK,EAAQlC,KAAKtL,EAAIlB,IAEdP,EAAI,EAAGqK,EAAI4D,EAAErM,OAAQ5B,EAAIqK,EAAGrK,IAC5BwO,EAAEP,EAAEjO,KAAOwO,EAAEP,EAAEjO,IAAIkF,QAAUsJ,EAAEP,EAAEjO,IAAIkF,MAAMP,QAC7CsK,EAAQlC,KAAKkB,EAAEjO,IAGdiP,EAAQrN,OACVpB,KAAK2N,YAAYc,GAAS,WACzBzO,KAAKwO,SAASvN,EAAKsM,OAUjBA,GAAYA,EAASvL,KAAKhC,KAAMiB,GACnCjB,KAAKkF,QAAQ,WAAY,CAAE,KAASjE,MAWtC8M,WAAa,SAAU9M,EAAKsM,GAC3B,IAAiCmB,EAA7B7D,EAAI7K,KAAK6E,SAASzF,KAAKO,KACvBgP,EAAuB,WAC1B,OAAyB,IAAlB3O,KAAKmB,UAAoC,IAAlBnB,KAAKmB,UAGpC,OAAI0J,EAWDjN,EAAE8N,WAAWb,GACRA,EAAE7I,KAAKhC,KAAMiB,EAAKrD,EAAEoK,OAAM,SAAU4G,IACjC,IAANA,EACFrB,EAASvL,KAAKhC,MAAM,GAGpBA,KAAkB,iBAAN4O,EAAiB,oBAAsB,qBAAqB3N,EAAkB,iBAAN2N,EAAiBhR,EAAEA,EAAEiR,UAAUD,IAAIpJ,OAAOmJ,GAAwBC,GAAG,SAAUjF,GAClK4D,EAASvL,KAAKhC,KAAM2J,QAIpB3J,OAEY,iBAAN6K,EACNA,EAAE1H,KACJ0H,EAAIjN,EAAE0B,QAAO,EAAM,GAAIuL,GACpBjN,EAAE8N,WAAWb,EAAE1H,OACjB0H,EAAE1H,IAAM0H,EAAE1H,IAAInB,KAAKhC,KAAMiB,IAEvBrD,EAAE8N,WAAWb,EAAElL,QACjBkL,EAAElL,KAAOkL,EAAElL,KAAKqC,KAAKhC,KAAMiB,IAErBrD,EAAEkR,KAAKjE,GACZ0D,KAAK3Q,EAAEoK,OAAM,SAAU4G,EAAEF,EAAEK,GAC1B,IAAIjG,EAAOiG,EAAEC,kBAAkB,gBAC/B,OAAIlG,IAAkC,IAA1BA,EAAKlK,QAAQ,SAAgC,iBAANgQ,EAC3C5O,KAAKiP,kBAAkBhO,EAAK2N,GAAG,SAAUjF,GAAU4D,EAASvL,KAAKhC,KAAM2J,MAG3Eb,IAAkC,IAA1BA,EAAKlK,QAAQ,SAAgC,iBAANgQ,EAC3C5O,KAAKkP,kBAAkBjO,EAAKrD,EAAEA,EAAEiR,UAAUD,IAAIpJ,OAAOmJ,IAAuB,SAAUhF,GAAU4D,EAASvL,KAAKhC,KAAM2J,OAG5H3J,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,OAAQ,OAAW,OAAQ,GAAO,UAAW,OAAW,sBAAuB,KAASwO,KAAKC,UAAU,CAAE,GAAOnO,EAAIlB,GAAI,IAAQgP,KACzK/O,KAAK6E,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKuB,YAC7C4M,EAASvL,KAAKhC,MAAM,MACzBA,OACHqP,KAAKzR,EAAEoK,OAAM,SAAUsH,GACtBtP,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,OAAQ,OAAW,OAAQ,GAAO,UAAW,OAAW,sBAAuB,KAASwO,KAAKC,UAAU,CAAE,GAAOnO,EAAIlB,GAAI,IAAQuP,KACzK/B,EAASvL,KAAKhC,MAAM,GACpBA,KAAK6E,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKuB,cAClDX,SAGL0O,EADG9Q,EAAE8P,QAAQ7C,GACTjN,EAAE0B,QAAO,EAAM,GAAIuL,GACbjN,EAAE0E,cAAcuI,GACtBjN,EAAE0B,QAAO,EAAM,GAAIuL,GAEnBA,EAEF5J,EAAIlB,KAAOnC,EAAEE,OAAOiB,KACfiB,KAAKiP,kBAAkBhO,EAAKyN,GAAG,SAAU/E,GAC/C4D,EAASvL,KAAKhC,KAAM2J,OAIrB3J,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,SAAU,OAAW,OAAQ,GAAO,UAAW,OAAW,sBAAuB,KAASwO,KAAKC,UAAU,CAAE,GAAOnO,EAAIlB,MAC/JC,KAAK6E,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKuB,YAC7C4M,EAASvL,KAAKhC,MAAM,KAIb,iBAAN6K,EACN5J,EAAIlB,KAAOnC,EAAEE,OAAOiB,KACfiB,KAAKkP,kBAAkBjO,EAAKrD,EAAEA,EAAEiR,UAAUhE,IAAIrF,OAAOmJ,IAAuB,SAAUhF,GAC5F4D,EAASvL,KAAKhC,KAAM2J,OAIrB3J,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,SAAU,OAAW,OAAQ,GAAO,UAAW,OAAW,sBAAuB,KAASwO,KAAKC,UAAU,CAAE,GAAOnO,EAAIlB,MAC/JC,KAAK6E,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKuB,YAC7C4M,EAASvL,KAAKhC,MAAM,IAItBuN,EAASvL,KAAKhC,MAAM,GArFvBiB,EAAIlB,KAAOnC,EAAEE,OAAOiB,KACfiB,KAAKkP,kBAAkBjO,EAAKjB,KAAKI,MAAMhB,KAAK+F,wBAAwBE,OAAM,IAAO,SAAUsE,GACjG4D,EAASvL,KAAKhC,KAAM2J,MAId4D,EAASvL,KAAKhC,MAAM,IAuF9BuP,cAAgB,SAAUtO,IACzBA,EAAMjB,KAAKkJ,SAASjI,KAEnBjB,KAAKwB,OAAOuC,QAAQwI,KAAKtL,EAAIlB,KAW/BmP,kBAAoB,SAAUvD,EAAKhM,EAAM6P,IACxC7D,EAAM3L,KAAKkJ,SAASyC,IAChBnH,SAAW,GACfmH,EAAIlH,WAAa,GACjB,IAOCtF,EAAKK,EAAGqK,EAPL4F,EAAM9P,EAAK+P,GAAG,MAAQ/P,EAAK6E,WAAa7E,EAC3CgQ,EAAMhE,EAAI5L,GACV6P,EAAM,GACNC,EAAM,GACN7B,EAAIhO,KAAKwB,OAAO7B,KAChB2M,EAAI0B,EAAE2B,GACN9E,EAAI7K,KAAKI,MAAMhB,KAAKsB,SAASU,OAc9B,IAZAqO,EAAIlQ,KAAK3B,EAAEoK,OAAM,SAAUxI,EAAGiL,IAC7BtL,EAAMa,KAAK8P,uBAAuBlS,EAAE6M,GAAIkF,EAAKrD,EAAE/H,QAAQuF,aAEtD8F,EAAIrD,KAAKpN,GACT0Q,EAAItD,KAAKpN,GACN6O,EAAE7O,GAAKsF,WAAWrD,SACpByO,EAAMA,EAAI/F,OAAOkE,EAAE7O,GAAKsF,gBAGxBzE,OACHsM,EAAE9H,SAAWoL,EACbtD,EAAE7H,WAAaoL,EACXrQ,EAAI,EAAGqK,EAAIyC,EAAE/H,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,IACvCwO,EAAE1B,EAAE/H,QAAQ/E,IAAIiF,WAAauJ,EAAE1B,EAAE/H,QAAQ/E,IAAIiF,WAAWqF,OAAO+F,GAShE7P,KAAKkF,QAAQ,QAAS,CAAE,MAAU2K,EAAK,OAAWF,IAC/CA,IAAQ/R,EAAEE,OAAOiB,MACnBiB,KAAKuP,cAAcI,GACnB3P,KAAK+P,WAGL/P,KAAK+F,mBAAmBvB,SAAS,wBAAwBmB,SACzD3F,KAAK+P,QAAO,IAEV/P,KAAKI,MAAMhB,KAAKsB,SAASU,SAAWyJ,GACtC7K,KAAKkF,QAAQ,UAAW,CAAE,OAAW,QAAS,SAAalF,KAAKI,MAAMhB,KAAKsB,WAE5E8O,EAAGxN,KAAKhC,MAAM,IAWfiP,kBAAoB,SAAUtD,EAAKhM,EAAM6P,EAAIQ,GAC5C,GAAoB,OAAjBhQ,KAAK2E,QAAR,EACAgH,EAAM3L,KAAKkJ,SAASyC,IAChBnH,SAAW,GACfmH,EAAIlH,WAAa,GAEd9E,EAAKiP,GAEY,iBADnBjP,EAAOA,EAAKiP,KAEXjP,EAAOwP,KAAKc,MAAMtQ,IAGhB/B,EAAE8P,QAAQ/N,KAASA,EAAO,CAACA,IAC/B,IAAIuQ,EAAI,KACPtO,EAAO,CACN,GAAO5B,KAAKwB,OAAO0C,cACnB,IAAQvE,EACR,IAAQgM,EAAI5L,GACZ,EAAOC,KAAKwB,OAAO7B,KACnB,KAASK,KAAKC,IACd,MAAUD,KAAKE,KACf,IAAQF,KAAKI,MAAMhB,KAAKsB,UAEzByP,EAAO,SAAUxQ,EAAM9B,GACnB8B,EAAKA,OAAQA,EAAOA,EAAKA,MAC5B,IAWCR,EAAKK,EAAGqK,EAAGuG,EAXRX,EAAM9P,EAAK8P,IACdE,EAAMhQ,EAAKgQ,IACXC,EAAM,GACNC,EAAM,GACNQ,EAAM,GACNC,EAAK3Q,EAAK2Q,GACVC,EAAO5Q,EAAK4Q,KACZC,EAAQ7Q,EAAK6Q,MACbxC,EAAIrO,EAAKqO,EACT1B,EAAI0B,EAAE2B,GACN9H,EAAMlI,EAAKkI,IAEX4I,EAAa,SAAU7B,EAAGtC,EAAGoE,GAErBA,EADHA,EACQA,EAAG5G,SADA,GAEZwC,GAAKoE,EAAGC,QAAQrE,GACnB,IACC9M,EAAGqK,EAAG4D,EAAGjG,EADNoJ,EAAMhC,EAAE7O,GAAG8Q,WAEd1R,EAAM,CACLY,GAAO6Q,EACPlG,KAAQkE,EAAElE,MAAQ,GAClBoG,KAAQlC,EAAEkC,OAASjT,GAAY+Q,EAAEkC,KACjCxM,OAAUgI,EACV/H,QAAWmM,EACXlM,SAAWoK,EAAEpK,UAAY,GACzBC,WAAamK,EAAEnK,YAAc,GAC7B9E,KAAQiP,EAAEjP,KACV+E,MAAS,GACTqM,QAAW,CAAEhR,IAAK,GAClBiR,OAAU,CAAEC,KAAO,KACnBC,UAAW,GAEb,IAAI1R,KAAK8Q,EACLA,EAAGa,eAAe3R,KACpBL,EAAIuF,MAAMlF,GAAK8Q,EAAG9Q,IASpB,GANGoP,GAAKA,EAAEjP,MAAQiP,EAAEjP,KAAK7B,QAAU8Q,EAAEjP,KAAK7B,OAAOgT,OAChD3R,EAAI2R,KAAOlC,EAAEjP,KAAK7B,OAAOgT,MAEvB3R,EAAI2R,OAASjT,GAA0B,OAAbsB,EAAI2R,MAA8B,KAAb3R,EAAI2R,OACrD3R,EAAI2R,MAAO,GAETlC,GAAKA,EAAEjP,OACTR,EAAIQ,KAAOiP,EAAEjP,KACViP,EAAEjP,KAAK7B,QACT,IAAI0B,KAAKoP,EAAEjP,KAAK7B,OACZ8Q,EAAEjP,KAAK7B,OAAOqT,eAAe3R,KAC/BL,EAAIuF,MAAMlF,GAAKoP,EAAEjP,KAAK7B,OAAO0B,IAKjC,GAAGoP,GAAwB,iBAAZA,EAAElK,MAChB,IAAKlF,KAAKoP,EAAElK,MACRkK,EAAElK,MAAMyM,eAAe3R,KACzBL,EAAIuF,MAAMlF,GAAKoP,EAAElK,MAAMlF,IAI1B,GAAGoP,GAA0B,iBAAdA,EAAEmC,QAChB,IAAKvR,KAAKoP,EAAEmC,QACRnC,EAAEmC,QAAQI,eAAe3R,KAC3BL,EAAI4R,QAAQvR,GAAKoP,EAAEmC,QAAQvR,IAO9B,GAHIL,EAAI4R,QAAQhR,KACfZ,EAAI4R,QAAQhR,GAAK6Q,GAEfhC,GAAyB,iBAAbA,EAAEoC,OAChB,IAAKxR,KAAKoP,EAAEoC,OACRpC,EAAEoC,OAAOG,eAAe3R,KAC1BL,EAAI6R,OAAOxR,GAAKoP,EAAEoC,OAAOxR,IAU5B,IANGoP,GAAKA,EAAEpK,WAA2B,IAAfoK,EAAEpK,WACvBrF,EAAIuF,MAAMP,QAAS,EACnBhF,EAAIqF,SAAW,GACfrF,EAAIsF,WAAa,IAElBuJ,EAAE7O,EAAIY,IAAMZ,EACRK,EAAI,EAAGqK,EAAI1K,EAAIqF,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC1CiO,EAAIgD,EAAWzC,EAAE7O,EAAIqF,SAAShF,IAAKL,EAAIY,GAAI2Q,GAC3ClJ,EAAIwG,EAAEP,GACNtO,EAAIsF,WAAW8H,KAAKkB,GACjBjG,EAAE/C,WAAWrD,SACfjC,EAAIsF,WAAatF,EAAIsF,WAAWqF,OAAOtC,EAAE/C,aAS3C,cANOmK,EAAEjP,YACFiP,EAAEpK,SACTwJ,EAAE7O,EAAIY,IAAImR,SAAWtC,EAClBzP,EAAIuF,MAAMhE,UACZ2P,EAAI9D,KAAKpN,EAAIY,IAEPZ,EAAIY,IAEZqR,EAAa,SAAUxC,EAAGtC,EAAGoE,GAErBA,EADHA,EACQA,EAAG5G,SADA,GAEZwC,GAAKoE,EAAGC,QAAQrE,GACnB,IAAiB9M,EAAGqK,EAAG4D,EAAGjG,EAAGrI,EAAzByR,GAAM,EACV,GACCA,EAAM,IAAML,EAAO,OAASC,QACrBxC,EAAE4C,IAgBV,IAAIpR,KAdJL,EAAM,CACLY,IAAO,EACP2K,KAAqB,iBAANkE,EAAiBA,EAAI,GACpCkC,KAAqB,iBAANlC,GAAkBA,EAAEkC,OAASjT,GAAY+Q,EAAEkC,KAC1DxM,OAAUgI,EACV/H,QAAWmM,EACXlM,SAAW,GACXC,WAAa,GACb9E,KAAQ,KACR+E,MAAS,GACTqM,QAAW,CAAEhR,IAAK,GAClBiR,OAAU,CAAEC,KAAO,KACnBC,UAAW,GAEHZ,EACLA,EAAGa,eAAe3R,KACpBL,EAAIuF,MAAMlF,GAAK8Q,EAAG9Q,IAWpB,GARGoP,GAAKA,EAAE7O,KAAMZ,EAAIY,GAAK6O,EAAE7O,GAAG8Q,YAC3BjC,GAAKA,EAAElE,OAAQvL,EAAIuL,KAAOkE,EAAElE,MAC5BkE,GAAKA,EAAEjP,MAAQiP,EAAEjP,KAAK7B,QAAU8Q,EAAEjP,KAAK7B,OAAOgT,OAChD3R,EAAI2R,KAAOlC,EAAEjP,KAAK7B,OAAOgT,MAEvB3R,EAAI2R,OAASjT,GAA0B,OAAbsB,EAAI2R,MAA8B,KAAb3R,EAAI2R,OACrD3R,EAAI2R,MAAO,GAETlC,GAAKA,EAAEjP,OACTR,EAAIQ,KAAOiP,EAAEjP,KACViP,EAAEjP,KAAK7B,QACT,IAAI0B,KAAKoP,EAAEjP,KAAK7B,OACZ8Q,EAAEjP,KAAK7B,OAAOqT,eAAe3R,KAC/BL,EAAIuF,MAAMlF,GAAKoP,EAAEjP,KAAK7B,OAAO0B,IAKjC,GAAGoP,GAAwB,iBAAZA,EAAElK,MAChB,IAAKlF,KAAKoP,EAAElK,MACRkK,EAAElK,MAAMyM,eAAe3R,KACzBL,EAAIuF,MAAMlF,GAAKoP,EAAElK,MAAMlF,IAI1B,GAAGoP,GAA0B,iBAAdA,EAAEmC,QAChB,IAAKvR,KAAKoP,EAAEmC,QACRnC,EAAEmC,QAAQI,eAAe3R,KAC3BL,EAAI4R,QAAQvR,GAAKoP,EAAEmC,QAAQvR,IAa9B,GATGL,EAAI4R,QAAQhR,KAAOZ,EAAIY,KACzBZ,EAAIY,GAAKZ,EAAI4R,QAAQhR,GAAG8Q,YAErB1R,EAAIY,KACPZ,EAAIY,GAAK6Q,GAENzR,EAAI4R,QAAQhR,KACfZ,EAAI4R,QAAQhR,GAAKZ,EAAIY,IAEnB6O,GAAyB,iBAAbA,EAAEoC,OAChB,IAAKxR,KAAKoP,EAAEoC,OACRpC,EAAEoC,OAAOG,eAAe3R,KAC1BL,EAAI6R,OAAOxR,GAAKoP,EAAEoC,OAAOxR,IAI5B,GAAGoP,GAAKA,EAAEpK,UAAYoK,EAAEpK,SAASpD,OAAQ,CACxC,IAAI5B,EAAI,EAAGqK,EAAI+E,EAAEpK,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IACxCiO,EAAI2D,EAAWxC,EAAEpK,SAAShF,GAAIL,EAAIY,GAAI2Q,GACtClJ,EAAIwG,EAAEP,GACNtO,EAAIqF,SAAS+H,KAAKkB,GACfjG,EAAE/C,WAAWrD,SACfjC,EAAIsF,WAAatF,EAAIsF,WAAWqF,OAAOtC,EAAE/C,aAG3CtF,EAAIsF,WAAatF,EAAIsF,WAAWqF,OAAO3K,EAAIqF,UAc5C,OAZGoK,GAAKA,EAAEpK,WAA2B,IAAfoK,EAAEpK,WACvBrF,EAAIuF,MAAMP,QAAS,EACnBhF,EAAIqF,SAAW,GACfrF,EAAIsF,WAAa,WAEXmK,EAAEjP,YACFiP,EAAEpK,SACTrF,EAAI+R,SAAWtC,EACfZ,EAAE7O,EAAIY,IAAMZ,EACTA,EAAIuF,MAAMhE,UACZ2P,EAAI9D,KAAKpN,EAAIY,IAEPZ,EAAIY,IAGb,GAAG0P,EAAIrO,QAAUqO,EAAI,GAAG1P,KAAOlC,GAAa4R,EAAI,GAAGnL,SAAWzG,EAAW,CAGxE,IAAI2B,EAAI,EAAGqK,EAAI4F,EAAIrO,OAAQ5B,EAAIqK,EAAGrK,IAC7BiQ,EAAIjQ,GAAGgF,WACViL,EAAIjQ,GAAGgF,SAAW,IAEnBwJ,EAAEyB,EAAIjQ,GAAGO,GAAG8Q,YAAcpB,EAAIjQ,GAG/B,IAAIA,EAAI,EAAGqK,EAAI4F,EAAIrO,OAAQ5B,EAAIqK,EAAGrK,IACjCwO,EAAEyB,EAAIjQ,GAAG8E,OAAOuM,YAAYrM,SAAS+H,KAAKkD,EAAIjQ,GAAGO,GAAG8Q,YAEpDvE,EAAE7H,WAAW8H,KAAKkD,EAAIjQ,GAAGO,GAAG8Q,YAG7B,IAAIrR,EAAI,EAAGqK,EAAIyC,EAAE9H,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IACxCL,EAAMsR,EAAWzC,EAAE1B,EAAE9H,SAAShF,IAAKmQ,EAAKrD,EAAE/H,QAAQuF,UAClD+F,EAAItD,KAAKpN,GACN6O,EAAE7O,GAAKsF,WAAWrD,SACpByO,EAAMA,EAAI/F,OAAOkE,EAAE7O,GAAKsF,aAG1B,IAAIjF,EAAI,EAAGqK,EAAIyC,EAAE/H,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,IACvCwO,EAAE1B,EAAE/H,QAAQ/E,IAAIiF,WAAauJ,EAAE1B,EAAE/H,QAAQ/E,IAAIiF,WAAWqF,OAAO+F,GAGhEO,EAAO,CACN,IAAQI,EACR,IAAQxC,EACR,IAAQnG,EACR,IAAQ8H,EACR,IAAQE,EACR,IAAQQ,OAGL,CACJ,IAAI7Q,EAAI,EAAGqK,EAAI4F,EAAIrO,OAAQ5B,EAAIqK,EAAGrK,KACjCL,EAAMiS,EAAW3B,EAAIjQ,GAAImQ,EAAKrD,EAAE/H,QAAQuF,aAEvC8F,EAAIrD,KAAKpN,GACT0Q,EAAItD,KAAKpN,GACN6O,EAAE7O,GAAKsF,WAAWrD,SACpByO,EAAMA,EAAI/F,OAAOkE,EAAE7O,GAAKsF,cAM3B,IAFA6H,EAAE9H,SAAWoL,EACbtD,EAAE7H,WAAaoL,EACXrQ,EAAI,EAAGqK,EAAIyC,EAAE/H,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,IACvCwO,EAAE1B,EAAE/H,QAAQ/E,IAAIiF,WAAauJ,EAAE1B,EAAE/H,QAAQ/E,IAAIiF,WAAWqF,OAAO+F,GAEhEO,EAAO,CACN,IAAQI,EACR,IAAQxC,EACR,IAAQnG,EACR,IAAQ8H,EACR,IAAQE,EACR,IAAQQ,GAGV,GAAqB,oBAAX9R,aAAqD,IAApBA,OAAOD,SAIjD,OAAO8R,EAHPiB,YAAYjB,IAMdA,EAAO,SAAUA,EAAM3M,GACtB,GAAoB,OAAjBzD,KAAK2E,QAAR,CACA3E,KAAKE,KAAOkQ,EAAKkB,IACjB,IAAI9R,EAAGwO,EAAIhO,KAAKwB,OAAO7B,KACvB,IAAKH,KAAKwO,EACLA,EAAEmD,eAAe3R,IAAMwO,EAAExO,GAAGkF,OAASsJ,EAAExO,GAAGkF,MAAM2I,SAAW+C,EAAKmB,IAAI/R,KACvE4Q,EAAKmB,IAAI/R,GAAGkF,MAAM2I,SAAU,GAK9B,GAFArN,KAAKwB,OAAO7B,KAAOyQ,EAAKmB,IAErB9N,EAAQ,CACV,IAAIoG,EAAGlH,EAAIyN,EAAKC,IAAK/B,EAAI8B,EAAKvI,IAAKgD,EAAI7K,KAAKI,MAAMhB,KAAKsB,SAASqB,QAGhE,GAFAiM,EAAIhO,KAAKwB,OAAO7B,KAEb2O,EAAElN,SAAWyJ,EAAEzJ,QAAUxD,EAAEmM,OAAOC,aAAasE,EAAExE,OAAOe,IAAIzJ,SAAWkN,EAAElN,OAAQ,CAEnF,IAAI5B,EAAI,EAAGqK,EAAIyE,EAAElN,OAAQ5B,EAAIqK,EAAGrK,KACJ,IAAxB5B,EAAEiQ,QAAQS,EAAE9O,GAAImD,KAAqC,IAAxB/E,EAAEiQ,QAAQS,EAAE9O,GAAIqL,KAC/CmD,EAAEM,EAAE9O,IAAIkF,MAAMhE,UAAW,GAI3B,IAAIlB,EAAI,EAAGqK,EAAIgB,EAAEzJ,OAAQ5B,EAAIqK,EAAGrK,KACJ,IAAxB5B,EAAEiQ,QAAQhD,EAAErL,GAAI8O,KAClBN,EAAEnD,EAAErL,IAAIkF,MAAMhE,UAAW,IAK1B0P,EAAKC,IAAIjP,SACXpB,KAAKI,MAAMhB,KAAKsB,SAAWV,KAAKI,MAAMhB,KAAKsB,SAASoJ,OAAOsG,EAAKC,MAGjErQ,KAAKkF,QAAQ,QAAS,CAAE,MAAUkL,EAAKP,IAAK,OAAWO,EAAKT,MAEzDS,EAAKT,MAAQ/R,EAAEE,OAAOiB,MACxBiB,KAAKuP,cAAca,EAAKT,KACxB3P,KAAK+P,UAIL/P,KAAK+P,QAAO,GAEVK,EAAKC,IAAIjP,QACXpB,KAAKkF,QAAQ,UAAW,CAAE,OAAW,QAAS,SAAalF,KAAKI,MAAMhB,KAAKsB,WAE5E8O,EAAGxN,KAAKhC,MAAM,KAEhB,GAAGA,KAAK6E,SAASzF,KAAKqE,QAAUlF,OAAOiT,MAAQjT,OAAO+H,KAAO/H,OAAOkT,OACnE,IACkB,OAAdzR,KAAKG,OACPH,KAAKG,KAAO5B,OAAO+H,IAAIoL,gBACtB,IAAInT,OAAOiT,KACV,CAAC,oBAAsBrB,EAAKU,YAC5B,CAAC/H,KAAK,uBAIL9I,KAAKI,MAAMhB,KAAKwB,SAAWoP,GAC9BhQ,KAAKI,MAAMhB,KAAKwB,SAAU,GAC1BsP,EAAI,IAAI3R,OAAOkT,OAAOzR,KAAKG,OACzBwR,UAAY/T,EAAEoK,OAAM,SAAUR,GAC/B4I,EAAKpO,KAAKhC,KAAMwH,EAAE7H,MAAM,GACxB,IAAMuQ,EAAE0B,YAAa1B,EAAI,KAAQ,MAAM7O,IACpCrB,KAAKI,MAAMhB,KAAKyB,aAAaO,OAC/BpB,KAAKiP,kBAAkB5M,MAAMrC,KAAMA,KAAKI,MAAMhB,KAAKyB,aAAagR,SAGhE7R,KAAKI,MAAMhB,KAAKwB,SAAU,IAEzBZ,MACC4B,EAAK+N,IASRO,EAAEmB,YAAYzP,GARX5B,KAAKI,MAAMhB,KAAKyB,aAAaO,OAC/BpB,KAAKiP,kBAAkB5M,MAAMrC,KAAMA,KAAKI,MAAMhB,KAAKyB,aAAagR,SAGhE7R,KAAKI,MAAMhB,KAAKwB,SAAU,GAQ5BZ,KAAKI,MAAMhB,KAAKyB,aAAa0L,KAAK,CAACZ,EAAKhM,EAAM6P,GAAI,IAGpD,MAAMhI,GACL4I,EAAKpO,KAAKhC,KAAMmQ,EAAKvO,IAAO,GACzB5B,KAAKI,MAAMhB,KAAKyB,aAAaO,OAC/BpB,KAAKiP,kBAAkB5M,MAAMrC,KAAMA,KAAKI,MAAMhB,KAAKyB,aAAagR,SAGhE7R,KAAKI,MAAMhB,KAAKwB,SAAU,OAK5BwP,EAAKpO,KAAKhC,KAAMmQ,EAAKvO,IAAO,KAY9BkO,uBAAyB,SAAUlB,EAAGtC,EAAGoE,GAEjCA,EADHA,EACQ,GAAG5G,OAAO4G,GADP,GAEZpE,GAAKoE,EAAGC,QAAQrE,GACnB,IAAImB,EAAGjG,EAcHhI,EAAGL,EAAKyR,EAdF5C,EAAIhO,KAAKwB,OAAO7B,KACzBA,EAAO,CACNI,IAAO,EACP2K,MAAQ,EACRoG,MAAQ,EACRxM,OAAUgI,EACV/H,QAAWmM,EACXlM,SAAW,GACXC,WAAa,GACb9E,KAAQ,KACR+E,MAAS,GACTqM,QAAW,CAAEhR,IAAK,GAClBiR,OAAU,CAAEC,KAAO,KACnBC,UAAW,GAEb,IAAI1R,KAAKQ,KAAKwB,OAAO0C,cACjBlE,KAAKwB,OAAO0C,cAAciN,eAAe3R,KAC3CG,EAAK+E,MAAMlF,GAAKQ,KAAKwB,OAAO0C,cAAc1E,IAgC5C,GA7BAL,EAAMvB,EAAEmM,OAAO+H,WAAWlD,GAAG,GAC7BhR,EAAE2B,KAAKJ,GAAK,SAAUK,EAAGiL,GAExB,KADAA,EAAI7M,EAAEmU,KAAKtH,IACLrJ,OAAU,OAAO,EACvBzB,EAAKoR,QAAQvR,GAAKiL,EACT,OAANjL,IACFG,EAAKI,GAAK0K,EAAEoG,gBAGd1R,EAAMyP,EAAEpK,SAAS,KAAKwB,SACf5E,SACNjC,EAAMvB,EAAEmM,OAAO+H,WAAW3S,GAAK,GAC/BvB,EAAE2B,KAAKJ,GAAK,SAAUK,EAAGiL,IACxBA,EAAI7M,EAAEmU,KAAKtH,IACNrJ,SACJzB,EAAKqR,OAAOxR,GAAKiL,QAIpBtL,EAAMyP,EAAEpK,SAAS,KAAKwB,QAAQ5E,OAASwN,EAAEpK,SAAS,KAAKwB,QAAQX,QAAUuJ,EAAEvJ,SACvEb,SAAS,cAAcmB,SAC3BxG,EAAMA,EAAIyG,OACVzG,EAAMvB,EAAE,WAAWgI,KAAKzG,GACxBQ,EAAK+K,KAAO1K,KAAK6E,SAASzF,KAAKsE,WAAavE,EAAIuL,OAASvL,EAAIyG,OAC7DzG,EAAMyP,EAAEjP,OACRA,EAAKA,KAAOR,EAAMvB,EAAE0B,QAAO,EAAM,GAAIH,GAAO,KAC5CQ,EAAK+E,MAAMN,OAASwK,EAAEhM,SAAS,eAC/BjD,EAAK+E,MAAMhE,SAAWkO,EAAEpK,SAAS,KAAK5B,SAAS,kBAC/CjD,EAAK+E,MAAML,SAAWuK,EAAEpK,SAAS,KAAK5B,SAAS,mBAC5CjD,EAAKA,MAAQA,EAAKA,KAAK7B,OACzB,IAAI0B,KAAKG,EAAKA,KAAK7B,OACf6B,EAAKA,KAAK7B,OAAOqT,eAAe3R,KAClCG,EAAK+E,MAAMlF,GAAKG,EAAKA,KAAK7B,OAAO0B,KAIpCL,EAAMyP,EAAEpK,SAAS,KAAKA,SAAS,sBACxBpD,SACNzB,EAAKmR,MAAO3R,EAAIyD,SAAS,4BAAqCzD,EAAId,KAAK,QAErEsB,EAAK+E,MAAMoM,OAASjT,IACtB8B,EAAKmR,KAAOnR,EAAK+E,MAAMoM,MAErBnR,EAAKmR,OAASjT,GAA2B,OAAd8B,EAAKmR,MAA+B,KAAdnR,EAAKmR,OACxDnR,EAAKmR,MAAO,GAEb3R,EAAMyP,EAAEpK,SAAS,MAAMA,SAAS,MAChC,GACCoM,EAAM,IAAM5Q,KAAKC,IAAM,OAASD,KAAKE,WAC9B8N,EAAE4C,IA4BV,OA3BAjR,EAAKI,GAAKJ,EAAKoR,QAAQhR,GAAKJ,EAAKoR,QAAQhR,GAAG8Q,WAAaD,EACtDzR,EAAIiC,QACNjC,EAAII,KAAK3B,EAAEoK,OAAM,SAAUxI,EAAGiL,GAC7BgD,EAAIzN,KAAK8P,uBAAuBlS,EAAE6M,GAAI9K,EAAKI,GAAI2Q,GAC/ClJ,EAAIxH,KAAKwB,OAAO7B,KAAK8N,GACrB9N,EAAK6E,SAAS+H,KAAKkB,GAChBjG,EAAE/C,WAAWrD,SACfzB,EAAK8E,WAAa9E,EAAK8E,WAAWqF,OAAOtC,EAAE/C,eAE1CzE,OACHL,EAAK8E,WAAa9E,EAAK8E,WAAWqF,OAAOnK,EAAK6E,WAG3CoK,EAAEhM,SAAS,mBACbjD,EAAK+E,MAAMP,QAAS,GAGnBxE,EAAKoR,QAAe,QACtBpR,EAAKoR,QAAe,MAAIpR,EAAKoR,QAAe,MAAElS,QAAQ,gBAAgB,IAAIA,QAAQ,cAAc,KAE9Fc,EAAKqR,OAAc,QACrBrR,EAAKqR,OAAc,MAAIrR,EAAKqR,OAAc,MAAEnS,QAAQ,iBAAiB,IAAIA,QAAQ,kBAAkB,KAEpGmP,EAAErO,EAAKI,IAAMJ,EACVA,EAAK+E,MAAMhE,UACbV,KAAKI,MAAMhB,KAAKsB,SAAS6L,KAAK5M,EAAKI,IAE7BJ,EAAKI,IAWbiS,4BAA8B,SAAUpD,EAAGtC,EAAGoE,GAEtCA,EADHA,EACQA,EAAG5G,SADA,GAEZwC,GAAKoE,EAAGC,QAAQrE,GACnB,IAGC9M,EAAGqK,EAAG4D,EAAGjG,EAHNoJ,EAAMhC,EAAE7O,GAAG8Q,WACd7C,EAAIhO,KAAKwB,OAAO7B,KAChB2Q,EAAKtQ,KAAKwB,OAAO0C,cAEjB/E,EAAM,CACLY,GAAO6Q,EACPlG,KAAQkE,EAAElE,MAAQ,GAClBoG,KAAQlC,EAAEkC,OAASjT,GAAY+Q,EAAEkC,KACjCxM,OAAUgI,EACV/H,QAAWmM,EACXlM,SAAWoK,EAAEpK,UAAY,GACzBC,WAAamK,EAAEnK,YAAc,GAC7B9E,KAAQiP,EAAEjP,KACV+E,MAAS,GACTqM,QAAW,CAAEhR,IAAK,GAClBiR,OAAU,CAAEC,KAAO,KACnBC,UAAW,GAEb,IAAI1R,KAAK8Q,EACLA,EAAGa,eAAe3R,KACpBL,EAAIuF,MAAMlF,GAAK8Q,EAAG9Q,IASpB,GANGoP,GAAKA,EAAEjP,MAAQiP,EAAEjP,KAAK7B,QAAU8Q,EAAEjP,KAAK7B,OAAOgT,OAChD3R,EAAI2R,KAAOlC,EAAEjP,KAAK7B,OAAOgT,MAEvB3R,EAAI2R,OAASjT,GAA0B,OAAbsB,EAAI2R,MAA8B,KAAb3R,EAAI2R,OACrD3R,EAAI2R,MAAO,GAETlC,GAAKA,EAAEjP,OACTR,EAAIQ,KAAOiP,EAAEjP,KACViP,EAAEjP,KAAK7B,QACT,IAAI0B,KAAKoP,EAAEjP,KAAK7B,OACZ8Q,EAAEjP,KAAK7B,OAAOqT,eAAe3R,KAC/BL,EAAIuF,MAAMlF,GAAKoP,EAAEjP,KAAK7B,OAAO0B,IAKjC,GAAGoP,GAAwB,iBAAZA,EAAElK,MAChB,IAAKlF,KAAKoP,EAAElK,MACRkK,EAAElK,MAAMyM,eAAe3R,KACzBL,EAAIuF,MAAMlF,GAAKoP,EAAElK,MAAMlF,IAI1B,GAAGoP,GAA0B,iBAAdA,EAAEmC,QAChB,IAAKvR,KAAKoP,EAAEmC,QACRnC,EAAEmC,QAAQI,eAAe3R,KAC3BL,EAAI4R,QAAQvR,GAAKoP,EAAEmC,QAAQvR,IAO9B,GAHIL,EAAI4R,QAAQhR,KACfZ,EAAI4R,QAAQhR,GAAK6Q,GAEfhC,GAAyB,iBAAbA,EAAEoC,OAChB,IAAKxR,KAAKoP,EAAEoC,OACRpC,EAAEoC,OAAOG,eAAe3R,KAC1BL,EAAI6R,OAAOxR,GAAKoP,EAAEoC,OAAOxR,IAU5B,IANGoP,GAAKA,EAAEpK,WAA2B,IAAfoK,EAAEpK,WACvBrF,EAAIuF,MAAMP,QAAS,EACnBhF,EAAIqF,SAAW,GACfrF,EAAIsF,WAAa,IAElBuJ,EAAE7O,EAAIY,IAAMZ,EACRK,EAAI,EAAGqK,EAAI1K,EAAIqF,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAE1CgI,EAAIwG,EADJP,EAAIzN,KAAKgS,4BAA4BhE,EAAE7O,EAAIqF,SAAShF,IAAKL,EAAIY,GAAI2Q,IAEjEvR,EAAIsF,WAAW8H,KAAKkB,GACjBjG,EAAE/C,WAAWrD,SACfjC,EAAIsF,WAAatF,EAAIsF,WAAWqF,OAAOtC,EAAE/C,aAS3C,cANOmK,EAAEjP,YACFiP,EAAEpK,SACTwJ,EAAE7O,EAAIY,IAAImR,SAAWtC,EAClBzP,EAAIuF,MAAMhE,UACZV,KAAKI,MAAMhB,KAAKsB,SAAS6L,KAAKpN,EAAIY,IAE5BZ,EAAIY,IAWZkS,uBAAyB,SAAUrD,EAAGtC,EAAGoE,GAEjCA,EADHA,EACQA,EAAG5G,SADA,GAEZwC,GAAKoE,EAAGC,QAAQrE,GACnB,IAAiB9M,EAAGqK,EAAG4D,EAAGjG,EAAyDrI,EAA/EyR,GAAM,EAAmB5C,EAAIhO,KAAKwB,OAAO7B,KAAM2Q,EAAKtQ,KAAKwB,OAAO0C,cACpE,GACC0M,EAAM,IAAM5Q,KAAKC,IAAM,OAASD,KAAKE,WAC9B8N,EAAE4C,IAgBV,IAAIpR,KAdJL,EAAM,CACLY,IAAO,EACP2K,KAAqB,iBAANkE,EAAiBA,EAAI,GACpCkC,KAAqB,iBAANlC,GAAkBA,EAAEkC,OAASjT,GAAY+Q,EAAEkC,KAC1DxM,OAAUgI,EACV/H,QAAWmM,EACXlM,SAAW,GACXC,WAAa,GACb9E,KAAQ,KACR+E,MAAS,GACTqM,QAAW,CAAEhR,IAAK,GAClBiR,OAAU,CAAEC,KAAO,KACnBC,UAAW,GAEHZ,EACLA,EAAGa,eAAe3R,KACpBL,EAAIuF,MAAMlF,GAAK8Q,EAAG9Q,IAWpB,GARGoP,GAAKA,EAAE7O,KAAMZ,EAAIY,GAAK6O,EAAE7O,GAAG8Q,YAC3BjC,GAAKA,EAAElE,OAAQvL,EAAIuL,KAAOkE,EAAElE,MAC5BkE,GAAKA,EAAEjP,MAAQiP,EAAEjP,KAAK7B,QAAU8Q,EAAEjP,KAAK7B,OAAOgT,OAChD3R,EAAI2R,KAAOlC,EAAEjP,KAAK7B,OAAOgT,MAEvB3R,EAAI2R,OAASjT,GAA0B,OAAbsB,EAAI2R,MAA8B,KAAb3R,EAAI2R,OACrD3R,EAAI2R,MAAO,GAETlC,GAAKA,EAAEjP,OACTR,EAAIQ,KAAOiP,EAAEjP,KACViP,EAAEjP,KAAK7B,QACT,IAAI0B,KAAKoP,EAAEjP,KAAK7B,OACZ8Q,EAAEjP,KAAK7B,OAAOqT,eAAe3R,KAC/BL,EAAIuF,MAAMlF,GAAKoP,EAAEjP,KAAK7B,OAAO0B,IAKjC,GAAGoP,GAAwB,iBAAZA,EAAElK,MAChB,IAAKlF,KAAKoP,EAAElK,MACRkK,EAAElK,MAAMyM,eAAe3R,KACzBL,EAAIuF,MAAMlF,GAAKoP,EAAElK,MAAMlF,IAI1B,GAAGoP,GAA0B,iBAAdA,EAAEmC,QAChB,IAAKvR,KAAKoP,EAAEmC,QACRnC,EAAEmC,QAAQI,eAAe3R,KAC3BL,EAAI4R,QAAQvR,GAAKoP,EAAEmC,QAAQvR,IAa9B,GATGL,EAAI4R,QAAQhR,KAAOZ,EAAIY,KACzBZ,EAAIY,GAAKZ,EAAI4R,QAAQhR,GAAG8Q,YAErB1R,EAAIY,KACPZ,EAAIY,GAAK6Q,GAENzR,EAAI4R,QAAQhR,KACfZ,EAAI4R,QAAQhR,GAAKZ,EAAIY,IAEnB6O,GAAyB,iBAAbA,EAAEoC,OAChB,IAAKxR,KAAKoP,EAAEoC,OACRpC,EAAEoC,OAAOG,eAAe3R,KAC1BL,EAAI6R,OAAOxR,GAAKoP,EAAEoC,OAAOxR,IAI5B,GAAGoP,GAAKA,EAAEpK,UAAYoK,EAAEpK,SAASpD,OAAQ,CACxC,IAAI5B,EAAI,EAAGqK,EAAI+E,EAAEpK,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAExCgI,EAAIwG,EADJP,EAAIzN,KAAKiS,uBAAuBrD,EAAEpK,SAAShF,GAAIL,EAAIY,GAAI2Q,IAEvDvR,EAAIqF,SAAS+H,KAAKkB,GACfjG,EAAE/C,WAAWrD,SACfjC,EAAIsF,WAAatF,EAAIsF,WAAWqF,OAAOtC,EAAE/C,aAG3CtF,EAAIsF,WAAatF,EAAIsF,WAAWqF,OAAO3K,EAAIqF,UAc5C,OAZGoK,GAAKA,EAAEpK,WAA2B,IAAfoK,EAAEpK,WACvBrF,EAAIuF,MAAMP,QAAS,EACnBhF,EAAIqF,SAAW,GACfrF,EAAIsF,WAAa,WAEXmK,EAAEjP,YACFiP,EAAEpK,SACTrF,EAAI+R,SAAWtC,EACfZ,EAAE7O,EAAIY,IAAMZ,EACTA,EAAIuF,MAAMhE,UACZV,KAAKI,MAAMhB,KAAKsB,SAAS6L,KAAKpN,EAAIY,IAE5BZ,EAAIY,IAQZmS,QAAU,WACT,IACmC/S,EAAKK,EAAGqK,EADvCsE,EAAQnO,KAAKwB,OAAOwC,kBAAoBhE,KAAKwB,OAAO7B,KAAK/B,EAAEE,OAAOiB,MAAMyF,SAASsF,OAAO,IAAM9J,KAAKwB,OAAOuC,QAAQ+F,OAAO,IAC5HwF,EAAIhR,EAASuI,cAAc,MAAkBsL,EAAKnS,KAAKI,MAAMhB,KAAK0B,QACnE,IAAItB,EAAI,EAAGqK,EAAIsE,EAAM/M,OAAQ5B,EAAIqK,EAAGrK,KACnCL,EAAMa,KAAKoS,YAAYjE,EAAM3O,IAAI,EAAMQ,KAAKwB,OAAOwC,qBACzChE,KAAKwB,OAAOwC,mBACrBsL,EAAEtI,YAAY7H,GAGba,KAAKwB,OAAOwC,oBACdsL,EAAEvI,UAAY/G,KAAK+F,mBAAmB,GAAGgB,UACzCuI,EAAExI,aAAa,OAAO,SACtB9G,KAAK2E,QAAQ6B,QAAQ6L,OAAO/C,IAGnB,OAAP6C,KACFhT,EAAMa,KAAKkJ,SAASiJ,GAAI,KACdhT,EAAIiC,QAAUjC,EAAIqF,SAAS,kBAAkB,KAAOlG,EAAS+J,cACtElJ,EAAIqF,SAAS,kBAAkB8D,QAG/BtI,KAAKI,MAAMhB,KAAK0B,QAAU,MAG5Bd,KAAKwB,OAAOwC,mBAAoB,EAChChE,KAAKwB,OAAOuC,QAAU,GAOtB/D,KAAKkF,QAAQ,SAAU,CAAE,MAAUiJ,KAOpC4B,OAAS,SAAUuC,GACfA,IACFtS,KAAKwB,OAAOwC,mBAAoB,GAMjChE,KAAKkS,WAQNK,cAAgB,SAAUrM,GACzB,IAAIjF,EAAMjB,KAAKkJ,SAAShD,GACvB1G,GAAI,EACJqK,GAAI,EACJpK,GAAI,EACJmP,EAAItQ,EACL,IAAI2C,EAAO,OAAO,EAClB,GAAGA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAQ,OAAOiB,KAAK+P,QAAO,GAElD,KADA7J,EAAOlG,KAAKkJ,SAAShD,GAAM,MACdA,EAAK9E,OAAU,OAAO,EAInC,GAFA8E,EAAK1B,SAAS,oBAAoBmB,SAClCO,EAAOA,EAAK,GACTjF,EAAIuD,SAASpD,QAAUH,EAAIyD,MAAMP,OAAQ,CAI3C,KAHA1E,EAAImP,EAAE/H,cAAc,OAClBC,aAAa,OAAQ,SACvBrH,EAAEsH,UAAY,kBACVvH,EAAI,EAAGqK,EAAI5I,EAAIuD,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC1CC,EAAEuH,YAAYhH,KAAKoS,YAAYnR,EAAIuD,SAAShF,IAAI,GAAM,IAEvD0G,EAAKc,YAAYvH,KAYnB2S,YAAc,SAAUlM,EAAMsM,EAAMpE,EAAaqE,GAChD,IAAIxR,EAAMjB,KAAKkJ,SAAShD,GACvByJ,GAAM,EACNrF,GAAM,EACNoI,GAAM,EACNlT,GAAI,EACJqK,GAAI,EACJpK,GAAI,EACJgO,EAAI,GACJmB,EAAItQ,EACJ0P,EAAIhO,KAAKwB,OAAO7B,KAChB2P,GAAI,EAEJnQ,EAAM,KACNuP,EAAI,EACJlB,EAAI,EACJS,GAAe,EACf0E,GAAe,EAChB,IAAI1R,EAAO,OAAO,EAClB,GAAGA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAS,OAAOiB,KAAK+P,QAAO,GAGnD,GAFAyC,EAAOA,GAAgC,IAAxBvR,EAAIuD,SAASpD,OAC5B8E,EAAQ5H,EAASsU,cAAkD5S,KAAK2E,QAAQ,GAAGiO,cAAc,MAA4C,IAArC,aAAahU,QAAQqC,EAAIlB,GAAG,IAAa,MAAQkB,EAAIlB,GAAG,GAAK,IAAMkB,EAAIlB,GAAG8S,OAAO,GAAGhU,QAAQjB,EAAEE,OAAOgB,QAAQ,QAAUmC,EAAIlB,GAAGlB,QAAQjB,EAAEE,OAAOgB,QAAQ,UAA9NR,EAASwU,eAAe7R,EAAIlB,IAa5DmG,EAAOtI,EAAEsI,GACLkI,KACHuB,EAAMzJ,EAAK5B,SAASA,SAAS,MAClBtE,KAAK2E,QAAQ,KACvBgL,EAAM,MAEPrF,EAAMpE,EAAKqE,SAGRiI,IAAQvR,EAAIuD,SAASpD,QAAW8E,EAAK1B,SAAS,oBAAoBpD,SACrEoR,GAAO,GAEJA,IACHE,EAAMxM,EAAK1B,SAAS,oBAAoB,IAEzC8K,EAAIpJ,EAAK1B,SAAS,kBAAkB,KAAOlG,EAAS+J,cACpDnC,EAAKP,cAzBL,GAFA6M,GAAO,GAEHpE,EAAa,CAEhB,KAAW,QADXuB,EAAM1O,EAAIqD,SAAW1G,EAAEE,OAAOiB,KAAOnB,EAAE,IAAMqD,EAAIqD,OAAOzF,QAAQjB,EAAEE,OAAOgB,QAAQ,QAASkB,KAAK2E,SAAS,GAAK,OACxFgL,GAAQ3B,EAAE/M,EAAIqD,QAAQI,MAAMN,QAChD,OAAO,EAERkG,EAAM1M,EAAEiQ,QAAQ5M,EAAIlB,GAAY,OAAR4P,EAAe3B,EAAEpQ,EAAEE,OAAOiB,MAAMyF,SAAWwJ,EAAE/M,EAAIqD,QAAQE,UA4BnF,IAAIhF,KAJJ0G,EAAOlG,KAAKI,MAAMhB,KAAK8G,KAAK6M,WAAU,GAGtCtF,EAAI,eACKxM,EAAI8P,QACZ,GAAG9P,EAAI8P,QAAQI,eAAe3R,GAAI,CACjC,GAAS,OAANA,EAAc,SACR,UAANA,EACF0G,EAAKY,aAAatH,EAAGyB,EAAI8P,QAAQvR,IAGjCiO,GAAKxM,EAAI8P,QAAQvR,GAcpB,IAVIyB,EAAI+P,OAAOjR,KACdkB,EAAI+P,OAAOjR,GAAKkB,EAAIlB,GAAK,WAE1BmG,EAAKY,aAAa,kBAAmB7F,EAAIyD,MAAMhE,UAC/CwF,EAAKY,aAAa,aAAc7F,EAAIsD,QAAQnD,QAC5C8E,EAAKY,aAAa,kBAAmB7F,EAAI+P,OAAOjR,IAC7CkB,EAAIyD,MAAML,UACZ6B,EAAKY,aAAa,iBAAiB,GAGhCtH,EAAI,EAAGqK,EAAI5I,EAAIuD,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC1C,IAAIwO,EAAE/M,EAAIuD,SAAShF,IAAIkF,MAAMwJ,OAAQ,CACpCD,GAAe,EACf,MAGF,GAAkB,OAAfhN,EAAIqD,QAAmB0J,EAAE/M,EAAIqD,UAAYrD,EAAIyD,MAAMwJ,SACrD1O,EAAI5B,EAAEiQ,QAAQ5M,EAAIlB,GAAIiO,EAAE/M,EAAIqD,QAAQE,UACpCmO,EAAe1R,EAAIlB,IACT,IAAPP,GAEF,IADAA,IACIqK,EAAImE,EAAE/M,EAAIqD,QAAQE,SAASpD,OAAQ5B,EAAIqK,IACtCmE,EAAEA,EAAE/M,EAAIqD,QAAQE,SAAShF,IAAIkF,MAAMwJ,SACtCyE,EAAe3E,EAAE/M,EAAIqD,QAAQE,SAAShF,IAEpCmT,IAAiB1R,EAAIlB,IAJqBP,KA2BhD,IAAIqK,KAhBD5I,EAAIyD,MAAMwJ,SACZT,GAAK,kBAEHxM,EAAIyD,MAAMP,SAAW8J,EACvBR,GAAK,gBAGLA,GAAKxM,EAAIyD,MAAMN,QAAUnD,EAAIyD,MAAMP,OAAS,eAAiB,iBAC7D+B,EAAKY,aAAa,gBAAkB7F,EAAIyD,MAAMN,QAAUnD,EAAIyD,MAAMP,SAEhEwO,IAAiB1R,EAAIlB,KACvB0N,GAAK,gBAENvH,EAAKnG,GAAKkB,EAAIlB,GACdmG,EAAKa,UAAY0G,EACjBA,GAAMxM,EAAIyD,MAAMhE,SAAW,kBAAoB,KAAQO,EAAIyD,MAAML,SAAW,mBAAqB,IACxFpD,EAAI+P,OACZ,GAAG/P,EAAI+P,OAAOG,eAAetH,GAAI,CAChC,GAAS,SAANA,GAAkC,MAAlB5I,EAAI+P,OAAOnH,GAAc,SACnC,UAANA,EACF3D,EAAK8M,WAAW,GAAGlM,aAAa+C,EAAG5I,EAAI+P,OAAOnH,IAG9C4D,GAAK,IAAMxM,EAAI+P,OAAOnH,GA8BzB,GA1BG4D,EAAErM,SACJ8E,EAAK8M,WAAW,GAAGjM,UAAY,iBAAmB0G,IAE/CxM,EAAI6P,OAAqB,IAAb7P,EAAI6P,OAA+B,IAAb7P,EAAI6P,SACzB,IAAb7P,EAAI6P,KACN5K,EAAK8M,WAAW,GAAGA,WAAW,GAAGjM,WAAa,4BAEZ,IAA3B9F,EAAI6P,KAAKlS,QAAQ,OAA0C,IAA3BqC,EAAI6P,KAAKlS,QAAQ,KACxDsH,EAAK8M,WAAW,GAAGA,WAAW,GAAGjM,WAAa,IAAM9F,EAAI6P,KAAO,4BAG/D5K,EAAK8M,WAAW,GAAGA,WAAW,GAAGC,MAAMC,gBAAkB,QAAQjS,EAAI6P,KAAK,KAC1E5K,EAAK8M,WAAW,GAAGA,WAAW,GAAGC,MAAME,mBAAqB,gBAC5DjN,EAAK8M,WAAW,GAAGA,WAAW,GAAGC,MAAMG,eAAiB,OACxDlN,EAAK8M,WAAW,GAAGA,WAAW,GAAGjM,WAAa,6BAI7C/G,KAAK6E,SAASzF,KAAKsE,WACrBwC,EAAK8M,WAAW,GAAGhM,YAAY4H,EAAEyE,eAAepS,EAAIyJ,OAGpDxE,EAAK8M,WAAW,GAAGM,WAAarS,EAAIyJ,KAIlC8H,GAAQvR,EAAIuD,SAASpD,SAAWH,EAAIyD,MAAMN,QAAUqO,IAAiBxR,EAAIyD,MAAMP,OAAQ,CAIzF,KAHA1E,EAAImP,EAAE/H,cAAc,OAClBC,aAAa,OAAQ,SACvBrH,EAAEsH,UAAY,kBACVvH,EAAI,EAAGqK,EAAI5I,EAAIuD,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC1CC,EAAEuH,YAAYhH,KAAKoS,YAAYnR,EAAIuD,SAAShF,GAAIgT,GAAM,IAEvDtM,EAAKc,YAAYvH,GAKlB,GAHGiT,GACFxM,EAAKc,YAAY0L,IAEdtE,EAAa,CAKhB,IAHIuB,IACHA,EAAM3P,KAAK2E,QAAQ,IAEhBnF,EAAI,EAAGqK,EAAI8F,EAAIqD,WAAW5R,OAAQ5B,EAAIqK,EAAGrK,IAC5C,GAAGmQ,EAAIqD,WAAWxT,IAAMmQ,EAAIqD,WAAWxT,GAAGuH,YAAyE,IAA5D4I,EAAIqD,WAAWxT,GAAGuH,UAAUnI,QAAQ,mBAA2B,CACrHO,EAAMwQ,EAAIqD,WAAWxT,GACrB,MAGEL,KACHA,EAAMyP,EAAE/H,cAAc,OAClBC,aAAa,OAAQ,SACzB3H,EAAI4H,UAAY,kBAChB4I,EAAI3I,YAAY7H,IAIdmL,GAFHqF,EAAMxQ,GAEO6T,WAAW5R,OACvBuO,EAAI4D,aAAarN,EAAMyJ,EAAIqD,WAAW1I,IAGtCqF,EAAI3I,YAAYd,GAEdoJ,IACFZ,EAAI1O,KAAK2E,QAAQ,GAAG6O,UACpBhG,EAAIxN,KAAK2E,QAAQ,GAAG8O,WACpBvN,EAAK8M,WAAW,GAAG1K,QACnBtI,KAAK2E,QAAQ,GAAG6O,UAAY9E,EAC5B1O,KAAK2E,QAAQ,GAAG8O,WAAajG,GAS/B,OANGvM,EAAIyD,MAAMN,SAAWnD,EAAIyD,MAAMP,SACjClD,EAAIyD,MAAMN,QAAS,EACnBwF,WAAWhM,EAAEoK,OAAM,WAClBhI,KAAKqJ,UAAUpI,EAAIlB,IAAI,EAAO,KAC5BC,MAAO,IAEJkG,GAURmD,UAAY,SAAUpI,EAAKsM,EAAUtK,GACpC,IAAIyQ,EAAIC,EAAI/E,EAAGF,EACf,GAAG9Q,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKqJ,UAAUpI,EAAIyS,GAAKnG,EAAUtK,GAEnC,OAAO,EAGR,UADAhC,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,QAG/BkE,EAAYA,IAAcpF,EAAYmC,KAAK6E,SAASzF,KAAK6D,UAAYA,EACjEjD,KAAKoJ,UAAUnI,GAMfjB,KAAKmN,UAAUlM,IAWlB2N,EAAI5O,KAAKkJ,SAASjI,GAAK,GACvByN,EAAI1O,KACD4O,EAAExN,SACD6B,GAAa2L,EAAEpK,SAAS,oBAAoBpD,QAC9CwN,EAAEpK,SAAS,oBAAoBoP,MAAK,GAAM,GAExC3S,EAAIuD,SAASpD,SAAWpB,KAAKsJ,YAAYsF,EAAEpK,SAAS,oBAAoB,KAC1ExE,KAAKuS,cAActR,GAGhBgC,GAMHjD,KAAKkF,QAAQ,cAAe,CAAE,KAASjE,IACvC2N,EACEpK,SAAS,oBAAoBQ,IAAI,UAAU,QAAQwF,MACnDtD,YAAY,iBAAiBtC,SAAS,eAAevG,KAAK,iBAAiB,GAC3EmG,SAAS,oBAAoBoP,MAAK,GAAM,GACvCC,UAAU5Q,GAAW,WACrBjD,KAAKiT,MAAMa,QAAU,GACjBpF,EAAE/J,SACL+J,EAAExJ,QAAQ,aAAc,CAAE,KAASjE,SAbvCjB,KAAKkF,QAAQ,cAAe,CAAE,KAASjE,IACvC2N,EAAE,GAAG7H,UAAY6H,EAAE,GAAG7H,UAAUlI,QAAQ,gBAAiB,eACzD+P,EAAE,GAAG9H,aAAa,iBAAiB,KAgBrC7F,EAAIyD,MAAMN,QAAS,EAChBmJ,GACFA,EAASvL,KAAKhC,KAAMiB,GAAK,GAEtB2N,EAAExN,QAOLpB,KAAKkF,QAAQ,cAAe,CAAE,KAASjE,IAQxCjB,KAAKkF,QAAQ,YAAa,CAAE,KAASjE,IACjCgC,GAAc2L,EAAExN,QAOnBpB,KAAKkF,QAAQ,aAAc,CAAE,KAASjE,KAEhC,GApEJjB,KAAKoN,WAAWnM,GACX2I,WAAWhM,EAAEoK,OAAM,WACzBhI,KAAKqJ,UAAUpI,EAAKsM,EAAUtK,KAC5BjD,MAAO,UAEXA,KAAKoG,UAAUnF,GAAK,SAAU4H,EAAGkL,GAChC,OAAOA,EAAK/T,KAAKqJ,UAAUR,EAAG0E,EAAUtK,KAAcsK,GAAWA,EAASvL,KAAKhC,KAAM6I,GAAG,OAZtF0E,GACFA,EAASvL,KAAKhC,KAAMiB,GAAK,IAEnB,KAgFT+S,SAAW,SAAU/S,GAEpB,KADAA,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAC9B,OAAO,EAER,IAAIS,EAAGqK,EAAGyC,EAAIrL,EAAIsD,QAClB,IAAI/E,EAAI,EAAGqK,EAAIyC,EAAElL,OAAQ5B,EAAIqK,EAAGrK,GAAG,EAC/BA,IAAM5B,EAAEE,OAAOiB,MACjBiB,KAAKqJ,UAAUiD,EAAE9M,IAAI,EAAO,GAG9B,OAAO5B,EAAE,IAAMqD,EAAIlB,GAAGlB,QAAQjB,EAAEE,OAAOgB,QAAQ,QAASkB,KAAK2E,UAS9DqE,WAAa,SAAU/H,EAAKgC,GAC3B,IAAIyQ,EAAIC,EAAIjF,EAAGE,EACf,GAAGhR,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKgJ,WAAW/H,EAAIyS,GAAKzQ,GAE1B,OAAO,EAGR,UADAhC,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,SAG5BiB,KAAKoJ,UAAUnI,KAGlBgC,EAAYA,IAAcpF,EAAYmC,KAAK6E,SAASzF,KAAK6D,UAAYA,EACrEyL,EAAI1O,KACJ4O,EAAI5O,KAAKkJ,SAASjI,GAAK,GAEvBA,EAAIyD,MAAMN,QAAS,EAOnBpE,KAAKkF,QAAQ,aAAa,CAAE,KAASjE,SACjC2N,EAAExN,OAUD6B,EAMH2L,EACEpK,SAAS,oBAAoBnG,KAAK,QAAQ,4BAA4BmM,MACtEtD,YAAY,eAAetC,SAAS,iBAAiBvG,KAAK,iBAAiB,GAC3EmG,SAAS,oBAAoBoP,MAAK,GAAM,GAAMK,QAAQhR,GAAW,WACjEjD,KAAKiT,MAAMa,QAAU,GACrBlF,EAAEpK,SAAS,oBAAoBmB,SAC3B+I,EAAE/J,SACL+J,EAAExJ,QAAQ,cAAe,CAAE,KAASjE,QAZvC2N,EAAE,GAAG7H,UAAY6H,EAAE,GAAG7H,UAAUlI,QAAQ,cAAe,iBACvD+P,EAAEvQ,KAAK,iBAAiB,GAAOmG,SAAS,oBAAoBmB,SAC5D3F,KAAKkF,QAAQ,cAAe,CAAE,KAASjE,KANxCjB,KAAKkF,QAAQ,cAAe,CAAE,KAASjE,QA2BzCkH,YAAc,SAAUlH,GACvB,IAAIyS,EAAIC,EACR,GAAG/V,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKmI,YAAYlH,EAAIyS,IAEtB,OAAO,EAER,OAAG1T,KAAKoJ,UAAUnI,GACVjB,KAAKqJ,UAAUpI,GAEpBjB,KAAK+I,QAAQ9H,GACRjB,KAAKgJ,WAAW/H,QADxB,GAYDuI,SAAW,SAAUvI,EAAKgC,EAAWiR,GAGpC,GAFIjT,IAAOA,EAAMrD,EAAEE,OAAOiB,QAC1BkC,EAAMjB,KAAKkJ,SAASjI,IACT,OAAO,EAClB,IAAyFzB,EAAGqK,EAAGsK,EAA3FxI,EAAM1K,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAOiB,KAAK+F,mBAAqB/F,KAAKkJ,SAASjI,GAAK,GAClF,IAAI0K,EAAIvK,OAAQ,CACf,IAAI5B,EAAI,EAAGqK,EAAI5I,EAAIwD,WAAWrD,OAAQ5B,EAAIqK,EAAGrK,IACzCQ,KAAKoJ,UAAUpJ,KAAKwB,OAAO7B,KAAKsB,EAAIwD,WAAWjF,OACjDQ,KAAKwB,OAAO7B,KAAKsB,EAAIwD,WAAWjF,IAAIkF,MAAMN,QAAS,GAGrD,OAAOpE,KAAKkF,QAAQ,WAAY,CAAE,KAASjE,IAE5CiT,EAAeA,GAAgBvI,EAC/BwI,EAAQnU,MACR2L,EAAM3L,KAAKoJ,UAAUnI,GAAO0K,EAAIvG,KAAK,kBAAkBE,UAAYqG,EAAIvG,KAAK,mBACxE7F,MAAK,WACR4U,EAAM9K,UACLrJ,MACA,SAASkG,EAAMyD,GAAaA,GAAU3J,KAAKkN,UAAUhH,IAASlG,KAAKwJ,SAAStD,EAAMjD,EAAWiR,KAC7FjR,GAAa,MAGmC,IAA/CiR,EAAa9O,KAAK,kBAAkBhE,QAOtCpB,KAAKkF,QAAQ,WAAY,CAAE,KAASlF,KAAKkJ,SAASgL,MAUpDE,UAAY,SAAUnT,EAAKgC,GAG1B,GAFIhC,IAAOA,EAAMrD,EAAEE,OAAOiB,QAC1BkC,EAAMjB,KAAKkJ,SAASjI,IACT,OAAO,EAClB,IACezB,EAAGqK,EADd8B,EAAM1K,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAOiB,KAAK+F,mBAAqB/F,KAAKkJ,SAASjI,GAAK,GACjFkT,EAAQnU,KAKT,IAJG2L,EAAIvK,SACNuK,EAAM3L,KAAK+I,QAAQ9H,GAAO0K,EAAIvG,KAAK,gBAAgBE,UAAYqG,EAAIvG,KAAK,gBACxExH,EAAE+N,EAAI0I,MAAM5H,WAAWlN,MAAK,WAAc4U,EAAMnL,WAAWhJ,KAAMiD,GAAa,OAE3EzD,EAAI,EAAGqK,EAAI5I,EAAIwD,WAAWrD,OAAQ5B,EAAIqK,EAAGrK,IAC5CQ,KAAKwB,OAAO7B,KAAKsB,EAAIwD,WAAWjF,IAAIkF,MAAMN,QAAS,EAQpDpE,KAAKkF,QAAQ,YAAa,CAAE,KAASjE,KAQtCqT,YAAc,SAAUrT,GAEvB,OADAA,EAAMjB,KAAKkJ,SAASjI,KACNA,EAAIyD,OAASzD,EAAIyD,MAAML,UAQtCkQ,YAAc,SAAUtT,GACvB,IAAIyS,EAAIC,EACR,GAAG/V,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKuU,YAAYtT,EAAIyS,IAEtB,OAAO,EAGR,KADAzS,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAC9B,OAAO,EAERkC,EAAIyD,MAAML,UAAW,EACrBrE,KAAKkJ,SAASjI,GAAI,GAAMuD,SAAS,kBAAkB0C,YAAY,mBAAmB7I,KAAK,iBAAiB,GAOxG2B,KAAKkF,QAAQ,cAAe,CAAE,KAASjE,KAQxCuT,aAAe,SAAUvT,GACxB,IAAIyS,EAAIC,EACR,GAAG/V,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKwU,aAAavT,EAAIyS,IAEvB,OAAO,EAGR,KADAzS,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAC9B,OAAO,EAERkC,EAAIyD,MAAML,UAAW,EACrBrE,KAAKkJ,SAASjI,GAAI,GAAMuD,SAAS,kBAAkBI,SAAS,mBAAmBvG,KAAK,iBAAiB,GAOrG2B,KAAKkF,QAAQ,eAAgB,CAAE,KAASjE,KAOzCwT,UAAY,SAAUxT,GAErB,OAA4B,KAD5BA,EAAMjB,KAAKkJ,SAASjI,IACTyD,MAAMwJ,QASlBwG,UAAY,SAAUzT,EAAK0T,GAC1B,IAAIjB,EAAIC,EACR,GAAG/V,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAK0U,UAAUzT,EAAIyS,IAAK,GAKzB,OAHKiB,GACJ3U,KAAK+P,UAEC,EAGR,KADA9O,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAC9B,OAAO,EAEJkC,EAAIyD,MAAMwJ,SACbjN,EAAIyD,MAAMwJ,QAAS,EACnBlO,KAAKuP,cAActO,EAAIqD,QACnBqQ,GACH3U,KAAK+P,SAQN/P,KAAKkF,QAAQ,YAAa,CAAE,KAASjE,MAUvC2T,UAAY,SAAU3T,EAAK0T,GAC1B,IAAIjB,EAAIC,EACR,GAAG/V,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAK4U,UAAU3T,EAAIyS,IAAK,GAKzB,OAHKiB,GACJ3U,KAAK+P,UAEC,EAGR,KADA9O,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAC9B,OAAO,EAELkC,EAAIyD,MAAMwJ,SACZjN,EAAIyD,MAAMwJ,QAAS,EACnBlO,KAAKuP,cAActO,EAAIqD,QACnBqQ,GACH3U,KAAK+P,SAQN/P,KAAKkF,QAAQ,YAAa,CAAE,KAASjE,MAQvC4T,SAAW,SAAUF,GACpB,IAAInV,EAAGwO,EAAIhO,KAAKwB,OAAO7B,KAAM0M,EAAM,GACnC,IAAI7M,KAAKwO,EACLA,EAAEmD,eAAe3R,IAAMA,IAAM5B,EAAEE,OAAOiB,OAASiP,EAAExO,GAAGkF,MAAMwJ,SAC5DF,EAAExO,GAAGkF,MAAMwJ,QAAS,EACpB7B,EAAIE,KAAK/M,IAcX,OAXAQ,KAAKwB,OAAOwC,mBAAoB,EAC5B2Q,GACH3U,KAAK+P,SAQN/P,KAAKkF,QAAQ,WAAY,CAAE,MAAUmH,IAC9BA,GAORyI,SAAW,SAAUH,GACpB,IAAInV,EAAGwO,EAAIhO,KAAKwB,OAAO7B,KAAM0M,EAAM,GACnC,IAAI7M,KAAKwO,EACLA,EAAEmD,eAAe3R,IAAMA,IAAM5B,EAAEE,OAAOiB,MAAQiP,EAAExO,GAAGkF,MAAMwJ,SAC3DF,EAAExO,GAAGkF,MAAMwJ,QAAS,EACpB7B,EAAIE,KAAK/M,IAcX,OAXAQ,KAAKwB,OAAOwC,mBAAoB,EAC5B2Q,GACH3U,KAAK+P,SAQN/P,KAAKkF,QAAQ,WAAY,CAAE,MAAUmH,IAC9BA,GAUR9D,cAAgB,SAAUtH,EAAKuG,GAC9B,GAAGxH,KAAKsU,YAAYrT,GACnB,OAAO,EAWR,GATIuG,GAAkB,iBAANA,IACfA,EAAI,IAILxH,KAAKI,MAAMhB,KAAK2V,aAAe/U,KAAKI,MAAMhB,KAAK2V,cAAgB/U,KAAKI,MAAMhB,KAAK2V,aAAahV,KAAOlC,EAAYmC,KAAKkJ,SAASlJ,KAAKI,MAAMhB,KAAK2V,aAAahV,IAAM,KAC7JC,KAAKI,MAAMhB,KAAK2V,eAAiB/U,KAAKI,MAAMhB,KAAK2V,aAAarQ,MAAMhE,WAAYV,KAAKI,MAAMhB,KAAK2V,aAAe,OAC9G/U,KAAKI,MAAMhB,KAAK2V,cAAgB/U,KAAKI,MAAMhB,KAAKsB,SAASU,SAAUpB,KAAKI,MAAMhB,KAAK2V,aAAe/U,KAAKkJ,SAASlJ,KAAKI,MAAMhB,KAAKsB,SAASV,KAAKI,MAAMhB,KAAKsB,SAASU,OAAS,KAE3KpB,KAAK6E,SAASzF,KAAK8D,WAAcsE,EAAEoB,SAAYpB,EAAEkB,SAAYlB,EAAEiB,aAAcjB,EAAEiB,UAAczI,KAAKI,MAAMhB,KAAK2V,cAAiB/U,KAAKiJ,WAAWhI,IAAQjB,KAAKiJ,WAAWhI,KAASjB,KAAKI,MAAMhB,KAAK2V,aAAazQ,QAW/M,GAAGkD,EAAEiB,SAAU,CACd,IAICjJ,EAAGqK,EAJAhB,EAAI7I,KAAKkJ,SAASjI,GAAKlB,GAC1ByN,EAAIxN,KAAKI,MAAMhB,KAAK2V,aAAahV,GACjCuM,EAAItM,KAAKkJ,SAASlJ,KAAKI,MAAMhB,KAAK2V,aAAazQ,QAAQE,SACvDiJ,GAAI,EAEL,IAAIjO,EAAI,EAAGqK,EAAIyC,EAAElL,OAAQ5B,EAAIqK,EAAGrK,GAAK,EAEjC8M,EAAE9M,KAAOqJ,IACX4E,GAAKA,GAEHnB,EAAE9M,KAAOgO,IACXC,GAAKA,GAEFzN,KAAKsU,YAAYhI,EAAE9M,MAAQiO,GAAKnB,EAAE9M,KAAOqJ,GAAKyD,EAAE9M,KAAOgO,EAM1DxN,KAAKgV,cAAc1I,EAAE9M,IAAI,EAAMgI,GAL1BxH,KAAKyU,UAAUnI,EAAE9M,KACrBQ,KAAKiV,YAAY3I,EAAE9M,IAAI,GAAM,EAAOgI,GAOvCxH,KAAKkF,QAAQ,UAAW,CAAE,OAAW,cAAe,KAASlF,KAAKkJ,SAASjI,GAAM,SAAajB,KAAKI,MAAMhB,KAAKsB,SAAU,MAAU8G,SAG9HxH,KAAKkV,YAAYjU,GAIpBjB,KAAKgV,cAAc/T,GAAK,EAAOuG,GAH/BxH,KAAKiV,YAAYhU,GAAK,GAAO,EAAOuG,QArClCxH,KAAK6E,SAASzF,KAAK8D,WAAasE,EAAEoB,SAAWpB,EAAEkB,SAAWlB,EAAEiB,WAAazI,KAAKkV,YAAYjU,GAC7FjB,KAAKgV,cAAc/T,GAAK,EAAOuG,IAG/BxH,KAAKmV,cAAa,GAClBnV,KAAKiV,YAAYhU,GAAK,GAAO,EAAOuG,GACpCxH,KAAKI,MAAMhB,KAAK2V,aAAe/U,KAAKkJ,SAASjI,IA6C/CjB,KAAKkF,QAAQ,gBAAiB,CAAE,KAASlF,KAAKkJ,SAASjI,GAAM,MAAUuG,KASxE4D,WAAa,SAAUnK,GAEtB,KADAA,EAAMjB,KAAKkJ,SAASjI,GAAK,MACbA,EAAIG,QAAUH,EAAIuD,SAAS,mBAAmBpD,OACzD,OAAO,EAER,IAAIyH,EAAI7I,KAAK2E,QAAQS,KAAK,mBAAoBsJ,EAAI1O,KAAK2E,QACpDkE,GAAKA,EAAEzH,QAAUpB,KAAKqL,aAAaxC,GAEtC5H,EAAIuD,SAAS,kBAAkBI,SAAS,kBAOxC5E,KAAKkF,QAAQ,aAAc,CAAE,KAASlF,KAAKkJ,SAASjI,KACpD2I,YAAW,WAAc8E,EAAErQ,KAAK,wBAAyB4C,EAAI,GAAGlB,MAAQ,IASzEsL,aAAe,SAAUpK,GAExB,KADAA,EAAMjB,KAAKkJ,SAASjI,GAAK,MACbA,EAAIG,SAAWH,EAAIuD,SAAS,mBAAmBpD,OAC1D,OAAO,EAERH,EAAIuD,SAAS,kBAAkB0C,YAAY,kBAO3ClH,KAAKkF,QAAQ,eAAgB,CAAE,KAASlF,KAAKkJ,SAASjI,MAUvDgU,YAAc,SAAUhU,EAAKmU,EAAeC,EAAc7N,GACzD,IAAImE,EAAK+H,EAAIC,EACb,GAAG/V,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKiV,YAAYhU,EAAIyS,GAAK0B,EAAeC,EAAc7N,GAExD,OAAO,EAGR,KADAvG,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAC9B,OAAO,EAER4M,EAAM3L,KAAKkJ,SAASjI,GAAK,GACrBA,EAAIyD,MAAMhE,WACbO,EAAIyD,MAAMhE,UAAW,EACrBV,KAAKI,MAAMhB,KAAKsB,SAAS6L,KAAKtL,EAAIlB,IAC9BsV,IACH1J,EAAM3L,KAAKgU,SAAS/S,IAElB0K,GAAOA,EAAIvK,QACbuK,EAAItN,KAAK,iBAAiB,GAAMmG,SAAS,kBAAkBI,SAAS,kBAUrE5E,KAAKkF,QAAQ,cAAe,CAAE,KAASjE,EAAK,SAAajB,KAAKI,MAAMhB,KAAKsB,SAAU,MAAU8G,IACzF4N,GAUHpV,KAAKkF,QAAQ,UAAW,CAAE,OAAW,cAAe,KAASjE,EAAK,SAAajB,KAAKI,MAAMhB,KAAKsB,SAAU,MAAU8G,MAWtHwN,cAAgB,SAAU/T,EAAKmU,EAAe5N,GAC7C,IAAIkM,EAAIC,EAAIhI,EACZ,GAAG/N,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKgV,cAAc/T,EAAIyS,GAAK0B,EAAe5N,GAE5C,OAAO,EAGR,KADAvG,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAC9B,OAAO,EAER4M,EAAM3L,KAAKkJ,SAASjI,GAAK,GACtBA,EAAIyD,MAAMhE,WACZO,EAAIyD,MAAMhE,UAAW,EACrBV,KAAKI,MAAMhB,KAAKsB,SAAW9C,EAAEmM,OAAOuL,kBAAkBtV,KAAKI,MAAMhB,KAAKsB,SAAUO,EAAIlB,IACjF4L,EAAIvK,QACNuK,EAAItN,KAAK,iBAAiB,GAAOmG,SAAS,kBAAkB0C,YAAY,kBAUzElH,KAAKkF,QAAQ,gBAAiB,CAAE,KAASjE,EAAK,SAAajB,KAAKI,MAAMhB,KAAKsB,SAAU,MAAU8G,IAC3F4N,GACHpV,KAAKkF,QAAQ,UAAW,CAAE,OAAW,gBAAiB,KAASjE,EAAK,SAAajB,KAAKI,MAAMhB,KAAKsB,SAAU,MAAU8G,MAUxH+N,WAAa,SAAUH,GACtB,IAA+C5V,EAAGqK,EAA9C1K,EAAMa,KAAKI,MAAMhB,KAAKsB,SAASoJ,OAAO,IAE1C,IADA9J,KAAKI,MAAMhB,KAAKsB,SAAWV,KAAKwB,OAAO7B,KAAK/B,EAAEE,OAAOiB,MAAM0F,WAAWqF,SAClEtK,EAAI,EAAGqK,EAAI7J,KAAKI,MAAMhB,KAAKsB,SAASU,OAAQ5B,EAAIqK,EAAGrK,IACnDQ,KAAKwB,OAAO7B,KAAKK,KAAKI,MAAMhB,KAAKsB,SAASlB,MAC5CQ,KAAKwB,OAAO7B,KAAKK,KAAKI,MAAMhB,KAAKsB,SAASlB,IAAIkF,MAAMhE,UAAW,GAGjEV,KAAK+P,QAAO,GAOZ/P,KAAKkF,QAAQ,aAAc,CAAE,SAAalF,KAAKI,MAAMhB,KAAKsB,WACtD0U,GACHpV,KAAKkF,QAAQ,UAAW,CAAE,OAAW,aAAc,SAAalF,KAAKI,MAAMhB,KAAKsB,SAAU,cAAkBvB,KAS9GgW,aAAe,SAAUC,GACxB,IAA+C5V,EAAGqK,EAA9C1K,EAAMa,KAAKI,MAAMhB,KAAKsB,SAASoJ,OAAO,IAC1C,IAAItK,EAAI,EAAGqK,EAAI7J,KAAKI,MAAMhB,KAAKsB,SAASU,OAAQ5B,EAAIqK,EAAGrK,IACnDQ,KAAKwB,OAAO7B,KAAKK,KAAKI,MAAMhB,KAAKsB,SAASlB,MAC5CQ,KAAKwB,OAAO7B,KAAKK,KAAKI,MAAMhB,KAAKsB,SAASlB,IAAIkF,MAAMhE,UAAW,GAGjEV,KAAKI,MAAMhB,KAAKsB,SAAW,GAC3BV,KAAK2E,QAAQS,KAAK,mBAAmB8B,YAAY,kBAAkB5C,SAASjG,KAAK,iBAAiB,GAQlG2B,KAAKkF,QAAQ,eAAgB,CAAE,SAAalF,KAAKI,MAAMhB,KAAKsB,SAAU,KAASvB,IAC3EiW,GACHpV,KAAKkF,QAAQ,UAAW,CAAE,OAAW,eAAgB,SAAalF,KAAKI,MAAMhB,KAAKsB,SAAU,cAAkBvB,KAShH+V,YAAc,SAAUjU,GAEvB,UADAA,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,OAGxBkC,EAAIyD,MAAMhE,UAQlB8U,aAAe,SAAUlD,GACxB,OAAOA,EAAO1U,EAAE6X,IAAIzV,KAAKI,MAAMhB,KAAKsB,SAAU9C,EAAEoK,OAAM,SAAUxI,GAAK,OAAOQ,KAAKkJ,SAAS1J,KAAOQ,OAASA,KAAKI,MAAMhB,KAAKsB,SAASqB,SAQpI2T,iBAAmB,SAAUpD,GAC5B,IACW9S,EAAGqK,EAAGpK,EAAG+N,EADhBrO,EAAMa,KAAKwV,cAAa,GAC3BvU,EAAM,GACP,IAAIzB,EAAI,EAAGqK,EAAI1K,EAAIiC,OAAQ5B,EAAIqK,EAAGrK,IACjCyB,EAAI9B,EAAIK,GAAGO,IAAMZ,EAAIK,GAEtB,IAAIA,EAAI,EAAGqK,EAAI1K,EAAIiC,OAAQ5B,EAAIqK,EAAGrK,IACjC,IAAIC,EAAI,EAAG+N,EAAIrO,EAAIK,GAAGiF,WAAWrD,OAAQ3B,EAAI+N,EAAG/N,IAC5CwB,EAAI9B,EAAIK,GAAGiF,WAAWhF,YACjBwB,EAAI9B,EAAIK,GAAGiF,WAAWhF,IAKhC,IAAID,KADJL,EAAM,GACG8B,EACLA,EAAIkQ,eAAe3R,IACrBL,EAAIoN,KAAK/M,GAGX,OAAO8S,EAAO1U,EAAE6X,IAAItW,EAAKvB,EAAEoK,OAAM,SAAUxI,GAAK,OAAOQ,KAAKkJ,SAAS1J,KAAOQ,OAASb,GAQtFwW,oBAAsB,SAAUrD,GAC/B,IACW9S,EAAGqK,EADV1K,EAAMa,KAAKwV,cAAa,GAC3BvU,EAAM,GACP,IAAIzB,EAAI,EAAGqK,EAAI1K,EAAIiC,OAAQ5B,EAAIqK,EAAGrK,IAC7BL,EAAIK,GAAGgF,SAASpD,QACnBH,EAAIsL,KAAKpN,EAAIK,GAAGO,IAGlB,OAAOuS,EAAO1U,EAAE6X,IAAIxU,EAAKrD,EAAEoK,OAAM,SAAUxI,GAAK,OAAOQ,KAAKkJ,SAAS1J,KAAOQ,OAASiB,GAQtF2U,UAAY,WACX,IAgBGpW,EAhBCkF,EAAQ,CACX,KAAS,CACR,KAAS,GACT,OAAW,CACV,KAAS1E,KAAK2E,QAAQ8O,aACtB,IAAQzT,KAAK2E,QAAQ6O;;;;;;;;AAStB,SAAa,KAGf,IAAIhU,KAAKQ,KAAKwB,OAAO7B,KACjBK,KAAKwB,OAAO7B,KAAKwR,eAAe3R,IAC/BA,IAAM5B,EAAEE,OAAOiB,OACdiB,KAAKwB,OAAO7B,KAAKH,GAAGkF,MAAMN,QAC5BM,EAAMtF,KAAKyW,KAAKtJ,KAAK/M,GAEnBQ,KAAKwB,OAAO7B,KAAKH,GAAGkF,MAAMhE,UAC5BgE,EAAMtF,KAAKsB,SAAS6L,KAAK/M,IAK7B,OAAOkF,GAURoR,UAAY,SAAUpR,EAAO6I,GAC5B,GAAG7I,EAAO,CAIT,GAHGA,EAAMtF,MAAQsF,EAAMtF,KAAKsB,UAAYgE,EAAMtF,KAAK2W,oBAAsBlY,IACxE6G,EAAMtF,KAAK2W,kBAAoB/V,KAAKI,MAAMhB,KAAKsB,SAASoJ,OAAO,IAAIkM,OAAOtJ,KAAK,MAE7EhI,EAAMtF,KAAM,CACd,IAAe+U,EAAO3U,EACtB,GAAGkF,EAAMtF,KAAKyW,KAYb,OAXIjY,EAAE8P,QAAQhJ,EAAMtF,KAAKyW,OAAUnR,EAAMtF,KAAKyW,KAAKzU,OAKlDpB,KAAK2N,YAAYjJ,EAAMtF,KAAKyW,MAAM,SAAU1H,GAC3CnO,KAAKqJ,UAAU8E,GAAO,EAAO,UACtBzJ,EAAMtF,KAAKyW,KAClB7V,KAAK8V,UAAUpR,EAAO6I,cAPhB7I,EAAMtF,KAAKyW,KAClB7V,KAAK8V,UAAUpR,EAAO6I,KAShB,EAER,GAAG7I,EAAMtF,KAAK6W,OASb,OARGvR,EAAMtF,KAAK6W,QAAUvR,EAAMtF,KAAK6W,OAAOC,OAASrY,GAClDmC,KAAK2E,QAAQ8O,WAAW/O,EAAMtF,KAAK6W,OAAOC,MAExCxR,EAAMtF,KAAK6W,QAAUvR,EAAMtF,KAAK6W,OAAOE,MAAQtY,GACjDmC,KAAK2E,QAAQ6O,UAAU9O,EAAMtF,KAAK6W,OAAOE,YAEnCzR,EAAMtF,KAAK6W,OAClBjW,KAAK8V,UAAUpR,EAAO6I,IACf,EAER,GAAG7I,EAAMtF,KAAKsB,SAab,OAZAyT,EAAQnU,KACJ0E,EAAMtF,KAAK2W,oBAAsBlY,GACpC6G,EAAMtF,KAAK2W,oBAAsB/V,KAAKI,MAAMhB,KAAKsB,SAASoJ,OAAO,IAAIkM,OAAOtJ,KAAK,OAEjF1M,KAAKmV,eACLvX,EAAE2B,KAAKmF,EAAMtF,KAAKsB,UAAU,SAAUlB,EAAGiL,GACxC0J,EAAMc,YAAYxK,GAAG,GAAO,cAGvB/F,EAAMtF,KAAK2W,yBACXrR,EAAMtF,KAAKsB,SAClBV,KAAK8V,UAAUpR,EAAO6I,IACf,EAER,IAAI/N,KAAKkF,EACLA,EAAMyM,eAAe3R,IAAY,SAANA,IAAyD,IAAzC5B,EAAEiQ,QAAQrO,EAAGQ,KAAK6E,SAASnG,iBACjEgG,EAAMlF,GAGf,GAAG5B,EAAEwY,cAAc1R,EAAMtF,MAGxB,cAFOsF,EAAMtF,KACbY,KAAK8V,UAAUpR,EAAO6I,IACf,EAGT,OAAG3P,EAAEwY,cAAc1R,KAClBA,EAAQ,KACL6I,GAAYA,EAASvL,KAAKhC,MAM7BA,KAAKkF,QAAQ,cACN,GAIT,OAAO,GASRmR,QAAU,SAAUC,EAAcC,GACjCvW,KAAKI,MAAMhB,KAAKsF,OAAyB,IAAjB6R,EAAwB,GAAKvW,KAAK4V,YACvDW,GAAgB3Y,EAAE8N,WAAW6K,KAAiBvW,KAAKI,MAAMhB,KAAKsF,MAAQ6R,EAAavU,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKsF,QACjH1E,KAAKE,KAAO,EACZF,KAAKwB,OAAO7B,KAAO,GACnBK,KAAKwB,OAAO7B,KAAK/B,EAAEE,OAAOiB,MAAQ,CACjCgB,GAAKnC,EAAEE,OAAOiB,KACduF,OAAS,KACTC,QAAU,GACVC,SAAW,GACXC,WAAa,GACbC,MAAQ,CAAEP,QAAS,IAEpBnE,KAAKI,MAAMhB,KAAKsB,SAAW,GAC3BV,KAAKI,MAAMhB,KAAK2V,aAAe,KAC/B/U,KAAKI,MAAMhB,KAAK0B,QAAU,KAE1B,IAAI2M,EAAIzN,KAAK+F,mBAAmB,GAAGgB,UAC/BuP,IACHtW,KAAK2E,QAAQiB,KAAK,cAAiB6H,EAAjB,8GAAoIzN,KAAKC,IAAzI,wIAA0RD,KAAK6F,WAAW,eAAiB,kBAC7U7F,KAAK2E,QAAQtG,KAAK,wBAAwB,IAAI2B,KAAKC,IAAI,aAExDD,KAAKoG,UAAUxI,EAAEE,OAAOiB,MAAM,SAAU8J,EAAGgC,GACvCA,IACF7K,KAAK+F,mBAAmB,GAAGgB,UAAY0G,EACpCzN,KAAKsJ,YAAYtJ,KAAK+F,mBAAmB,KAC3C/F,KAAK2E,QAAQtG,KAAK,wBAAwB2B,KAAKsJ,YAAYtJ,KAAK+F,mBAAmB,IAAIhG,IAExFC,KAAK8V,UAAUlY,EAAE0B,QAAO,EAAM,GAAIU,KAAKI,MAAMhB,KAAKsF,QAAQ,WAMzD1E,KAAKkF,QAAQ,eAGflF,KAAKI,MAAMhB,KAAKsF,MAAQ,SAS1B8R,aAAe,SAAUvV,GAExB,KADAA,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAQ,OAAO,EAC9C,IAAIqF,EAAS,GAAIqK,EAAU,GAAI5D,EAAI7K,KAAKI,MAAMhB,KAAKsB,SAASoJ,OAAO,IACnE2E,EAAQlC,KAAKtL,EAAIlB,KACO,IAArBkB,EAAIyD,MAAMN,QAAmBA,EAAOmI,KAAKtL,EAAIlB,IAChDC,KAAKkJ,SAASjI,GAAK,GAAMmE,KAAK,gBAAgB7F,MAAK,WAAakP,EAAQlC,KAAKvM,KAAKD,IAAKqE,EAAOmI,KAAKvM,KAAKD,OACxGC,KAAK2N,YAAYc,EAAS7Q,EAAEoK,OAAM,SAAUmG,GAC3CnO,KAAKqJ,UAAUjF,GAAQ,EAAO,GAC9BpE,KAAKiV,YAAYpK,GAQjB7K,KAAKkF,QAAQ,eAAgB,CAAE,KAASjE,EAAK,MAAUkN,MACrDnO,OAAO,GAAO,IAUlByW,OAAS,SAAUxV,EAAKlB,GAEvB,KADAkB,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAQ,OAAO,EAC9C,IAAIS,EAAGqK,EAAGmE,EAAIhO,KAAKwB,OAAO7B,KAAM+S,EAAMzR,EAAIlB,GAI1C,IAHAA,EAAKA,EAAG8Q,WAER7C,EAAE/M,EAAIqD,QAAQE,SAAS5G,EAAEiQ,QAAQ5M,EAAIlB,GAAIiO,EAAE/M,EAAIqD,QAAQE,WAAazE,EAChEP,EAAI,EAAGqK,EAAI5I,EAAIsD,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,IACzCwO,EAAE/M,EAAIsD,QAAQ/E,IAAIiF,WAAW7G,EAAEiQ,QAAQ5M,EAAIlB,GAAIiO,EAAE/M,EAAIsD,QAAQ/E,IAAIiF,aAAe1E,EAGjF,IAAIP,EAAI,EAAGqK,EAAI5I,EAAIuD,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC1CwO,EAAE/M,EAAIuD,SAAShF,IAAI8E,OAASvE,EAE7B,IAAIP,EAAI,EAAGqK,EAAI5I,EAAIwD,WAAWrD,OAAQ5B,EAAIqK,EAAGrK,IAC5CwO,EAAE/M,EAAIwD,WAAWjF,IAAI+E,QAAQ3G,EAAEiQ,QAAQ5M,EAAIlB,GAAIiO,EAAE/M,EAAIwD,WAAWjF,IAAI+E,UAAYxE,EAwBjF,OArBU,KADVP,EAAI5B,EAAEiQ,QAAQ5M,EAAIlB,GAAIC,KAAKI,MAAMhB,KAAKsB,aACvBV,KAAKI,MAAMhB,KAAKsB,SAASlB,GAAKO,IAE7CP,EAAIQ,KAAKkJ,SAASjI,EAAIlB,IAAI,MAEzBP,EAAEnB,KAAK,KAAM0B,GACVC,KAAK2E,QAAQtG,KAAK,2BAA6B4C,EAAIlB,IACrDC,KAAK2E,QAAQtG,KAAK,wBAAyB0B,WAGtCiO,EAAE/M,EAAIlB,IACbkB,EAAIlB,GAAKA,EACTkB,EAAI8P,QAAQhR,GAAKA,EACjBiO,EAAEjO,GAAMkB,EAQRjB,KAAKkF,QAAQ,SAAS,CAAE,KAASjE,EAAK,IAAQA,EAAIlB,GAAI,IAAQ2S,KACvD,GAQRlG,SAAW,SAAUvL,GAEpB,UADAA,EAAMjB,KAAKkJ,SAASjI,KACJA,EAAIlB,KAAOnC,EAAEE,OAAOiB,OAAgBkC,EAAIyJ,MAWzDgM,SAAW,SAAUzV,EAAK0V,GACzB,IAAIjD,EAAIC,EACR,GAAG/V,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAK0W,SAASzV,EAAIyS,GAAKiD,GAExB,OAAO,EAGR,UADA1V,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,QAC/BkC,EAAIyJ,KAAOiM,EACR3W,KAAKkJ,SAASjI,GAAK,GAAMG,QAC3BpB,KAAKoS,YAAYnR,EAAIlB,IAStBC,KAAKkF,QAAQ,WAAW,CAAE,IAAQjE,EAAK,KAAS0V,KACzC,IAgBRC,SAAW,SAAU3V,EAAK/B,EAAS2X,GAElC,KADA5V,EAAMjB,KAAKkJ,SAASjI,GAAOrD,EAAEE,OAAOiB,OACzB,OAAO,EACfG,GAAWA,EAAQ2X,OAASA,IAAQA,EAAO,IAC9C,IASGrX,EAAGqK,EATF1K,EAAM,CACT,GAAO8B,EAAIlB,GACX,KAASkB,EAAIyJ,KACb,KAAS1K,KAAK8W,SAAS7V,GACvB,QAAYrD,EAAE0B,QAAO,EAAM,GAAI2B,EAAI8P,SACnC,OAAWnT,EAAE0B,QAAO,EAAM,GAAI2B,EAAI+P,QAClC,MAAU,GACV,OAAS9R,IAAWA,EAAQ6X,UAAkBnZ,EAAE0B,QAAO,EAAM1B,EAAE8P,QAAQzM,EAAItB,MAAM,GAAG,GAAIsB,EAAItB,OAS7F,GANGT,GAAWA,EAAQ2X,KACrB1X,EAAImF,OAASrD,EAAIqD,OAGjBnF,EAAIqF,SAAW,GAEZtF,GAAYA,EAAQ8X,gBAOhB7X,EAAIuF,WANX,IAAIlF,KAAKyB,EAAIyD,MACTzD,EAAIyD,MAAMyM,eAAe3R,KAC3BL,EAAIuF,MAAMlF,GAAKyB,EAAIyD,MAAMlF,IAwB5B,GAlBGN,GAAWA,EAAQ+X,mBACd9X,EAAI4R,QAET7R,GAAWA,EAAQgY,kBACd/X,EAAI6R,OAET9R,GAAWA,EAAQiY,eACdhY,EAAIY,GACRZ,EAAI4R,SAAW5R,EAAI4R,QAAQhR,WACtBZ,EAAI4R,QAAQhR,GAEjBZ,EAAI6R,QAAU7R,EAAI6R,OAAOjR,WACpBZ,EAAI6R,OAAOjR,IAGjBb,GAAWA,EAAQ2X,MAAQ5V,EAAIlB,KAAOnC,EAAEE,OAAOiB,MACjD8X,EAAKtK,KAAKpN,IAEPD,IAAYA,EAAQkY,YACvB,IAAI5X,EAAI,EAAGqK,EAAI5I,EAAIuD,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IACvCN,GAAWA,EAAQ2X,KACrB7W,KAAK4W,SAAS3V,EAAIuD,SAAShF,GAAIN,EAAS2X,GAGxC1X,EAAIqF,SAAS+H,KAAKvM,KAAK4W,SAAS3V,EAAIuD,SAAShF,GAAIN,IAIpD,OAAOA,GAAWA,EAAQ2X,KAAOA,EAAQ5V,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAOI,EAAIqF,SAAWrF,GAapFkY,YAAc,SAAU1H,EAAKzJ,EAAMoR,EAAK/J,EAAUJ,GAGjD,GAFW,OAARwC,IAAgBA,EAAM/R,EAAEE,OAAOiB,QAClC4Q,EAAM3P,KAAKkJ,SAASyG,IACT,OAAO,EAElB,KADA2H,EAAMA,IAAQzZ,EAAY,OAASyZ,GAC3BzG,WAAW0G,MAAM,sBAAwBpK,IAAcnN,KAAKmN,UAAUwC,GAC7E,OAAO3P,KAAKoG,UAAUuJ,GAAK,WAAc3P,KAAKqX,YAAY1H,EAAKzJ,EAAMoR,EAAK/J,GAAU,MASrF,IAAIpO,EAAK0Q,EAAKrQ,EAAGqK,EAMjB,OAbI3D,IAAQA,EAAO,CAAE,KAASlG,KAAK6F,WAAW,eAE7CK,EADkB,iBAATA,EACF,CAAE,KAASA,GAEXtI,EAAE0B,QAAO,EAAM,GAAI4G,IAEnBwE,OAAS7M,IAAaqI,EAAKwE,KAAO1K,KAAK6F,WAAW,aAGvD8J,EAAI5P,KAAOnC,EAAEE,OAAOiB,OACX,WAARuY,IAAoBA,EAAM,SAClB,UAARA,IAAmBA,EAAM,SAEtBA,GACN,IAAK,SACJnY,EAAMa,KAAKkJ,SAASyG,EAAIrL,QACxBgT,EAAM1Z,EAAEiQ,QAAQ8B,EAAI5P,GAAIZ,EAAIqF,UAC5BmL,EAAMxQ,EACN,MACD,IAAK,QACJA,EAAMa,KAAKkJ,SAASyG,EAAIrL,QACxBgT,EAAM1Z,EAAEiQ,QAAQ8B,EAAI5P,GAAIZ,EAAIqF,UAAY,EACxCmL,EAAMxQ,EACN,MACD,IAAK,SACL,IAAK,QACJmY,EAAM,EACN,MACD,IAAK,OACJA,EAAM3H,EAAInL,SAASpD,OACnB,MACD,QACKkW,IAAOA,EAAM,GAKnB,GAFGA,EAAM3H,EAAInL,SAASpD,SAAUkW,EAAM3H,EAAInL,SAASpD,QAC/C8E,EAAKnG,KAAMmG,EAAKnG,IAAK,IACrBC,KAAKwX,MAAM,cAAetR,EAAMyJ,EAAK2H,GAExC,OADAtX,KAAK6E,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKuB,aAC7C,EAIR,IAFe,IAAZuF,EAAKnG,WAAsBmG,EAAKnG,KACnCmG,EAAOlG,KAAKiS,uBAAuB/L,EAAMyJ,EAAI5P,GAAI4P,EAAIpL,QAAQuF,WACjD,OAAO,EAQnB,IAPA3K,EAAMa,KAAKkJ,SAAShD,IACpB2J,EAAM,IACFtD,KAAKrG,GACT2J,EAAMA,EAAI/F,OAAO3K,EAAIsF,YACrBzE,KAAKkF,QAAQ,QAAS,CAAE,MAAU2K,EAAK,OAAWF,EAAI5P,KAEtD4P,EAAIlL,WAAakL,EAAIlL,WAAWqF,OAAO+F,GACnCrQ,EAAI,EAAGqK,EAAI8F,EAAIpL,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,IACzCQ,KAAKwB,OAAO7B,KAAKgQ,EAAIpL,QAAQ/E,IAAIiF,WAAazE,KAAKwB,OAAO7B,KAAKgQ,EAAIpL,QAAQ/E,IAAIiF,WAAWqF,OAAO+F,GAIlG,IAFA3J,EAAO/G,EACPA,EAAM,GACFK,EAAI,EAAGqK,EAAI8F,EAAInL,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC1CL,EAAIK,GAAK8X,EAAM9X,EAAE,EAAIA,GAAKmQ,EAAInL,SAAShF,GAgBxC,OAdAL,EAAImY,GAAOpR,EAAKnG,GAChB4P,EAAInL,SAAWrF,EAEfa,KAAKoS,YAAYzC,GAAK,GAStB3P,KAAKkF,QAAQ,cAAe,CAAE,KAASlF,KAAKkJ,SAAShD,GAAO,OAAWyJ,EAAI5P,GAAI,SAAauX,IACzF/J,GAAYA,EAASvL,KAAKhC,KAAMA,KAAKkJ,SAAShD,IAC1CA,EAAKnG,IAUb0X,YAAc,SAAUxW,EAAK0V,GAC5B,IAAIjD,EAAIC,EAAIjB,EACZ,GAAG9U,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKyX,YAAYxW,EAAIyS,GAAKiD,GAE3B,OAAO,EAGR,UADA1V,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,QAC/B2T,EAAMzR,EAAIyJ,KACN1K,KAAKwX,MAAM,cAAevW,EAAKjB,KAAKiJ,WAAWhI,GAAM0V,IAIzD3W,KAAK0W,SAASzV,EAAK0V,GASnB3W,KAAKkF,QAAQ,cAAe,CAAE,KAASjE,EAAK,KAAS0V,EAAK,IAAQjE,KAC3D,IAbN1S,KAAK6E,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKuB,aAC7C,KAqBT+W,YAAc,SAAUzW,GACvB,IAAIyS,EAAIC,EAAIhE,EAAK2H,EAAKnY,EAAKK,EAAGqK,EAAGpK,EAAG+N,EAAGC,EAAG0I,EAAKwB,EAC/C,GAAG/Z,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAK0X,YAAYzW,EAAIyS,IAEtB,OAAO,EAGR,KADAzS,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAQ,OAAO,EAI9C,GAHA4Q,EAAM3P,KAAKkJ,SAASjI,EAAIqD,QACxBgT,EAAM1Z,EAAEiQ,QAAQ5M,EAAIlB,GAAI4P,EAAInL,UAC5BiJ,GAAI,GACAzN,KAAKwX,MAAM,cAAevW,EAAK0O,EAAK2H,GAEvC,OADAtX,KAAK6E,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKuB,aAC7C,EAOR,KALY,IAAT2W,IACF3H,EAAInL,SAAW5G,EAAEmM,OAAO6N,aAAajI,EAAInL,SAAU8S,KAEpDnY,EAAM8B,EAAIwD,WAAWqF,OAAO,KACxByC,KAAKtL,EAAIlB,IACTP,EAAI,EAAGqK,EAAI5I,EAAIsD,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,IACzCQ,KAAKwB,OAAO7B,KAAKsB,EAAIsD,QAAQ/E,IAAIiF,WAAa7G,EAAEmM,OAAO6D,aAAa5N,KAAKwB,OAAO7B,KAAKsB,EAAIsD,QAAQ/E,IAAIiF,YAAY,SAAUgG,GAC1H,OAA8B,IAAvB7M,EAAEiQ,QAAQpD,EAAGtL,MAGtB,IAAIM,EAAI,EAAG+N,EAAIrO,EAAIiC,OAAQ3B,EAAI+N,EAAG/N,IACjC,GAAGO,KAAKwB,OAAO7B,KAAKR,EAAIM,IAAIiF,MAAMhE,SAAU,CAC3C+M,GAAI,EACJ,MAmBF,IAhBIA,IACHzN,KAAKI,MAAMhB,KAAKsB,SAAW9C,EAAEmM,OAAO6D,aAAa5N,KAAKI,MAAMhB,KAAKsB,UAAU,SAAU+J,GACpF,OAA8B,IAAvB7M,EAAEiQ,QAAQpD,EAAGtL,OAUtBa,KAAKkF,QAAQ,cAAe,CAAE,KAASjE,EAAK,OAAW0O,EAAI5P,KACxD0N,GACFzN,KAAKkF,QAAQ,UAAW,CAAE,OAAW,cAAe,KAASjE,EAAK,SAAajB,KAAKI,MAAMhB,KAAKsB,SAAU,OAAWiP,EAAI5P,KAErHN,EAAI,EAAG+N,EAAIrO,EAAIiC,OAAQ3B,EAAI+N,EAAG/N,WAC1BO,KAAKwB,OAAO7B,KAAKR,EAAIM,IAkB7B,OAhBgD,IAA7C7B,EAAEiQ,QAAQ7N,KAAKI,MAAMhB,KAAK0B,QAAS3B,KACrCa,KAAKI,MAAMhB,KAAK0B,QAAU,KAC1BqV,EAAMnW,KAAK2E,QAAQ,GAAG6O,UACtBmE,EAAM3X,KAAK2E,QAAQ,GAAG8O,WACnB9D,EAAI5P,KAAOnC,EAAEE,OAAOiB,KAClBiB,KAAKwB,OAAO7B,KAAK/B,EAAEE,OAAOiB,MAAMyF,SAAS,IAC5CxE,KAAKkJ,SAASlJ,KAAKwB,OAAO7B,KAAK/B,EAAEE,OAAOiB,MAAMyF,SAAS,IAAI,GAAMA,SAAS,kBAAkB8D,QAI7FtI,KAAKkJ,SAASyG,GAAK,GAAMnL,SAAS,kBAAkB8D,QAErDtI,KAAK2E,QAAQ,GAAG6O,UAAa2C,EAC7BnW,KAAK2E,QAAQ,GAAG8O,WAAakE,GAE9B3X,KAAKoS,YAAYzC,GAAK,IACf,GAaR6H,MAAQ,SAAUK,EAAK5W,EAAK0O,EAAK2H,EAAKQ,GACrC7W,EAAMA,GAAOA,EAAIlB,GAAKkB,EAAMjB,KAAKkJ,SAASjI,GAC1C0O,EAAMA,GAAOA,EAAI5P,GAAK4P,EAAM3P,KAAKkJ,SAASyG,GAC1C,IAAIxQ,EAAM0Y,EAAIN,MAAM,sCAAwC5H,EAAM1O,EACjE8W,EAAM/X,KAAK6E,SAASzF,KAAK0D,eAC1B,MAAW,cAAR+U,GAA+B,cAARA,GACpBC,GAASA,EAAKE,UAAc/W,EAAIlB,KAAO4P,EAAI5P,KAAe,cAAR8X,GAAuBja,EAAEiQ,QAAQ5M,EAAIlB,GAAI4P,EAAInL,YAAc8S,KAA+C,IAAvC1Z,EAAEiQ,QAAQ8B,EAAI5P,GAAIkB,EAAIwD,aAK9ItF,GAAOA,EAAIQ,OAAQR,EAAMA,EAAIQ,MAC7BR,GAAOA,EAAI8Y,aAAqC,IAAvB9Y,EAAI8Y,UAAUJ,KAAyC,IAAvB1Y,EAAI8Y,UAAUJ,MAC/C,IAAvB1Y,EAAI8Y,UAAUJ,KAChB7X,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,QAAS,OAAW,OAAQ,GAAO,UAAW,OAAW,gCAAkCkX,EAAK,KAAS1I,KAAKC,UAAU,CAAE,IAAQyI,EAAK,IAAQP,EAAK,OAAQrW,IAAOA,EAAIlB,KAAKkB,EAAIlB,GAAY,OAAQ4P,IAAOA,EAAI5P,KAAK4P,EAAI5P,OAE3PZ,EAAI8Y,UAAUJ,OAEX,IAARE,GAAkBna,EAAE8N,WAAWqM,KAAqD,IAA7CA,EAAI/V,KAAKhC,KAAM6X,EAAK5W,EAAK0O,EAAK2H,EAAKQ,IAAqBC,IAAoB,IAAbA,EAAIF,MAC5G7X,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,QAAS,OAAW,OAAQ,GAAO,UAAW,OAAW,0DAA4DkX,EAAK,KAAS1I,KAAKC,UAAU,CAAE,IAAQyI,EAAK,IAAQP,EAAK,OAAQrW,IAAOA,EAAIlB,KAAKkB,EAAIlB,GAAY,OAAQ4P,IAAOA,EAAI5P,KAAK4P,EAAI5P,OACpR,KAbNC,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,QAAS,OAAW,OAAQ,GAAO,UAAW,OAAW,6BAA8B,KAASwO,KAAKC,UAAU,CAAE,IAAQyI,EAAK,IAAQP,EAAK,OAAQrW,IAAOA,EAAIlB,KAAKkB,EAAIlB,GAAY,OAAQ4P,IAAOA,EAAI5P,KAAK4P,EAAI5P,OACjP,IAqBVY,WAAa,WACZ,OAAOX,KAAKI,MAAMhB,KAAKuB,YAcxBuX,UAAY,SAAUjX,EAAK0O,EAAK2H,EAAK/J,EAAUJ,EAAWwH,EAAawD,GACtE,IAAIzE,EAAIC,EAAIyE,EAASC,EAASC,EAASC,EAASP,EAAUnI,EAAK1Q,EAAKK,EAAGqK,EAAGpK,EAAG+N,EAAGlB,EAIhF,GAFAqD,EAAM3P,KAAKkJ,SAASyG,GACpB2H,EAAMA,IAAQzZ,EAAY,EAAIyZ,GAC1B3H,EAAO,OAAO,EAClB,IAAI2H,EAAIzG,WAAW0G,MAAM,sBAAwBpK,IAAcnN,KAAKmN,UAAUwC,GAC7E,OAAO3P,KAAKoG,UAAUuJ,GAAK,WAAc3P,KAAKkY,UAAUjX,EAAK0O,EAAK2H,EAAK/J,GAAU,GAAM,EAAO4K,MAG/F,GAAGva,EAAE8P,QAAQzM,GAAM,CAClB,GAAkB,IAAfA,EAAIG,OAGF,CAEJ,IAAIsS,EAAK,EAAGC,EAAK1S,EAAIG,OAAQsS,EAAKC,EAAID,KACjCvU,EAAMa,KAAKkY,UAAUjX,EAAIyS,GAAK/D,EAAK2H,EAAK/J,EAAUJ,GAAW,EAAOgL,MACvExI,EAAMxQ,EACNmY,EAAM,SAIR,OADAtX,KAAK+P,UACE,EAXP9O,EAAMA,EAAI,GAgBZ,KAFAA,EAAMA,GAAOA,EAAIlB,GAAKkB,EAAMjB,KAAKkJ,SAASjI,KAE/BA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAQ,OAAO,EAW9C,GATAqZ,GAAWnX,EAAIqD,QAAU1G,EAAEE,OAAOiB,MAAM8R,WACxCyH,EAAYhB,EAAIzG,WAAW0G,MAAM,qBAAuB5H,EAAI5P,KAAOnC,EAAEE,OAAOiB,KAAciB,KAAKkJ,SAASyG,EAAIrL,QAAxBqL,EAEpFqI,IADAO,EAAUJ,IAAmBnY,KAAKwB,OAAO7B,KAAKsB,EAAIlB,IAAMC,KAAOpC,EAAEE,OAAOiD,UAAUE,EAAIlB,QAC9DwY,EAAQtY,KAAQD,KAAKC,MAAQsY,EAAQtY,IAC7DoY,EAAUE,GAAWA,EAAQtY,KAAOmY,GAAWG,EAAQ/W,OAAO7B,KAAKyY,IAAYG,EAAQ/W,OAAO7B,KAAKyY,GAAS5T,SAAW5G,EAAEiQ,QAAQ5M,EAAIlB,GAAIwY,EAAQ/W,OAAO7B,KAAKyY,GAAS5T,WAAa,EAChL+T,GAAWA,EAAQtY,MACrBgB,EAAMsX,EAAQ/W,OAAO7B,KAAKsB,EAAIlB,KAG5BiY,EACF,SAAI7Y,EAAMa,KAAKwY,UAAUvX,EAAK0O,EAAK2H,EAAK/J,EAAUJ,GAAW,EAAOgL,MAChEI,GAAWA,EAAQb,YAAYzW,GAC3B9B,GAST,OAJGwQ,EAAI5P,KAAOnC,EAAEE,OAAOiB,OACX,WAARuY,IAAoBA,EAAM,SAClB,UAARA,IAAmBA,EAAM,SAEtBA,GACN,IAAK,SACJA,EAAM1Z,EAAEiQ,QAAQ8B,EAAI5P,GAAIuY,EAAQ9T,UAChC,MACD,IAAK,QACJ8S,EAAM1Z,EAAEiQ,QAAQ8B,EAAI5P,GAAIuY,EAAQ9T,UAAY,EAC5C,MACD,IAAK,SACL,IAAK,QACJ8S,EAAM,EACN,MACD,IAAK,OACJA,EAAMgB,EAAQ9T,SAASpD,OACvB,MACD,QACKkW,IAAOA,EAAM,GAInB,GADGA,EAAMgB,EAAQ9T,SAASpD,SAAUkW,EAAMgB,EAAQ9T,SAASpD,SACvDpB,KAAKwX,MAAM,YAAavW,EAAKqX,EAAShB,EAAK,CAAE,MAAS,EAAM,OAAWa,EAAQ,SAAcI,GAAWA,EAAQtY,KAAOsY,EAAQtY,MAAQD,KAAKC,IAAM,YAAiBsY,IAAYA,EAAQtY,MAE1L,OADAD,KAAK6E,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKuB,aAC7C,EAER,GAAGM,EAAIqD,SAAWgU,EAAQvY,GAAI,CAQ7B,IAPA8P,EAAMyI,EAAQ9T,SAASsF,UAEX,KADZ3K,EAAMvB,EAAEiQ,QAAQ5M,EAAIlB,GAAI8P,MAEvBA,EAAMjS,EAAEmM,OAAO6N,aAAa/H,EAAK1Q,GAC9BmY,EAAMnY,GAAOmY,KAEjBnY,EAAM,GACFK,EAAI,EAAGqK,EAAIgG,EAAIzO,OAAQ5B,EAAIqK,EAAGrK,IACjCL,EAAIK,GAAK8X,EAAM9X,EAAE,EAAIA,GAAKqQ,EAAIrQ,GAE/BL,EAAImY,GAAOrW,EAAIlB,GACfuY,EAAQ9T,SAAWrF,EACnBa,KAAKuP,cAAc+I,EAAQvY,IAC3BC,KAAK+P,OAAOuI,EAAQvY,KAAOnC,EAAEE,OAAOiB,UAEhC,CAIJ,KAFAI,EAAM8B,EAAIwD,WAAWqF,UACjByC,KAAKtL,EAAIlB,IACTP,EAAI,EAAGqK,EAAI5I,EAAIsD,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,IAAK,CAG9C,IAFAqQ,EAAM,GAEFpQ,EAAI,EAAG+N,GADXlB,EAAIiM,EAAQ/W,OAAO7B,KAAKsB,EAAIsD,QAAQ/E,IAAIiF,YACvBrD,OAAQ3B,EAAI+N,EAAG/N,KACF,IAA1B7B,EAAEiQ,QAAQvB,EAAE7M,GAAIN,IAClB0Q,EAAItD,KAAKD,EAAE7M,IAGb8Y,EAAQ/W,OAAO7B,KAAKsB,EAAIsD,QAAQ/E,IAAIiF,WAAaoL,EAKlD,IAHA0I,EAAQ/W,OAAO7B,KAAKyY,GAAS5T,SAAW5G,EAAEmM,OAAOuL,kBAAkBiD,EAAQ/W,OAAO7B,KAAKyY,GAAS5T,SAAUvD,EAAIlB,IAG1GP,EAAI,EAAGqK,EAAIyO,EAAQ/T,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,IAC7CQ,KAAKwB,OAAO7B,KAAK2Y,EAAQ/T,QAAQ/E,IAAIiF,WAAazE,KAAKwB,OAAO7B,KAAK2Y,EAAQ/T,QAAQ/E,IAAIiF,WAAWqF,OAAO3K,GAG1G,IADA0Q,EAAM,GACFrQ,EAAI,EAAGqK,EAAIyO,EAAQ9T,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC9CqQ,EAAIrQ,GAAK8X,EAAM9X,EAAE,EAAIA,GAAK8Y,EAAQ9T,SAAShF,GAgB5C,IAdAqQ,EAAIyH,GAAOrW,EAAIlB,GACfuY,EAAQ9T,SAAWqL,EACnByI,EAAQ7T,WAAW8H,KAAKtL,EAAIlB,IAC5BuY,EAAQ7T,WAAa6T,EAAQ7T,WAAWqF,OAAO7I,EAAIwD,YAGnDxD,EAAIqD,OAASgU,EAAQvY,IACrBZ,EAAMmZ,EAAQ/T,QAAQuF,UAClB6G,QAAQ2H,EAAQvY,IACpBuM,EAAIrL,EAAIsD,QAAQnD,OAChBH,EAAIsD,QAAUpF,EAGdA,EAAMA,EAAI2K,SACNtK,EAAI,EAAGqK,EAAI5I,EAAIwD,WAAWrD,OAAQ5B,EAAIqK,EAAGrK,IAC5CQ,KAAKwB,OAAO7B,KAAKsB,EAAIwD,WAAWjF,IAAI+E,QAAUvE,KAAKwB,OAAO7B,KAAKsB,EAAIwD,WAAWjF,IAAI+E,QAAQxC,MAAM,GAAK,EAAHuK,GAClGzK,MAAMC,UAAUyK,KAAKlK,MAAMrC,KAAKwB,OAAO7B,KAAKsB,EAAIwD,WAAWjF,IAAI+E,QAASpF,GAGtEiZ,IAAYxa,EAAEE,OAAOiB,MAAQuZ,EAAQvY,KAAOnC,EAAEE,OAAOiB,OACvDiB,KAAKwB,OAAOwC,mBAAoB,GAE7BhE,KAAKwB,OAAOwC,oBACfhE,KAAKuP,cAAc6I,GACnBpY,KAAKuP,cAAc+I,EAAQvY,KAExB4U,GACH3U,KAAK+P,SAkBP,OAfGxC,GAAYA,EAASvL,KAAKhC,KAAMiB,EAAKqX,EAAShB,GAcjDtX,KAAKkF,QAAQ,YAAa,CAAE,KAASjE,EAAK,OAAWqX,EAAQvY,GAAI,SAAauX,EAAK,WAAec,EAAS,aAAiBC,EAAS,SAAcE,GAAWA,EAAQtY,KAAOsY,EAAQtY,MAAQD,KAAKC,IAAM,YAAiBsY,IAAYA,EAAQtY,IAAM,aAAiBsY,EAAS,aAAiBvY,OACvRiB,EAAIlB,IAcZyY,UAAY,SAAUvX,EAAK0O,EAAK2H,EAAK/J,EAAUJ,EAAWwH,EAAawD,GACtE,IAAIzE,EAAIC,EAAI9D,EAAK1Q,EAAKK,EAAGqK,EAAG3D,EAAMkS,EAASE,EAASC,EAIpD,GAFA5I,EAAM3P,KAAKkJ,SAASyG,GACpB2H,EAAMA,IAAQzZ,EAAY,EAAIyZ,GAC1B3H,EAAO,OAAO,EAClB,IAAI2H,EAAIzG,WAAW0G,MAAM,sBAAwBpK,IAAcnN,KAAKmN,UAAUwC,GAC7E,OAAO3P,KAAKoG,UAAUuJ,GAAK,WAAc3P,KAAKwY,UAAUvX,EAAK0O,EAAK2H,EAAK/J,GAAU,GAAM,EAAO4K,MAG/F,GAAGva,EAAE8P,QAAQzM,GAAM,CAClB,GAAkB,IAAfA,EAAIG,OAGF,CAEJ,IAAIsS,EAAK,EAAGC,EAAK1S,EAAIG,OAAQsS,EAAKC,EAAID,KACjCvU,EAAMa,KAAKwY,UAAUvX,EAAIyS,GAAK/D,EAAK2H,EAAK/J,EAAUJ,GAAW,EAAMgL,MACtExI,EAAMxQ,EACNmY,EAAM,SAIR,OADAtX,KAAK+P,UACE,EAXP9O,EAAMA,EAAI,GAeZ,KADAA,EAAMA,GAAOA,EAAIlB,GAAKkB,EAAMjB,KAAKkJ,SAASjI,KAC/BA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAQ,OAAO,EAe9C,OAbAqZ,GAAWnX,EAAIqD,QAAU1G,EAAEE,OAAOiB,MAAM8R,WACxCyH,EAAYhB,EAAIzG,WAAW0G,MAAM,qBAAuB5H,EAAI5P,KAAOnC,EAAEE,OAAOiB,KAAciB,KAAKkJ,SAASyG,EAAIrL,QAAxBqL,IACpF4I,EAAUJ,IAAmBnY,KAAKwB,OAAO7B,KAAKsB,EAAIlB,IAAMC,KAAOpC,EAAEE,OAAOiD,UAAUE,EAAIlB,QAC9DwY,EAAQtY,KAAQD,KAAKC,MAAQsY,EAAQtY,IAE1DsY,GAAWA,EAAQtY,MACrBgB,EAAMsX,EAAQ/W,OAAO7B,KAAKsB,EAAIlB,KAG5B4P,EAAI5P,KAAOnC,EAAEE,OAAOiB,OACX,WAARuY,IAAoBA,EAAM,SAClB,UAARA,IAAmBA,EAAM,SAEtBA,GACN,IAAK,SACJA,EAAM1Z,EAAEiQ,QAAQ8B,EAAI5P,GAAIuY,EAAQ9T,UAChC,MACD,IAAK,QACJ8S,EAAM1Z,EAAEiQ,QAAQ8B,EAAI5P,GAAIuY,EAAQ9T,UAAY,EAC5C,MACD,IAAK,SACL,IAAK,QACJ8S,EAAM,EACN,MACD,IAAK,OACJA,EAAMgB,EAAQ9T,SAASpD,OACvB,MACD,QACKkW,IAAOA,EAAM,GAInB,GADGA,EAAMgB,EAAQ9T,SAASpD,SAAUkW,EAAMgB,EAAQ9T,SAASpD,SACvDpB,KAAKwX,MAAM,YAAavW,EAAKqX,EAAShB,EAAK,CAAE,MAAS,EAAM,OAAWa,EAAQ,SAAcI,GAAWA,EAAQtY,KAAOsY,EAAQtY,MAAQD,KAAKC,IAAM,YAAiBsY,IAAYA,EAAQtY,MAE1L,OADAD,KAAK6E,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKuB,aAC7C,EAGR,KADAuF,EAAOqS,EAAUA,EAAQ3B,SAAS3V,EAAK,CAAEkW,OAAQ,EAAMJ,SAAU,EAAMC,UAAW,IAAU/V,GAChF,OAAO,EAGnB,IAFe,IAAZiF,EAAKnG,WAAsBmG,EAAKnG,KACnCmG,EAAOlG,KAAKiS,uBAAuB/L,EAAMoS,EAAQvY,GAAIuY,EAAQ/T,QAAQuF,WACzD,OAAO,EASnB,IARA3K,EAAMa,KAAKkJ,SAAShD,GACjBjF,GAAOA,EAAIyD,QAA8B,IAArBzD,EAAIyD,MAAMP,SAAoBhF,EAAIuF,MAAMP,QAAS,IACxE0L,EAAM,IACFtD,KAAKrG,GACT2J,EAAMA,EAAI/F,OAAO3K,EAAIsF,YACrBzE,KAAKkF,QAAQ,QAAS,CAAE,MAAU2K,EAAK,OAAWyI,EAAQvY,KAGtDP,EAAI,EAAGqK,EAAIyO,EAAQ/T,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,IAC7CQ,KAAKwB,OAAO7B,KAAK2Y,EAAQ/T,QAAQ/E,IAAIiF,WAAazE,KAAKwB,OAAO7B,KAAK2Y,EAAQ/T,QAAQ/E,IAAIiF,WAAWqF,OAAO+F,GAG1G,IADAA,EAAM,GACFrQ,EAAI,EAAGqK,EAAIyO,EAAQ9T,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC9CqQ,EAAIrQ,GAAK8X,EAAM9X,EAAE,EAAIA,GAAK8Y,EAAQ9T,SAAShF,GAgC5C,OA9BAqQ,EAAIyH,GAAOnY,EAAIY,GACfuY,EAAQ9T,SAAWqL,EACnByI,EAAQ7T,WAAW8H,KAAKpN,EAAIY,IAC5BuY,EAAQ7T,WAAa6T,EAAQ7T,WAAWqF,OAAO3K,EAAIsF,YAEhD6T,EAAQvY,KAAOnC,EAAEE,OAAOiB,OAC1BiB,KAAKwB,OAAOwC,mBAAoB,GAE7BhE,KAAKwB,OAAOwC,mBACfhE,KAAKuP,cAAc+I,EAAQvY,IAExB4U,GACH3U,KAAK+P,OAAOuI,EAAQvY,KAAOnC,EAAEE,OAAOiB,MAElCwO,GAAYA,EAASvL,KAAKhC,KAAMb,EAAKmZ,EAAShB,GAejDtX,KAAKkF,QAAQ,YAAa,CAAE,KAAS/F,EAAK,SAAa8B,EAAK,OAAWqX,EAAQvY,GAAI,SAAauX,EAAK,WAAec,EAAS,aAAiBG,GAAWA,EAAQtY,KAAOmY,GAAWG,EAAQ/W,OAAO7B,KAAKyY,IAAYG,EAAQ/W,OAAO7B,KAAKyY,GAAS5T,SAAW5G,EAAEiQ,QAAQ5M,EAAIlB,GAAIwY,EAAQ/W,OAAO7B,KAAKyY,GAAS5T,WAAa,EAAE,SAAc+T,GAAWA,EAAQtY,KAAOsY,EAAQtY,MAAQD,KAAKC,IAAM,YAAiBsY,IAAYA,EAAQtY,IAAM,aAAiBsY,EAAS,aAAiBvY,OAC3cb,EAAIY,IAQZ0Y,IAAM,SAAUxX,GAGf,GAFIA,IAAOA,EAAMjB,KAAKI,MAAMhB,KAAKsB,SAASoJ,UACtClM,EAAE8P,QAAQzM,KAAQA,EAAM,CAACA,KACzBA,EAAIG,OAAU,OAAO,EACzB,IAAcyH,EAAG6K,EAAIC,EAAjBxU,EAAM,GACV,IAAIuU,EAAK,EAAGC,EAAK1S,EAAIG,OAAQsS,EAAKC,EAAID,KACrC7K,EAAI7I,KAAKkJ,SAASjI,EAAIyS,MACd7K,EAAE9I,IAAM8I,EAAE9I,KAAOnC,EAAEE,OAAOiB,MAAQI,EAAIoN,KAAK1D,GAEpD,IAAI1J,EAAIiC,OAAU,OAAO,EACzBpD,EAAWmB,EACXjB,EAAW8B,KACX/B,EAAW,YAOX+B,KAAKkF,QAAQ,MAAO,CAAE,KAASjE,KAQhCyX,KAAO,SAAUzX,GAGhB,GAFIA,IAAOA,EAAMjB,KAAKI,MAAMhB,KAAKsB,SAASoJ,UACtClM,EAAE8P,QAAQzM,KAAQA,EAAM,CAACA,KACzBA,EAAIG,OAAU,OAAO,EACzB,IAAcyH,EAAG6K,EAAIC,EAAjBxU,EAAM,GACV,IAAIuU,EAAK,EAAGC,EAAK1S,EAAIG,OAAQsS,EAAKC,EAAID,KACrC7K,EAAI7I,KAAKkJ,SAASjI,EAAIyS,MACd7K,EAAE9I,IAAM8I,EAAE9I,KAAOnC,EAAEE,OAAOiB,MAAQI,EAAIoN,KAAK1D,GAEpD,IAAI1J,EAAIiC,OAAU,OAAO,EACzBpD,EAAWmB,EACXjB,EAAW8B,KACX/B,EAAW,YAOX+B,KAAKkF,QAAQ,OAAQ,CAAE,KAASjE,KAOjC0X,WAAa,WACZ,MAAO,CAAE,KAAS1a,EAAU,KAASD,EAAU,KAASE,IAOzD0a,UAAY,WACX,OAAoB,IAAb3a,IAAmC,IAAbD,GAS9B6a,MAAQ,SAAU5X,EAAKqW,GAEtB,MADArW,EAAMjB,KAAKkJ,SAASjI,KACRhD,GAAaA,EAASsZ,MAAM,4BAA+BvZ,GAAY,OAAO,EACvFgC,KAAK/B,GAAUD,EAAUiD,EAAKqW,GAAK,GAAO,GAAO,EAAOpZ,IAS1D8B,KAAKkF,QAAQ,QAAS,CAAE,OAAWjE,EAAIlB,GAAI,KAAS/B,EAAU,KAASC,IAExED,GAAW,EACXC,GAAW,EACXC,GAAW,GAOZ4a,aAAe,WACd9a,GAAW,EACXC,GAAW,EACXC,GAAW,EAMX8B,KAAKkF,QAAQ,iBASdwE,KAAO,SAAUzI,EAAK8X,EAAcxL,GACnC,IAAIxI,EAAKmL,EAAGvN,EAAGkI,EAAG6D,EAAGsK,EAAIC,EAAIxX,EAAItC,EAAK+Z,GAAS,EAE/C,SADAjY,EAAMjB,KAAKkJ,SAASjI,MAEhBjB,KAAKwX,MAAM,OAAQvW,EAAKjB,KAAKiJ,WAAWhI,KAI5C9B,EAAM8B,EACN8X,EAAuC,iBAAjBA,EAA4BA,EAAe9X,EAAIyJ,KACrE1K,KAAK0W,SAASzV,EAAK,IACnBA,EAAMjB,KAAKgU,SAAS/S,GACpB9B,EAAIuL,KAAOqO,EAEXhU,EAAM/E,KAAKI,MAAMhB,KAAK2F,IACtBmL,EAAKlQ,KAAK2E,QAAQwU,QAClBnZ,KAAKI,MAAMhB,KAAK0B,QAAU3B,EAAIY,GAC9B4C,EAAK1B,EAAIuD,SAAS,kBAAkB8D,QACpCuC,EAAKjN,EAAE;;;;;;;AAOP8Q,EAAKqK,EACLC,EAAKpb,EAAE,UAAc,CAAEoH,IAAM,CAAE,SAAa,WAAY,IAAQ,SAAU,KAAUD,EAAM,MAAQ,UAAY,WAAe,YAAcqU,SAAS,QACpJH,EAAKrb,EAAE,YAAgB,CACpB,MAAU8Q,EACV,MAAU,sBAEV,IAAQ,CACP,QAAY,IACZ,OAAW,mBACX,aAAe,aACf,QAAY,eACZ,OAAY1O,KAAKI,MAAMhB,KAAc,UAAI,KACzC,WAAgBY,KAAKI,MAAMhB,KAAc,UAAI,KAC7C,MAAU,SAEX,KAASxB,EAAEoK,OAAM,SAAUR,GAC1BA,EAAE6R,2BACF7R,EAAES,iBACF,IAGCqR,EAFA7O,EADOI,EAAErG,SAAS,wBACZmS,MACNrH,EAAItP,KAAK6E,SAASzF,KAAKsE,WAEf,KAAN+G,IAAYA,EAAIiE,GACnBsK,EAAGrT,SACHkF,EAAE0O,YAAY5W,GACdkI,EAAElF,SACF+I,EAAIY,EAAIZ,EAAI9Q,EAAE,eAAeyU,OAAOzU,EAAEiR,UAAUH,IAAI9I,OACpD5F,KAAK0W,SAASzV,EAAKyN,IACnB4K,IAAOtZ,KAAKyX,YAAYxW,EAAKqO,EAAI1R,EAAE,eAAe8M,KAAKD,GAAGC,OAAS9M,EAAE,eAAeyU,OAAOzU,EAAEiR,UAAUpE,IAAI7E,UAE1G5F,KAAK0W,SAASzV,EAAKyN,GAEpB1O,KAAKI,MAAMhB,KAAK0B,QAAU3B,EAAIY,GAC9B6J,WAAWhM,EAAEoK,OAAM,WAClB,IAAI9B,EAAOlG,KAAKkJ,SAAS/J,EAAIY,IAAI,GAC9BmG,EAAK9E,SACPpB,KAAKI,MAAMhB,KAAK0B,QAAU3B,EAAIY,GAC9BmG,EAAK1B,SAAS,kBAAkB8D,WAE/BtI,MAAO,GACPuN,GACFA,EAASvL,KAAKhC,KAAMb,EAAKma,EAAIJ,GAE9BD,EAAK,OACHjZ,MACH,QAAY,SAAUwH,GACrB,IAAIiE,EAAMjE,EAAEgB,MACD,KAARiD,IACFyN,GAAS,EACTlZ,KAAKwZ,MAAQ9K,GAEH,KAARjD,GAAsB,KAARA,GAAsB,KAARA,GAAsB,KAARA,GAAsB,KAARA,GAAsB,KAARA,GAAsB,KAARA,GACtFjE,EAAE6R,2BAEQ,KAAR5N,GAAsB,KAARA,IAChBjE,EAAES,iBACFjI,KAAKyZ,SAGP,MAAU,SAAUjS,GAAKA,EAAE6R,4BAC3B,UAAc,SAAU7R,GAAKA,EAAE6R,4BAC/B,MAAU,SAAU7R,GACnByR,EAAGE,MAAMO,KAAKC,IAAIX,EAAGtO,KAAK,KAAO1K,KAAKwZ,OAAOL,QAAQjJ,KAEtD,SAAa,SAAS1I,GACrB,GAAe,KAAZA,EAAEgB,MAAgB,OAAO,KAG/B/G,EAAK,CACHmY,WAAcjX,EAAEqC,IAAI,eAAkB,GACtC6U,SAAYlX,EAAEqC,IAAI,aAAiB,GACnC8U,WAAcnX,EAAEqC,IAAI,eAAkB,GACtC+U,UAAapX,EAAEqC,IAAI,cAAiB,GACpCgV,YAAerX,EAAEqC,IAAI,gBAAmB,GACxCiV,YAAetX,EAAEqC,IAAI,gBAAmB,GACxCkV,cAAgBvX,EAAEqC,IAAI,kBAAoB,GAC1CmV,YAAexX,EAAEqC,IAAI,gBAAmB,IAE3C6F,EAAExM,KAAK,QAASsE,EAAEtE,KAAK,UAAUgU,OAAO1P,EAAE4C,WAAWF,SAASgN,OAAO4G,GACrEtW,EAAE4W,YAAY1O,GACdmO,EAAGhU,IAAIvD,GACPwX,EAAGjU,IAAIvD,GAAI0X,MAAMO,KAAKC,IAAIX,EAAGtO,KAAK,KAAOuO,EAAG,GAAGO,OAAOL,QAAQjJ,IAAI,GAAGkK,cACrExc,EAAEU,GAAU+b,IAAI,uDAAuD,SAAU7S,GAC5EyR,GAAMzR,EAAEC,SAAWwR,GACtBrb,EAAEqb,GAAIQ,YAxGPzZ,KAAK6E,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKuB,aAC7C,KAoHTmK,UAAY,SAAUwP,EAAYC,GACjC,IAAID,EAAc,OAAO,EACzB,IAAiB,IAAdC,EAAoB,CACtB,IAAInX,EAAMpD,KAAK6E,SAASzF,KAAKiB,OAAO+C,IAChCA,IAAOA,EAAMxF,EAAEE,OAAOa,KAAO,WACjC4b,EAAYnX,EAAM,IAAMkX,EAAa,aAEnCC,IAAsD,IAAzC3c,EAAEiQ,QAAQ0M,EAAWpc,KACpCP,EAAE,QAAQyU,OAAO,gCAAqCkI,EAAY,wBAClEpc,EAAcoO,KAAKgO,IAEjBva,KAAKI,MAAMhB,KAAKiB,OAAOC,MACzBN,KAAK2E,QAAQuC,YAAY,UAAYlH,KAAKI,MAAMhB,KAAKiB,OAAOC,MAE7DN,KAAKI,MAAMhB,KAAKiB,OAAOC,KAAOga,EAC9Bta,KAAK2E,QAAQC,SAAS,UAAY0V,GAClCta,KAAK2E,QAAQ3E,KAAK6E,SAASzF,KAAKiB,OAAOkD,WAAa,WAAa,eAAgB,UAAY+W,EAAa,eAO1Gta,KAAKkF,QAAQ,YAAa,CAAE,MAAUoV,KAOvCE,UAAY,WAAc,OAAOxa,KAAKI,MAAMhB,KAAKiB,OAAOC,MAMxDyK,kBAAoB,SAAU0P,GAC1Bza,KAAKI,MAAMhB,KAAKiB,OAAOiD,SACzBtD,KAAK2E,QAAQuC,YAAY,UAAYlH,KAAKI,MAAMhB,KAAKiB,OAAOC,KAAO,IAAMN,KAAKI,MAAMhB,KAAKiB,OAAOiD,SAEjGtD,KAAKI,MAAMhB,KAAKiB,OAAOiD,QAAUmX,EAC9BA,GACFza,KAAK2E,QAAQC,SAAS,UAAY5E,KAAKI,MAAMhB,KAAKiB,OAAOC,KAAO,IAAMN,KAAKI,MAAMhB,KAAKiB,OAAOiD,UAQ/FoX,kBAAoB,WAAc,OAAO1a,KAAKI,MAAMhB,KAAKiB,OAAOiD,SAKhEqX,aAAe,WACd3a,KAAKI,MAAMhB,KAAKiB,OAAOgD,SAAU,EACjCrD,KAAK+F,mBAAmBnB,SAAS,kBAMjC5E,KAAKkF,QAAQ,iBAMd0V,aAAe,WACd5a,KAAKI,MAAMhB,KAAKiB,OAAOgD,SAAU,EACjCrD,KAAK+F,mBAAmBmB,YAAY,kBAMpClH,KAAKkF,QAAQ,iBAMd2V,eAAiB,WAAiB7a,KAAKI,MAAMhB,KAAKiB,OAAOgD,QAAWrD,KAAK4a,eAAyB5a,KAAK2a,gBAKvGG,UAAY,WACX9a,KAAKI,MAAMhB,KAAKiB,OAAOE,MAAO,EAC9BP,KAAK+F,mBAAmBmB,YAAY,kBAMpClH,KAAKkF,QAAQ,cAMd6V,UAAY,WACX/a,KAAKI,MAAMhB,KAAKiB,OAAOE,MAAO,EAC9BP,KAAK+F,mBAAmBnB,SAAS,kBAMjC5E,KAAKkF,QAAQ,cAMd8V,YAAc,WAAiBhb,KAAKI,MAAMhB,KAAKiB,OAAOE,KAAQP,KAAK+a,YAAsB/a,KAAK8a,aAK9FG,WAAa,WACZjb,KAAKI,MAAMhB,KAAKiB,OAAOG,OAAQ,EAC/BR,KAAK+F,mBAAmBmB,YAAY,mBAMpClH,KAAKkF,QAAQ,eAMdgW,WAAa,WACZlb,KAAKI,MAAMhB,KAAKiB,OAAOG,OAAQ,EAC/BR,KAAK+F,mBAAmBnB,SAAS,mBAMjC5E,KAAKkF,QAAQ,eAMdiW,aAAe,WAAiBnb,KAAKI,MAAMhB,KAAKiB,OAAOG,MAASR,KAAKkb,aAAuBlb,KAAKib,cAKjGG,cAAgB,WACfpb,KAAKI,MAAMhB,KAAKiB,OAAOI,UAAW,EAClCT,KAAK+F,mBAAmBnB,SAAS,mBAMjC5E,KAAKkF,QAAQ,kBAMdmW,cAAgB,WACfrb,KAAKI,MAAMhB,KAAKiB,OAAOI,UAAW,EAClCT,KAAK+F,mBAAmBmB,YAAY,mBAMpClH,KAAKkF,QAAQ,kBAMdoW,gBAAkB,WAAiBtb,KAAKI,MAAMhB,KAAKiB,OAAOI,SAAYT,KAAKqb,gBAA0Brb,KAAKob,iBAO1GG,SAAW,SAAUta,EAAK6P,GACzB,IAAI4C,EAAIC,EAAIhI,EAAK+G,EACjB,GAAG9U,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKub,SAASta,EAAIyS,GAAK5C,GAExB,OAAO,EAGR,UADA7P,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,QAC/B2T,EAAMzR,EAAI6P,KACV7P,EAAI6P,MAAgB,IAATA,GAA0B,OAATA,GAAiBA,IAASjT,GAAsB,KAATiT,GAAqBA,EACxFnF,EAAM3L,KAAKkJ,SAASjI,GAAK,GAAMuD,SAAS,kBAAkBA,SAAS,sBACvD,IAATsM,EACF9Q,KAAKwb,UAAUva,IAEC,IAAT6P,GAA0B,OAATA,GAAiBA,IAASjT,GAAsB,KAATiT,GAC/DnF,EAAIzE,YAAY,2BAA6BwL,GAAK1N,IAAI,aAAa,IAAIyW,WAAW,QACvE,IAAR/I,GAAiB1S,KAAK0b,UAAUza,KAEL,IAAvB6P,EAAKlS,QAAQ,OAAsC,IAAvBkS,EAAKlS,QAAQ,MAChD+M,EAAIzE,YAAYwL,GAAK1N,IAAI,aAAa,IACtC2G,EAAI/G,SAASkM,EAAO,4BAA4BzS,KAAK,MAAMyS,IAChD,IAAR4B,GAAiB1S,KAAK0b,UAAUza,KAGnC0K,EAAIzE,YAAYwL,GAAK1N,IAAI,aAAa,IACtC2G,EAAI/G,SAAS,2BAA2BI,IAAI,aAAc,QAAU8L,EAAO,8BAA8BzS,KAAK,MAAMyS,IACzG,IAAR4B,GAAiB1S,KAAK0b,UAAUza,KAE7B,IAQR6V,SAAW,SAAU7V,GAEpB,UADAA,EAAMjB,KAAKkJ,SAASjI,KACJA,EAAIlB,KAAOnC,EAAEE,OAAOiB,OAAgBkC,EAAI6P,MAOzD0K,UAAY,SAAUva,GACrB,IAAIyS,EAAIC,EACR,GAAG/V,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKwb,UAAUva,EAAIyS,IAEpB,OAAO,EAGR,UADAzS,EAAMjB,KAAKkJ,SAASjI,KACTA,IAAQrD,EAAEE,OAAOiB,QAC5BkC,EAAI6P,MAAO,EACX9Q,KAAKkJ,SAASjI,GAAK,GAAMuD,SAAS,kBAAkBA,SAAS,qBAAqBI,SAAS,4BACpF,IAOR8W,UAAY,SAAUza,GACrB,IAAIyS,EAAIC,EAAIhI,EACZ,GAAG/N,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAK0b,UAAUza,EAAIyS,IAEpB,OAAO,EAGR,UADAzS,EAAMjB,KAAKkJ,SAASjI,KACTA,IAAQrD,EAAEE,OAAOiB,QAC5B4M,EAAM3L,KAAKkJ,SAASjI,GAAK,GACzBA,EAAI6P,MAAOnF,EAAIvK,QAASuK,EAAInH,SAAS,kBAAkBA,SAAS,qBAAqBnG,KAAK,OACtF4C,EAAI6P,OAAQ7P,EAAI6P,MAAO,GAC3BnF,EAAInH,SAAS,kBAAkBA,SAAS,qBAAqB0C,YAAY,4BAClE,KAKTtJ,EAAEmM,OAAS,GAEXnM,EAAEmM,OAAO+H,WAAa,SAAS5L,EAAMyV,GACpCzV,EAAOtI,EAAEsI,GAAM,GACf,IAAI7H,EAAOsd,EAAc,GAAK,GAU9B,OATGzV,GAAQA,EAAK4L,YACflU,EAAE2B,KAAK2G,EAAK4L,YAAY,SAAUtS,EAAGiL,IACsD,IAAvF7M,EAAEiQ,QAAQpD,EAAEnK,KAAKoH,cAAc,CAAC,QAAQ,kBAAkB,WAAW,cACzD,OAAZ+C,EAAE+O,OAAsC,KAApB5b,EAAEmU,KAAKtH,EAAE+O,SAC5BmC,EAAetd,EAAKoM,EAAEnK,MAAQmK,EAAE+O,MAC5Bnb,EAAKkO,KAAK9B,EAAEnK,UAIfjC,GAERT,EAAEmM,OAAOC,aAAe,SAAS4R,GAChC,IAAYpc,EAAMgO,EAAd7K,EAAI,GAAakG,EAAI,GACzB,IAAIrJ,EAAI,EAAGgO,EAAIoO,EAAMxa,OAAQ5B,EAAIgO,EAAGhO,IAChCqJ,EAAE+S,EAAMpc,MAAQ3B,IAClB8E,EAAE4J,KAAKqP,EAAMpc,IACbqJ,EAAE+S,EAAMpc,KAAM,GAGhB,OAAOmD,GAGR/E,EAAEmM,OAAO6N,aAAe,SAASgE,EAAOC,GAEvC,OADAD,EAAME,OAAOD,EAAM,GACZD,GAORhe,EAAEmM,OAAOuL,kBAAoB,SAASsG,EAAOG,GAC5C,IAAI5c,EAAMvB,EAAEiQ,QAAQkO,EAAMH,GAC1B,OAAgB,IAATzc,EAAavB,EAAEmM,OAAO6N,aAAagE,EAAOzc,GAAOyc,GAEzDhe,EAAEmM,OAAO6D,aAAe,SAASH,EAAE9K,EAAEqZ,EAAEpN,EAAEpH,GACxC,GAAIiG,EAAEjI,OACL,OAAOiI,EAAEjI,OAAO7C,EAAGqZ,GAGpB,IAAKxU,KADLoH,EAAE,GACQnB,IACHjG,EAAE,IAAKA,EAAE,IAAMA,GAAG,GAAK7E,EAAEX,KAAKga,EAAEvO,EAAEjG,IAAIA,EAAEiG,IAC7CmB,EAAErC,KAAKkB,EAAEjG,IAGX,OAAOoH,GAURhR,EAAEE,OAAOY,QAAQqF,QAAU,SAAU7E,EAASoF,GAC7C,IAAImF,EAAO,GACXzJ,KAAKkF,QAAU,SAAUoG,EAAI3L,GAC5B,IAAIH,EAAGqK,EAIP,GAHIlK,IACHA,EAAO,IAEwB,YAA7B2L,EAAGzM,QAAQ,UAAU,IAAmB,CAC1Cc,EAAKoE,QAAU,CAAErD,SAAW,GAAIub,WAAa,IAC7C,IAAI9c,EAAM,GACV,IAAIK,EAAI,EAAGqK,EAAIJ,EAAKrI,OAAQ5B,EAAIqK,EAAGrK,IAClCL,EAAIsK,EAAKjK,IAAM,EAEhB,IAAIA,EAAI,EAAGqK,EAAIlK,EAAKe,SAASU,OAAQ5B,EAAIqK,EAAGrK,IACvCL,EAAIQ,EAAKe,SAASlB,IAIrBL,EAAIQ,EAAKe,SAASlB,IAAM,EAHxBG,EAAKoE,QAAQrD,SAAS6L,KAAK5M,EAAKe,SAASlB,IAM3C,IAAIA,EAAI,EAAGqK,EAAIJ,EAAKrI,OAAQ5B,EAAIqK,EAAGrK,IACd,IAAjBL,EAAIsK,EAAKjK,KACXG,EAAKoE,QAAQkY,WAAW1P,KAAK9C,EAAKjK,IAGpCiK,EAAO9J,EAAKe,SAASqB,QAatBuC,EAAOY,QAAQlD,KAAKhC,KAAMsL,EAAI3L,IAE/BK,KAAKqW,QAAU,SAAUC,EAAcC,GAEtC,OADA9M,EAAO,GACAnF,EAAO+R,QAAQhU,MAAMrC,KAAMiC,aAWpC,IA+oDIia,EAAKC,EA/oDLC,EAAK9d,EAASuI,cAAc,KAChCuV,EAAGrV,UAAY,8BACfqV,EAAGtV,aAAa,OAAQ,gBAMxBlJ,EAAEE,OAAOW,SAAS4d,SAAW,CAM5BC,SAAa,EAMbC,aAAgB,EAMhBC,YAAe,EAMfC,qBAAsB,EAQtBC,QAAa,GAMbC,eAAiB,EAOjBC,qBAAsB,EAOtBC,mBAAoB,GAErBjf,EAAEE,OAAOY,QAAQ2d,SAAW,SAAUnd,EAASoF,GAC9CtE,KAAKiF,KAAO,WACXX,EAAOW,KAAKjD,KAAKhC,MACjBA,KAAKI,MAAMic,SAASS,KAAM,EAC1B9c,KAAKI,MAAMic,SAAS3b,SAAW,GAC5BV,KAAK6E,SAASwX,SAASE,cACzBvc,KAAK6E,SAASwX,SAASK,QAAU,wBAElC1c,KAAK2E,QACH4C,GAAG,cAAe3J,EAAEoK,OAAM,WACzBhI,KAAKI,MAAMic,SAASC,QAAUtc,KAAK6E,SAASwX,SAASC,QACjDtc,KAAK6E,SAASwX,SAASI,qBAC1Bzc,KAAK2E,QAAQC,SAAS,8BAEpB5E,KAAK6E,SAASwX,SAASM,eACzB3c,KAAK2E,QAAQC,SAAS,+BAErB5E,OACHuH,GAAG,iBAAkB3J,EAAEoK,OAAM,WAC5BhI,KAAMA,KAAKI,MAAMic,SAASC,QAAU,kBAAoB,uBACtDtc,QAC0D,IAA5DA,KAAK6E,SAASwX,SAASK,QAAQ9d,QAAQ,iBACzCoB,KAAK2E,QACH4C,GAAG,4JAA6J3J,EAAEoK,OAAM,WAEpKhI,KAAKI,MAAMic,SAASS,KAAO7S,aAAajK,KAAKI,MAAMic,SAASS,KAC/D9c,KAAKI,MAAMic,SAASS,IAAMlT,WAAWhM,EAAEoK,MAAMhI,KAAK+c,cAAe/c,MAAO,MACtEA,OAEFA,KAAK6E,SAASwX,SAASM,eAC1B3c,KAAK2E,QACH4C,GAAG,eAAgB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GACxC,IAGCH,EAAGqK,EAHAmE,EAAIhO,KAAKwB,OAAO7B,KAEnBkQ,GADI7B,EAAErO,EAAK2E,QACL3E,EAAKwO,OAEZ,IAAI3O,EAAI,EAAGqK,EAAIgG,EAAIzO,OAAQ5B,EAAIqK,EAAGrK,IACjCwO,EAAE6B,EAAIrQ,IAAIkF,MAAMsY,QAAUhP,EAAE6B,EAAIrQ,IAAIkF,MAAMsY,SAAYhP,EAAE6B,EAAIrQ,IAAI0R,UAAYlD,EAAE6B,EAAIrQ,IAAI0R,SAASxM,OAASsJ,EAAE6B,EAAIrQ,IAAI0R,SAASxM,MAAMsY,QAC9HhP,EAAE6B,EAAIrQ,IAAIkF,MAAMsY,SAClBhd,KAAKI,MAAMic,SAAS3b,SAAS6L,KAAKsD,EAAIrQ,MAGtCQ,QAEgD,IAAlDA,KAAK6E,SAASwX,SAASK,QAAQ9d,QAAQ,QAAoE,IAApDoB,KAAK6E,SAASwX,SAASK,QAAQ9d,QAAQ,SAChGoB,KAAK2E,QACH4C,GAAG,eAAgB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GACvC,IAIC8N,EAAGjO,EAAGqK,EAAGpK,EAAG+N,EAAGrO,EAJZ6O,EAAIhO,KAAKwB,OAAO7B,KACnB2M,EAAI0B,EAAErO,EAAK2E,QACXuL,EAAMlQ,EAAKwO,MACXyB,EAAM,GACc/E,EAAI7K,KAAK6E,SAASwX,SAASK,QAAShO,EAAI1O,KAAK6E,SAASwX,SAASM,cAEpF,IAA0B,IAAvB9R,EAAEjM,QAAQ,QAEZ,GAAG0N,EAAE5H,MAAOgK,EAAI,WAAa,WAAa,CACzC,IAAIlP,EAAI,EAAGqK,EAAIgG,EAAIzO,OAAQ5B,EAAIqK,EAAGrK,IACjCwO,EAAE6B,EAAIrQ,IAAIkF,MAAOgK,EAAI,WAAa,YAAc,EAGjD1O,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAWV,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAASoJ,OAAO+F,QAGvG,IAAIrQ,EAAI,EAAGqK,EAAIgG,EAAIzO,OAAQ5B,EAAIqK,EAAGrK,IACjC,GAAGwO,EAAE6B,EAAIrQ,IAAIkF,MAAOgK,EAAI,WAAa,WAAa,CACjD,IAAIjP,EAAI,EAAG+N,EAAIQ,EAAE6B,EAAIrQ,IAAIiF,WAAWrD,OAAQ3B,EAAI+N,EAAG/N,IAClDuO,EAAEA,EAAE6B,EAAIrQ,IAAIiF,WAAWhF,IAAIiF,MAAOgK,EAAI,WAAa,YAAc,EAElE1O,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAWV,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAASoJ,OAAOkE,EAAE6B,EAAIrQ,IAAIiF,YAMrH,IAAwB,IAArBoG,EAAEjM,QAAQ,MAAc,CAE1B,IAAIY,EAAI,EAAGqK,EAAIyC,EAAE7H,WAAWrD,OAAQ5B,EAAIqK,EAAGrK,IACtCwO,EAAE1B,EAAE7H,WAAWjF,IAAIgF,SAASpD,QAC/BwO,EAAIrD,KAAKyB,EAAE1B,EAAE7H,WAAWjF,IAAI8E,QAI9B,IAAI7E,EAAI,EAAG+N,GADXoC,EAAMhS,EAAEmM,OAAOC,aAAa4F,IACTxO,OAAQ3B,EAAI+N,EAAG/N,IAEjC,IADA6M,EAAI0B,EAAE4B,EAAInQ,IACJ6M,GAAKA,EAAEvM,KAAOnC,EAAEE,OAAOiB,MAAM,CAElC,IADA0O,EAAI,EACAjO,EAAI,EAAGqK,EAAIyC,EAAE9H,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IACxCiO,GAAKO,EAAE1B,EAAE9H,SAAShF,IAAIkF,MAAOgK,EAAI,WAAa,WAE/C,GAAGjB,IAAM5D,EASR,MARAyC,EAAE5H,MAAOgK,EAAI,WAAa,YAAc,EACxC1O,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAS6L,KAAKD,EAAEvM,KACtDZ,EAAMa,KAAKkJ,SAASoD,GAAG,KACbnN,EAAIiC,QACbjC,EAAId,KAAK,iBAAiB,GAAMmG,SAAS,kBAAkBI,SAAU8J,EAAI,iBAAmB,kBAM9FpC,EAAItM,KAAKkJ,SAASoD,EAAEhI,SAKvBtE,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAW9C,EAAEmM,OAAOC,aAAahK,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,YAC3GV,OACHuH,GAAGvH,KAAK6E,SAASwX,SAASM,cAAgB,qBAAuB,oBAAqB/e,EAAEoK,OAAM,SAAUR,EAAG7H,GAC1G,IAICH,EAAGqK,EAAG4D,EAAGtO,EAHT8B,EAAMtB,EAAKuG,KACX8H,EAAIhO,KAAKwB,OAAO7B,KAChBgQ,EAAM3P,KAAKkJ,SAASjI,EAAIqD,QACVuG,EAAI7K,KAAK6E,SAASwX,SAASK,QAAShO,EAAI1O,KAAK6E,SAASwX,SAASM,cAC7E9U,EAAM,GAAIoV,EAAMjd,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAEvD,IAAKlB,EAAI,EAAGqK,EAAIoT,EAAI7b,OAAQ5B,EAAIqK,EAAGrK,IAClCqI,EAAIoV,EAAIzd,KAAM,EAIf,IAA0B,IAAvBqL,EAAEjM,QAAQ,QAAgB,CAE5B,IAAIse,EAAcld,KAAKmd,2BAA2Blc,EAAIlB,IAAI,GAClCkB,EAAIwD,WAAWqF,OAAO7I,EAAIlB,IAAIqd,SAAQ,SAASrd,GACvCmd,EAAYte,QAAQmB,IAAO,EAC3B8H,EAAI9H,IAAM,SAGH8H,EAAI9H,MAM5C,IAAwB,IAArB8K,EAAEjM,QAAQ,MACZ,KAAM+Q,GAAOA,EAAI5P,KAAOnC,EAAEE,OAAOiB,MAAM,CAEtC,IADA0O,EAAI,EACAjO,EAAI,EAAGqK,EAAI8F,EAAInL,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC1CiO,GAAKO,EAAE2B,EAAInL,SAAShF,IAAIkF,MAAOgK,EAAI,WAAa,WAEjD,GAAGjB,IAAM5D,EAUR,MATA8F,EAAIjL,MAAOgK,EAAI,WAAa,YAAc,EAC1C7G,EAAI8H,EAAI5P,KAAM,GAEdZ,EAAMa,KAAKkJ,SAASyG,GAAK,KACfxQ,EAAIiC,QACbjC,EAAId,KAAK,iBAAiB,GAAMmG,SAAS,kBAAkBI,SAAS8J,EAAI,iBAAmB,kBAM7FiB,EAAM3P,KAAKkJ,SAASyG,EAAIrL,QAK1B,IAAK9E,KADLyd,EAAM,GACIpV,EACLA,EAAIsJ,eAAe3R,IACtByd,EAAI1Q,KAAK/M,GAGXQ,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAWuc,IAC/Cjd,OACHuH,GAAGvH,KAAK6E,SAASwX,SAASM,cAAgB,sBAAwB,qBAAsB/e,EAAEoK,OAAM,SAAUR,EAAG7H,GAC5G,IAECH,EAAGqK,EAAG1K,EAFH8B,EAAMjB,KAAKkJ,SAAStL,EAAEE,OAAOiB,MAChCiP,EAAIhO,KAAKwB,OAAO7B,KAEjB,IAAIH,EAAI,EAAGqK,EAAI5I,EAAIwD,WAAWrD,OAAQ5B,EAAIqK,EAAGrK,KAC5CL,EAAM6O,EAAE/M,EAAIwD,WAAWjF,MACbL,EAAI+R,UAAY/R,EAAI+R,SAASxM,OAASvF,EAAI+R,SAASxM,MAAM2Y,eAClEle,EAAI+R,SAASxM,MAAM2Y,cAAe,KAGlCrd,OACHuH,GAAGvH,KAAK6E,SAASwX,SAASM,cAAgB,uBAAyB,sBAAuB/e,EAAEoK,OAAM,SAAUR,EAAG7H,GAC9G,IAGCH,EAAGqK,EAAG1K,EAFN8B,EAAMtB,EAAKuG,KAEA2E,GADL7K,KAAKkJ,SAASjI,GAAK,GACVjB,KAAK6E,SAASwX,SAASK,SAAShO,EAAI1O,KAAK6E,SAASwX,SAASM,cAC1EM,EAAMjd,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAE5C4c,EAASrc,EAAIwD,WAAWqF,OAAO7I,EAAIlB,IAGpC,IAA0B,IAAvB8K,EAAEjM,QAAQ,QAAgB,CAC5B,IAAIse,EAAcld,KAAKmd,2BAA2Blc,EAAIlB,IAAI,GAE1Dkd,EAAMA,EAAIzX,QAAO,SAASzF,GACzB,OAA+B,IAAxBud,EAAO1e,QAAQmB,IAAcmd,EAAYte,QAAQmB,IAAO,KAMjE,IAAwB,IAArB8K,EAAEjM,QAAQ,QAAyC,IAAzBqe,EAAIre,QAAQqC,EAAIlB,IAAY,CACxD,IAAIP,EAAI,EAAGqK,EAAI5I,EAAIsD,QAAQnD,OAAQ5B,EAAIqK,EAAGrK,KACzCL,EAAMa,KAAKwB,OAAO7B,KAAKsB,EAAIsD,QAAQ/E,KAC/BkF,MAAOgK,EAAI,WAAa,YAAc,EACvCvP,GAAOA,EAAI+R,UAAY/R,EAAI+R,SAASxM,OAASvF,EAAI+R,SAASxM,MAAM2Y,eAClEle,EAAI+R,SAASxM,MAAM2Y,cAAe,IAEnCle,EAAMa,KAAKkJ,SAASjI,EAAIsD,QAAQ/E,IAAI,KAC1BL,EAAIiC,QACbjC,EAAId,KAAK,iBAAiB,GAAOmG,SAAS,kBAAkB0C,YAAYwH,EAAI,iBAAmB,kBAIjGuO,EAAMA,EAAIzX,QAAO,SAASzF,GACzB,OAAoC,IAA7BkB,EAAIsD,QAAQ3F,QAAQmB,MAI7BC,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAWuc,IAC/Cjd,QAE+C,IAAlDA,KAAK6E,SAASwX,SAASK,QAAQ9d,QAAQ,OACzCoB,KAAK2E,QACH4C,GAAG,qBAAsB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GAK7C,IAHA,IAECH,EAAGqK,EAAG4D,EAAGtO,EAFNmN,EAAItM,KAAKkJ,SAASvJ,EAAK2E,QAC1B0J,EAAIhO,KAAKwB,OAAO7B,KACF+O,EAAI1O,KAAK6E,SAASwX,SAASM,cACpCrQ,GAAKA,EAAEvM,KAAOnC,EAAEE,OAAOiB,OAASuN,EAAE5H,MAAOgK,EAAI,WAAa,YAAa,CAE5E,IADAjB,EAAI,EACAjO,EAAI,EAAGqK,EAAIyC,EAAE9H,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IACxCiO,GAAKO,EAAE1B,EAAE9H,SAAShF,IAAIkF,MAAOgK,EAAI,WAAa,WAE/C,KAAG7E,EAAI,GAAK4D,IAAM5D,GASjB,MARAyC,EAAE5H,MAAOgK,EAAI,WAAa,YAAc,EACxC1O,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAS6L,KAAKD,EAAEvM,KACtDZ,EAAMa,KAAKkJ,SAASoD,GAAG,KACbnN,EAAIiC,QACbjC,EAAId,KAAK,iBAAiB,GAAMmG,SAAS,kBAAkBI,SAAS8J,EAAI,iBAAmB,kBAM7FpC,EAAItM,KAAKkJ,SAASoD,EAAEhI,WAEnBtE,OACHuH,GAAG,mBAAoB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GAE3C,IAIC2M,EAAGmB,EAAGjO,EAAGqK,EAAG1K,EAJT6Y,EAAWrY,EAAKqY,SACnBI,EAAUzY,EAAK4d,WACfjF,EAAUtY,KAAKkJ,SAASvJ,EAAK2E,QAC7B0J,EAAIhO,KAAKwB,OAAO7B,KACC+O,EAAI1O,KAAK6E,SAASwX,SAASM,cAC7C,IAAI3E,EAEH,IADA1L,EAAItM,KAAKkJ,SAASkP,GACZ9L,GAAKA,EAAEvM,KAAOnC,EAAEE,OAAOiB,OAASuN,EAAE5H,MAAOgK,EAAI,WAAa,YAAa,CAE5E,IADAjB,EAAI,EACAjO,EAAI,EAAGqK,EAAIyC,EAAE9H,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IACxCiO,GAAKO,EAAE1B,EAAE9H,SAAShF,IAAIkF,MAAOgK,EAAI,WAAa,WAE/C,KAAG7E,EAAI,GAAK4D,IAAM5D,GASjB,MARAyC,EAAE5H,MAAOgK,EAAI,WAAa,YAAc,EACxC1O,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAS6L,KAAKD,EAAEvM,KACtDZ,EAAMa,KAAKkJ,SAASoD,GAAG,KACbnN,EAAIiC,QACbjC,EAAId,KAAK,iBAAiB,GAAMmG,SAAS,kBAAkBI,SAAS8J,EAAI,iBAAmB,kBAM7FpC,EAAItM,KAAKkJ,SAASoD,EAAEhI,QAItB,IADAgI,EAAIgM,EACEhM,GAAKA,EAAEvM,KAAOnC,EAAEE,OAAOiB,MAAM,CAElC,IADA0O,EAAI,EACAjO,EAAI,EAAGqK,EAAIyC,EAAE9H,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IACxCiO,GAAKO,EAAE1B,EAAE9H,SAAShF,IAAIkF,MAAOgK,EAAI,WAAa,WAE/C,GAAGjB,IAAM5D,EACJyC,EAAE5H,MAAOgK,EAAI,WAAa,aAC7BpC,EAAE5H,MAAOgK,EAAI,WAAa,YAAc,EACxC1O,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAS6L,KAAKD,EAAEvM,KACtDZ,EAAMa,KAAKkJ,SAASoD,GAAG,KACbnN,EAAIiC,QACbjC,EAAId,KAAK,iBAAiB,GAAMmG,SAAS,kBAAkBI,SAAS8J,EAAI,iBAAmB,uBAIzF,CACJ,IAAGpC,EAAE5H,MAAOgK,EAAI,WAAa,WAS5B,MARApC,EAAE5H,MAAOgK,EAAI,WAAa,YAAc,EACxC1O,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAW9C,EAAEmM,OAAOuL,kBAAkBtV,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAU4L,EAAEvM,KAC9HZ,EAAMa,KAAKkJ,SAASoD,GAAG,KACbnN,EAAIiC,QACbjC,EAAId,KAAK,iBAAiB,GAAOmG,SAAS,kBAAkB0C,YAAYwH,EAAI,iBAAmB,kBAOlGpC,EAAItM,KAAKkJ,SAASoD,EAAEhI,WAEnBtE,QAUPA,KAAK+c,cAAgB,WACpB,GAAoB,OAAjB/c,KAAK2E,QAAR,CACA,IAAInF,EAAGqK,EAAGpK,EAAG+N,EAAG3E,EAAI,GAAImF,EAAIhO,KAAKwB,OAAO7B,KAAM+O,EAAI1O,KAAK6E,SAASwX,SAASM,cAAe9R,EAAI7K,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAU4L,EAAI,GAAIkR,EAAKxd,KACzJ,IAAIR,EAAI,EAAGqK,EAAIgB,EAAEzJ,OAAQ5B,EAAIqK,EAAGrK,IAC/B,GAAGwO,EAAEnD,EAAErL,KAAOwO,EAAEnD,EAAErL,IAAI+E,QACrB,IAAI9E,EAAI,EAAG+N,EAAIQ,EAAEnD,EAAErL,IAAI+E,QAAQnD,OAAQ3B,EAAI+N,GACvC3E,EAAEmF,EAAEnD,EAAErL,IAAI+E,QAAQ9E,MAAQ5B,EADgB4B,IAI1CuO,EAAEnD,EAAErL,IAAI+E,QAAQ9E,KAAO7B,EAAEE,OAAOiB,OAClC8J,EAAEmF,EAAEnD,EAAErL,IAAI+E,QAAQ9E,KAAM,EACxB6M,EAAEC,KAAKyB,EAAEnD,EAAErL,IAAI+E,QAAQ9E,KA8C3B,IAxCAO,KAAK2E,QAAQS,KAAK,kBAAkB6F,IAAI,0BACtC1L,MAAK,WACL,IAA6Bke,EAAzBte,EAAMqe,EAAGtU,SAASlJ,MAEtB,GAAIb,EAEJ,GAAIA,EAAIuF,MAAMP,QAeb,IAAI3E,EAAI,EAAGqK,EAAI1K,EAAIsF,WAAWrD,OAAQ5B,EAAIqK,EAAGrK,IAE5C,KADAie,EAAOzP,EAAE7O,EAAIsF,WAAWjF,KACfkF,MAAMP,QAAUsZ,EAAKvM,UAAYuM,EAAKvM,SAASxM,OAAS+Y,EAAKvM,SAASxM,MAAM2Y,eAAqD,IAArCI,EAAKvM,SAASxM,MAAM2Y,aAKxH,IAJGxU,EAAE4U,EAAK1d,MAAQlC,GAAa4f,EAAK1d,KAAOnC,EAAEE,OAAOiB,OACnD8J,EAAE4U,EAAK1d,KAAM,EACbuM,EAAEC,KAAKkR,EAAK1d,KAETN,EAAI,EAAG+N,EAAIiQ,EAAKlZ,QAAQnD,OAAQ3B,EAAI+N,EAAG/N,IACvCoJ,EAAE4U,EAAKlZ,QAAQ9E,MAAQ5B,GAAa4f,EAAKlZ,QAAQ9E,KAAO7B,EAAEE,OAAOiB,OACnE8J,EAAE4U,EAAKlZ,QAAQ9E,KAAM,EACrB6M,EAAEC,KAAKkR,EAAKlZ,QAAQ9E,UAxBxB,GAAGN,EAAI+R,UAAY/R,EAAI+R,SAASxM,OAASvF,EAAI+R,SAASxM,MAAM2Y,eAAoD,IAApCle,EAAI+R,SAASxM,MAAM2Y,aAK9F,IAJGxU,EAAE1J,EAAIY,MAAQlC,GAAasB,EAAIY,KAAOnC,EAAEE,OAAOiB,OACjD8J,EAAE1J,EAAIY,KAAM,EACZuM,EAAEC,KAAKpN,EAAIY,KAERN,EAAI,EAAG+N,EAAIrO,EAAIoF,QAAQnD,OAAQ3B,EAAI+N,EAAG/N,IACtCoJ,EAAE1J,EAAIoF,QAAQ9E,MAAQ5B,GAAasB,EAAIoF,QAAQ9E,KAAO7B,EAAEE,OAAOiB,OACjE8J,EAAE1J,EAAIoF,QAAQ9E,KAAM,EACpB6M,EAAEC,KAAKpN,EAAIoF,QAAQ9E,QAwBzBO,KAAK2E,QAAQS,KAAK,wBAAwB8B,YAAY,uBAClD1H,EAAI,EAAGqK,EAAIyC,EAAElL,OAAQ5B,EAAIqK,EAAGrK,IAC3BwO,EAAE1B,EAAE9M,IAAIkF,MAAOgK,EAAI,WAAa,aACnC7D,EAAI7K,KAAKkJ,SAASoD,EAAE9M,IAAI,KAChBqL,EAAEzJ,QACTyJ,EAAErG,SAAS,kBAAkBA,SAAS,oBAAoBI,SAAS,yBAKvE5E,KAAKoS,YAAc,SAASnR,EAAKuR,EAAMpE,EAAaqE,GAEnD,GADAxR,EAAMqD,EAAO8N,YAAY/P,MAAMrC,KAAMiC,WAC7B,CACP,IAAIzC,EAAGqK,EAAG1K,EAAM,KAAM2R,EAAO,KAC7B,IAAItR,EAAI,EAAGqK,EAAI5I,EAAI+R,WAAW5R,OAAQ5B,EAAIqK,EAAGrK,IAC5C,GAAGyB,EAAI+R,WAAWxT,IAAMyB,EAAI+R,WAAWxT,GAAGuH,YAAuE,IAA1D9F,EAAI+R,WAAWxT,GAAGuH,UAAUnI,QAAQ,iBAAyB,CACnHO,EAAM8B,EAAI+R,WAAWxT,GACrB,MAGCL,KACEa,KAAK6E,SAASwX,SAASM,eAAiB3c,KAAKwB,OAAO7B,KAAKsB,EAAIlB,IAAI2E,MAAMsY,UAAW7d,EAAI4H,WAAa,mBACvG+J,EAAOsL,EAAGrJ,WAAU,GACjB/S,KAAKwB,OAAO7B,KAAKsB,EAAIlB,IAAI2E,MAAMgZ,oBAAqB5M,EAAK/J,WAAa,6BACzE5H,EAAIoU,aAAazC,EAAM3R,EAAI6T,WAAW,KAOxC,OAJI5E,IAA2E,IAA5DpO,KAAK6E,SAASwX,SAASK,QAAQ9d,QAAQ,kBACtDoB,KAAKI,MAAMic,SAASS,KAAO7S,aAAajK,KAAKI,MAAMic,SAASS,KAC/D9c,KAAKI,MAAMic,SAASS,IAAMlT,WAAWhM,EAAEoK,MAAMhI,KAAK+c,cAAe/c,MAAO,KAElEiB,GAORjB,KAAK2d,gBAAkB,WAAc3d,KAAKI,MAAMhB,KAAKiB,OAAOud,YAAa,EAAM5d,KAAK+F,mBAAmBmB,YAAY,yBAMnHlH,KAAK6d,gBAAkB,WAAc7d,KAAKI,MAAMhB,KAAKiB,OAAOud,YAAa,EAAO5d,KAAK+F,mBAAmBnB,SAAS,yBAMjH5E,KAAK8d,kBAAoB,WAAiB9d,KAAKI,MAAMhB,KAAKiB,OAAOud,WAAc5d,KAAK6d,kBAA4B7d,KAAK2d,mBAOrH3d,KAAK+d,gBAAkB,SAAU9c,GAChCA,EAAMjB,KAAKkJ,SAASjI,GACpB,IAAwCzB,EAAGqK,EAAvCgB,EAAI7K,KAAK6E,SAASwX,SAASK,QAAehO,EAAI1O,KAAK6E,SAASwX,SAASM,cAAe/N,EAAI5O,KAAKI,MAAOsO,EAAI,OAAS,YAAahO,SAAUsN,EAAIhO,KAAKwB,OAAO7B,KAC5J,IAAIsB,IAAmD,IAA5CA,EAAIyD,MAAOgK,EAAI,WAAa,aAAuD,IAA/B7D,EAAEjM,QAAQ,kBAAkD,IAAvBiM,EAAEjM,QAAQ,UAAuC,IAArBiM,EAAEjM,QAAQ,MACzI,OAAO,EAER,IAAIqC,EAAIyD,MAAMP,SAA8C,IAApClD,EAAIiQ,SAASxM,MAAM2Y,aAC1C,OAAO,EAER,IAAI7d,EAAI,EAAGqK,EAAI5I,EAAIwD,WAAWrD,OAAQ5B,EAAIqK,EAAGrK,IAC5C,IAAwC,IAArC5B,EAAEiQ,QAAQ5M,EAAIwD,WAAWjF,GAAIoP,KAAeZ,EAAE/M,EAAIwD,WAAWjF,IAAIkF,MAAMP,QAAU6J,EAAE/M,EAAIwD,WAAWjF,IAAI0R,SAASxM,MAAM2Y,aACvH,OAAO,EAGT,OAAO,GASRrd,KAAKge,iBAAmB,SAAU/c,GACjC,IAAIyS,EAAIC,EAAIhI,EACZ,GAAG/N,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKge,iBAAiB/c,EAAIyS,IAE3B,OAAO,EAGR,KADAzS,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAC9B,OAAO,EAER4M,EAAM3L,KAAKkJ,SAASjI,GAAK,GACrBA,EAAIyD,MAAMgZ,oBACbzc,EAAIyD,MAAMgZ,mBAAoB,EAC3B/R,GAAOA,EAAIvK,QACbuK,EAAInH,SAAS,kBAAkBA,SAAS,oBAAoBI,SAAS,4BAStE5E,KAAKkF,QAAQ,mBAAoB,CAAE,KAASjE,MAU9CjB,KAAKie,gBAAkB,SAAUhd,GAChC,IAAIyS,EAAIC,EAAIhI,EACZ,GAAG/N,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKie,gBAAgBhd,EAAIyS,IAE1B,OAAO,EAGR,KADAzS,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAC9B,OAAO,EAER4M,EAAM3L,KAAKkJ,SAASjI,GAAK,GACtBA,EAAIyD,MAAMgZ,oBACZzc,EAAIyD,MAAMgZ,mBAAoB,EAC3B/R,GAAOA,EAAIvK,QACbuK,EAAInH,SAAS,kBAAkBA,SAAS,oBAAoB0C,YAAY,4BASzElH,KAAKkF,QAAQ,kBAAmB,CAAE,KAASjE,MAI7CjB,KAAKuI,cAAgB,SAAUtH,EAAKuG,GACnC,OAAG5J,EAAE4J,EAAEC,QAAQ7E,SAAS,8BAGrB5C,KAAK6E,SAASwX,SAASM,gBAAkB3c,KAAK6E,SAASwX,SAASG,YAAc5e,EAAE4J,EAAEC,QAAQ7E,SAAS,sBACrG4E,EAAEkB,SAAU,GAEV1I,KAAK6E,SAASwX,SAASM,gBAAmB3c,KAAK6E,SAASwX,SAASG,aAAe5e,EAAE4J,EAAEC,QAAQ7E,SAAS,mBAChG0B,EAAOiE,cAAcvG,KAAKhC,KAAMiB,EAAKuG,IAE1CxH,KAAKsU,YAAYrT,KAGjBjB,KAAKke,WAAWjd,GAClBjB,KAAKme,aAAald,EAAKuG,GAGvBxH,KAAKoe,WAAWnd,EAAKuG,QAEtBxH,KAAKkF,QAAQ,gBAAiB,CAAE,KAASlF,KAAKkJ,SAASjI,QAUxDjB,KAAKmd,2BAA6B,SAASpd,EAAIse,GAC9C,IAAIC,EAAOte,KACP0O,EAAI1O,KAAK6E,SAASwX,SAASM,cAC3BzW,EAAOlG,KAAKwB,OAAO7B,KAAKI,GACxBwe,EAAkB,GAClBC,EAAsB,GAE1B,IACExe,KAAK6E,SAASwX,SAASO,qBAAwB1W,EAAKxB,MAAML,WAC1DrE,KAAK6E,SAASwX,SAASQ,mBAAsB3W,EAAKxB,MAAMwJ,OAwCrD,CACJ,IAAIuQ,EAAmBze,KAAK0e,wBAAwB3e,GAEhDmG,EAAKxB,MAAOgK,EAAI,WAAa,YAChC+P,EAAiBlS,KAAKrG,EAAKnG,IAG5Bwe,EAAkBA,EAAgBzU,OAAO2U,OA9CxC,CAEevY,EAAK1B,UACpB0B,EAAK1B,SAAS4Y,SAAQ,SAASuB,GAC9B,IAAIF,EAAmBH,EAAKnB,2BAA2BwB,EAASN,GAChEE,EAAkBA,EAAgBzU,OAAO2U,GACrCA,EAAiB7f,QAAQ+f,IAAY,GACxCH,EAAoBjS,KAAKoS,MAK5B,IAAIhT,EAAM2S,EAAKpV,SAAShD,GAAM,GAG1BmX,EAAemB,EAAoBpd,OAAS,GAAKod,EAAoBpd,OAAS8E,EAAK1B,SAASpD,OAE7F8E,EAAKgL,UAAYhL,EAAKgL,SAASxM,OAASwB,EAAKgL,SAASxM,MAAM2Y,eAC9DnX,EAAKgL,SAASxM,MAAM2Y,aAAeA,GAIhCA,GACYnX,EAAKxB,MAAOgK,EAAI,WAAa,YAAc,EAC3C/C,EAAItN,KAAK,iBAAiB,GAAOmG,SAAS,kBAAkB0C,YAAYwH,EAAI,iBAAmB,mBAItG2P,GAAgBG,EAAoBpd,SAAW8E,EAAK1B,SAASpD,QACtD8E,EAAKxB,MAAOgK,EAAI,WAAa,WAAc2P,EAC1DE,EAAgBhS,KAAKrG,EAAKnG,IAE1B4L,EAAItN,KAAK,iBAAiB,GAAMmG,SAAS,kBAAkBI,SAAS8J,EAAI,iBAAmB,oBAG5ExI,EAAKxB,MAAOgK,EAAI,WAAa,YAAc,EAC1D/C,EAAItN,KAAK,iBAAiB,GAAOmG,SAAS,kBAAkB0C,YAAYwH,EAAI,iBAAmB,mBAajG,OAAO6P,GAORve,KAAK0e,wBAA0B,SAAS3e,GACvC,IAAIue,EAAOte,KACP0O,EAAI4P,EAAKzZ,SAASwX,SAASM,cAG/B,OAFW2B,EAAK9c,OAAO7B,KAAKI,GAEhB0E,WAAWe,QAAO,SAASvF,GACtC,OAAOqe,EAAK9c,OAAO7B,KAAKM,GAAKyE,MAAOgK,EAAI,WAAa,eAWvD1O,KAAKoe,WAAa,SAAUnd,EAAKuG,GAChC,GAAGxH,KAAK6E,SAASwX,SAASM,cAAiB,OAAO3c,KAAKiV,YAAYhU,GAAK,GAAO,EAAMuG,GACrF,IAAImE,EAAK+H,EAAIC,EACb,GAAG/V,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKoe,WAAWnd,EAAIyS,GAAKlM,GAE1B,OAAO,EAGR,KADAvG,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAC9B,OAAO,EAER4M,EAAM3L,KAAKkJ,SAASjI,GAAK,GACrBA,EAAIyD,MAAMsY,UACb/b,EAAIyD,MAAMsY,SAAU,EACpBhd,KAAKI,MAAMic,SAAS3b,SAAS6L,KAAKtL,EAAIlB,IACnC4L,GAAOA,EAAIvK,QACbuK,EAAInH,SAAS,kBAAkBI,SAAS,kBAWzC5E,KAAKkF,QAAQ,aAAc,CAAE,KAASjE,EAAK,SAAajB,KAAKI,MAAMic,SAAS3b,SAAU,MAAU8G,MAUlGxH,KAAKme,aAAe,SAAUld,EAAKuG,GAClC,GAAGxH,KAAK6E,SAASwX,SAASM,cAAiB,OAAO3c,KAAKgV,cAAc/T,GAAK,EAAOuG,GACjF,IAAIkM,EAAIC,EAAIhI,EACZ,GAAG/N,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKme,aAAald,EAAIyS,GAAKlM,GAE5B,OAAO,EAGR,KADAvG,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAC9B,OAAO,EAER4M,EAAM3L,KAAKkJ,SAASjI,GAAK,GACtBA,EAAIyD,MAAMsY,UACZ/b,EAAIyD,MAAMsY,SAAU,EACpBhd,KAAKI,MAAMic,SAAS3b,SAAW9C,EAAEmM,OAAOuL,kBAAkBtV,KAAKI,MAAMic,SAAS3b,SAAUO,EAAIlB,IACzF4L,EAAIvK,QACNuK,EAAInH,SAAS,kBAAkB0C,YAAY,kBAW5ClH,KAAKkF,QAAQ,eAAgB,CAAE,KAASjE,EAAK,SAAajB,KAAKI,MAAMic,SAAS3b,SAAU,MAAU8G,MAUpGxH,KAAK4e,UAAY,WAChB,GAAG5e,KAAK6E,SAASwX,SAASM,cAAiB,OAAO3c,KAAKuV,aACvD,IAAmD/V,EAAGqK,EAA5C7J,KAAKI,MAAMic,SAAS3b,SAASoJ,OAAO,IAE9C,IADA9J,KAAKI,MAAMic,SAAS3b,SAAWV,KAAKwB,OAAO7B,KAAK/B,EAAEE,OAAOiB,MAAM0F,WAAWqF,SACtEtK,EAAI,EAAGqK,EAAI7J,KAAKI,MAAMic,SAAS3b,SAASU,OAAQ5B,EAAIqK,EAAGrK,IACvDQ,KAAKwB,OAAO7B,KAAKK,KAAKI,MAAMic,SAAS3b,SAASlB,MAChDQ,KAAKwB,OAAO7B,KAAKK,KAAKI,MAAMic,SAAS3b,SAASlB,IAAIkF,MAAMsY,SAAU,GAGpEhd,KAAK+P,QAAO,GAQZ/P,KAAKkF,QAAQ,YAAa,CAAE,SAAalF,KAAKI,MAAMic,SAAS3b,YAQ9DV,KAAK6e,YAAc,WAClB,GAAG7e,KAAK6E,SAASwX,SAASM,cAAiB,OAAO3c,KAAKmV,eACvD,IAAmD3V,EAAGqK,EAAlD1K,EAAMa,KAAKI,MAAMic,SAAS3b,SAASoJ,OAAO,IAC9C,IAAItK,EAAI,EAAGqK,EAAI7J,KAAKI,MAAMic,SAAS3b,SAASU,OAAQ5B,EAAIqK,EAAGrK,IACvDQ,KAAKwB,OAAO7B,KAAKK,KAAKI,MAAMic,SAAS3b,SAASlB,MAChDQ,KAAKwB,OAAO7B,KAAKK,KAAKI,MAAMic,SAAS3b,SAASlB,IAAIkF,MAAMsY,SAAU,GAGpEhd,KAAKI,MAAMic,SAAS3b,SAAW,GAC/BV,KAAK2E,QAAQS,KAAK,mBAAmB8B,YAAY,kBASjDlH,KAAKkF,QAAQ,cAAe,CAAE,SAAalF,KAAKI,MAAMic,SAAS3b,SAAU,KAASvB,KASnFa,KAAKke,WAAa,SAAUjd,GAC3B,OAAGjB,KAAK6E,SAASwX,SAASM,cAAwB3c,KAAKkV,YAAYjU,OACnEA,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,OACxBkC,EAAIyD,MAAMsY,SASlBhd,KAAK8e,YAAc,SAAUxM,GAC5B,OAAGtS,KAAK6E,SAASwX,SAASM,cAAwB3c,KAAKwV,aAAalD,GAC7DA,EAAO1U,EAAE6X,IAAIzV,KAAKI,MAAMic,SAAS3b,SAAU9C,EAAEoK,OAAM,SAAUxI,GAAK,OAAOQ,KAAKkJ,SAAS1J,KAAOQ,OAASA,KAAKI,MAAMic,SAAS3b,UASnIV,KAAK+e,gBAAkB,SAAUzM,GAChC,GAAGtS,KAAK6E,SAASwX,SAASM,cAAiB,OAAO3c,KAAK0V,iBAAiBpD,GACxE,IACW9S,EAAGqK,EAAGpK,EAAG+N,EADhBrO,EAAMa,KAAK8e,aAAY,GAC1B7d,EAAM,GACP,IAAIzB,EAAI,EAAGqK,EAAI1K,EAAIiC,OAAQ5B,EAAIqK,EAAGrK,IACjCyB,EAAI9B,EAAIK,GAAGO,IAAMZ,EAAIK,GAEtB,IAAIA,EAAI,EAAGqK,EAAI1K,EAAIiC,OAAQ5B,EAAIqK,EAAGrK,IACjC,IAAIC,EAAI,EAAG+N,EAAIrO,EAAIK,GAAGiF,WAAWrD,OAAQ3B,EAAI+N,EAAG/N,IAC5CwB,EAAI9B,EAAIK,GAAGiF,WAAWhF,YACjBwB,EAAI9B,EAAIK,GAAGiF,WAAWhF,IAKhC,IAAID,KADJL,EAAM,GACG8B,EACLA,EAAIkQ,eAAe3R,IACrBL,EAAIoN,KAAK/M,GAGX,OAAO8S,EAAO1U,EAAE6X,IAAItW,EAAKvB,EAAEoK,OAAM,SAAUxI,GAAK,OAAOQ,KAAKkJ,SAAS1J,KAAOQ,OAASb,GAStFa,KAAKgf,mBAAqB,SAAU1M,GACnC,GAAGtS,KAAK6E,SAASwX,SAASM,cAAiB,OAAO3c,KAAK2V,oBAAoBrD,GAC3E,IACW9S,EAAGqK,EADV1K,EAAMa,KAAK8e,aAAY,GAC1B7d,EAAM,GACP,IAAIzB,EAAI,EAAGqK,EAAI1K,EAAIiC,OAAQ5B,EAAIqK,EAAGrK,IAC7BL,EAAIK,GAAGgF,SAASpD,QACnBH,EAAIsL,KAAKpN,EAAIK,GAAGO,IAGlB,OAAOuS,EAAO1U,EAAE6X,IAAIxU,EAAKrD,EAAEoK,OAAM,SAAUxI,GAAK,OAAOQ,KAAKkJ,SAAS1J,KAAOQ,OAASiB,GAEtFjB,KAAKoG,UAAY,SAAUnF,EAAKsM,GAC/B,IAAI9N,EAAG+N,EAAYrO,EACnB,IAAIvB,EAAE8P,QAAQzM,KAASjB,KAAK6E,SAASwX,SAASM,gBAC7Cxd,EAAMa,KAAKkJ,SAASjI,KACV9B,EAAIuF,MAAMP,OACnB,IAAI1E,EAAI,EAAG+N,EAAIrO,EAAIsF,WAAWrD,OAAQ3B,EAAI+N,EAAG/N,IACzCO,KAAKwB,OAAO7B,KAAKR,EAAIsF,WAAWhF,IAAIiF,MAAMsY,WACxC,EACJhd,KAAKI,MAAMic,SAAS3b,SAAW9C,EAAEmM,OAAOuL,kBAAkBtV,KAAKI,MAAMic,SAAS3b,SAAUvB,EAAIsF,WAAWhF,KAK3G,OAAO6E,EAAO8B,UAAU/D,MAAMrC,KAAMiC,YAErCjC,KAAK4V,UAAY,WAChB,IAAIlR,EAAQJ,EAAOsR,UAAUvT,MAAMrC,KAAMiC,WACzC,OAAGjC,KAAK6E,SAASwX,SAASM,gBAC1BjY,EAAM2X,SAAWrc,KAAKI,MAAMic,SAAS3b,SAASqB,SADI2C,GAInD1E,KAAK8V,UAAY,SAAUpR,EAAO6I,GACjC,IAAI0R,EAAM3a,EAAOwR,UAAUzT,MAAMrC,KAAMiC,WACvC,GAAGgd,GAAOva,EAAM2X,SAAU,CACzB,IAAIrc,KAAK6E,SAASwX,SAASM,cAAe,CACzC3c,KAAK6e,cACL,IAAI1K,EAAQnU,KACZpC,EAAE2B,KAAKmF,EAAM2X,UAAU,SAAU7c,EAAGiL,GACnC0J,EAAMiK,WAAW3T,MAKnB,cAFO/F,EAAM2X,SACbrc,KAAK8V,UAAUpR,EAAO6I,IACf,EAER,OAAO0R,GAERjf,KAAKqW,QAAU,SAAUC,EAAcC,GAItC,OAHIvW,KAAK6E,SAASwX,SAASM,gBAC1B3c,KAAKI,MAAMic,SAAS3b,SAAW,IAEzB4D,EAAO+R,QAAQhU,MAAMrC,KAAMiC,aAmBpCrE,EAAEE,OAAOW,SAASygB,kBAAoB,WAAc,OAAO,GAC3DthB,EAAEE,OAAOY,QAAQwgB,kBAAoB,SAAUhgB,EAASoF,GAEvDtE,KAAKuI,cAAgB,SAAUtH,EAAKuG,GAChCxH,KAAK6E,SAASqa,kBAAkBld,KAAKhC,KAAMA,KAAKkJ,SAASjI,GAAMuG,IACjElD,EAAOiE,cAAcvG,KAAKhC,KAAMiB,EAAKuG,KAiBxC5J,EAAEE,OAAOW,SAAS0gB,YAAc,CAM/BlK,aAAc,EAMdmK,cAAe,EAoBfC,MAAQ,SAAUxW,EAAG2G,GACpB,MAAO,CACN,OAAW,CACV,kBAAqB,EACrB,iBAAoB,EACpB,WAAgB,EAChB,MAAa,SACb,OAAa,SAAU7P,GACtB,IAAI4B,EAAO3D,EAAEE,OAAOiD,UAAUpB,EAAKoB,WAClCE,EAAMM,EAAK2H,SAASvJ,EAAKoB,WAC1BQ,EAAK8V,YAAYpW,EAAK,GAAI,QAAQ,SAAUqe,GAC3C,IACC/d,EAAKmI,KAAK4V,GACT,MAAOpT,GACRtC,YAAW,WAAcrI,EAAKmI,KAAK4V,KAAa,SAKpD,OAAW,CACV,kBAAqB,EACrB,iBAAoB,EACpB,WAAgB,EAChB,MAAa;;;;;;AAMb,OAAa,SAAU3f,GACtB,IAAI4B,EAAO3D,EAAEE,OAAOiD,UAAUpB,EAAKoB,WAClCE,EAAMM,EAAK2H,SAASvJ,EAAKoB,WAC1BQ,EAAKmI,KAAKzI,KAGZ,OAAW,CACV,kBAAqB,EACrB,MAAY,EACZ,iBAAoB,EACpB,WAAgB,EAChB,MAAa,SACb,OAAa,SAAUtB,GACtB,IAAI4B,EAAO3D,EAAEE,OAAOiD,UAAUpB,EAAKoB,WAClCE,EAAMM,EAAK2H,SAASvJ,EAAKoB,WACvBQ,EAAK2T,YAAYjU,GACnBM,EAAKmW,YAAYnW,EAAKiU,gBAGtBjU,EAAKmW,YAAYzW,KAIpB,IAAQ,CACP,kBAAqB,EACrB,MAAY,EACZ,iBAAoB,EACpB,MAAa,OACb,QAAa,EACb,QAAY,CACX,IAAQ,CACP,kBAAqB,EACrB,iBAAoB,EACpB,MAAa,MACb,OAAa,SAAUtB,GACtB,IAAI4B,EAAO3D,EAAEE,OAAOiD,UAAUpB,EAAKoB,WAClCE,EAAMM,EAAK2H,SAASvJ,EAAKoB,WACvBQ,EAAK2T,YAAYjU,GACnBM,EAAKkX,IAAIlX,EAAKmU,oBAGdnU,EAAKkX,IAAIxX,KAIZ,KAAS,CACR,kBAAqB,EACrB,MAAY,EACZ,iBAAoB,EACpB,MAAa,OACb,OAAa,SAAUtB,GACtB,IAAI4B,EAAO3D,EAAEE,OAAOiD,UAAUpB,EAAKoB,WAClCE,EAAMM,EAAK2H,SAASvJ,EAAKoB,WACvBQ,EAAK2T,YAAYjU,GACnBM,EAAKmX,KAAKnX,EAAKmU,oBAGfnU,EAAKmX,KAAKzX,KAIb,MAAU,CACT,kBAAqB,EACrB,MAAY,EACZ,UAAgB,SAAUtB,GACzB,OAAQ/B,EAAEE,OAAOiD,UAAUpB,EAAKoB,WAAW6X,aAE5C,iBAAoB,EACpB,MAAa,QACb,OAAa,SAAUjZ,GACtB,IAAI4B,EAAO3D,EAAEE,OAAOiD,UAAUpB,EAAKoB,WAClCE,EAAMM,EAAK2H,SAASvJ,EAAKoB,WAC1BQ,EAAKsX,MAAM5X,UASlBrD,EAAEE,OAAOY,QAAQygB,YAAc,SAAUjgB,EAASoF,GACjDtE,KAAKiF,KAAO,WACXX,EAAOW,KAAKjD,KAAKhC,MAEjB,IAA6BkM,EAAIqT,EAA7BC,EAAU,EAAGC,EAAM,KACvBzf,KAAK2E,QACH4C,GAAG,0CAA2C3J,EAAEoK,OAAM,WACrDhI,KAAK+F,mBAAmBnB,SAAS,wBAC/B5E,OACHuH,GAAG,qBAAsB,iBAAkB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GACxB,UAAnC6H,EAAEC,OAAOvG,QAAQwG,gBAGrBF,EAAES,iBACFuX,EAAUhY,EAAEkB,SAAW,IAAIR,KAAS,GACjCvI,GAAQ8f,KACVD,GAAY,IAAItX,KAAU,KAExBuX,GACFxV,aAAawV,GAEVzf,KAAKoN,WAAW5F,EAAEY,gBACrBpI,KAAK0f,iBAAiBlY,EAAEY,cAAeZ,EAAEmY,MAAOnY,EAAEoY,MAAOpY,MAExDxH,OACHuH,GAAG,eAAgB,iBAAkB3J,EAAEoK,OAAM,SAAUR,GACnDxH,KAAKI,MAAM+e,YAAY7C,WAAakD,IAAa,IAAItX,KAAUsX,EAAU,MAC3E5hB,EAAEmM,OAAO8V,QAAQC,OAElBN,EAAU,IACRxf,OACHuH,GAAG,oBAAqB,kBAAkB,SAAUC,GAC/CA,EAAEuY,eAAkBvY,EAAEuY,cAAcC,gBAAmBxY,EAAEuY,cAAcC,eAAe,KAG1F9T,EAAK1E,EAAEuY,cAAcC,eAAe,GAAGC,QACvCV,EAAK/X,EAAEuY,cAAcC,eAAe,GAAGE,QACvCT,EAAM7V,YAAW,WAChBhM,EAAE4J,EAAEY,eAAelD,QAAQ,eAAe,KACxC,SAEJqC,GAAG,2BAA2B,SAAUC,GACpCiY,GAAOjY,EAAEuY,eAAiBvY,EAAEuY,cAAcC,gBAAkBxY,EAAEuY,cAAcC,eAAe,KAAOtG,KAAKyG,IAAIjU,EAAK1E,EAAEuY,cAAcC,eAAe,GAAGC,SAAW,IAAMvG,KAAKyG,IAAIZ,EAAK/X,EAAEuY,cAAcC,eAAe,GAAGE,SAAW,KAChOjW,aAAawV,MAGflY,GAAG,0BAA0B,SAAUC,GACnCiY,GACFxV,aAAawV;;;;;;;;;;;;;;;;;;;;;;AAyBjB7hB,EAAEU,GAAUiJ,GAAG,6BAA8B3J,EAAEoK,OAAM,SAAUR,EAAG7H,GACjEK,KAAKI,MAAM+e,YAAY7C,SAAU,EACjC1e,EAAE+B,EAAKoB,WAAWmG,YAAY,oBAC5BlH,QAEJA,KAAKyG,SAAW,WACZzG,KAAKI,MAAM+e,YAAY7C,SACzB1e,EAAEmM,OAAO8V,QAAQC,OAElBxb,EAAOmC,SAASzE,KAAKhC,OAatBA,KAAK0f,iBAAmB,SAAUze,EAAK8N,EAAGqR,EAAG5Y,GAE5C,KADAvG,EAAMjB,KAAKkJ,SAASjI,KACTA,EAAIlB,KAAOnC,EAAEE,OAAOiB,KAAQ,OAAO,EAC9C,IAAI8L,EAAI7K,KAAK6E,SAASsa,YAErBxc,EADI3C,KAAKkJ,SAASjI,GAAK,GACjBuD,SAAS,kBACfqE,GAAI,EACJrJ,GAAI,GACFqL,EAAEuU,cAAgBrQ,IAAMlR,GAAauiB,IAAMviB,KAC7CgL,EAAIlG,EAAE0d,SACNtR,EAAIlG,EAAEqN,KACNkK,EAAIvX,EAAEsN,IAAMnW,KAAKI,MAAMhB,KAAK0G,WAE1B9F,KAAK6E,SAASsa,YAAYlK,cAAgBjV,KAAKkV,YAAYjU,IAC7DjB,KAAKuI,cAActH,EAAKuG,GAGzBhI,EAAIqL,EAAEwU,MACHzhB,EAAE8N,WAAWlM,KACfA,EAAIA,EAAEwC,KAAKhC,KAAMiB,EAAKrD,EAAEoK,OAAM,SAAUxI,GACvCQ,KAAKsgB,kBAAkBrf,EAAK8N,EAAGqR,EAAG5gB,KAChCQ,QAEDpC,EAAE0E,cAAc9C,IAClBQ,KAAKsgB,kBAAkBrf,EAAK8N,EAAGqR,EAAG5gB,IAcpCQ,KAAKsgB,kBAAoB,SAAUrf,EAAK8N,EAAGqR,EAAG5gB,GAC7C,IACCmD,EADO3C,KAAKkJ,SAASjI,GAAK,GACpBuD,SAAS,kBAChB5G,EAAEU,GAAU+b,IAAI,6BAA8Bzc,EAAEoK,OAAM,SAAUR,EAAG7H,GAClE,IAAI4gB,EAAM,6BAA+BvgB,KAAKwa,YAAc,eAC5D5c,EAAE+B,EAAKgF,SAASC,SAAS2b,GACzB5d,EAAEiC,SAAS,oBACT5E,OACHA,KAAKI,MAAM+e,YAAY7C,SAAU,EACjC1e,EAAEmM,OAAO8V,QAAQW,KAAK7d,EAAG,CAAE,EAAMoM,EAAG,EAAMqR,GAAK5gB,GAU/CQ,KAAKkF,QAAQ,mBAAoB,CAAE,KAASjE,EAAK,EAAM8N,EAAG,EAAMqR,MAKjE,SAAUxiB,GACV,IAAI6iB,GAAgB,EACnBC,EAAiB,CAChB/b,SAAW,EACX5D,WAAY,EACZ4f,WAAa,EACbC,WAAa,EACbvB,MAAS,GACTzZ,KAAQ,GACRib,YAAa,GAGfjjB,EAAEmM,OAAO8V,QAAU,CAClBhb,SAAW,CACVic,kBAAoB,EACpBtgB,OAAW,GAEZugB,SAAW,SAAUC,GACpBpjB,EAAEU,GAAUiN,eAAe,WAAayV,EAAa,UAAW,CAC/D,UAAcN,EAAe3f,UAC7B,QAAY2f,EAAe/b,QAC3B,SAAa,CACZ,EAAM+b,EAAeC,WACrB,EAAMD,EAAeE,eAIxBK,SAAW,SAAUzhB,GAEpB,UADAA,EAAIkhB,EAAerB,MAAM7f,KACXA,EAAE0hB,aAActjB,EAAE8N,WAAWlM,EAAE0hB,YAAe1hB,EAAE0hB,UAAU,CAAE,KAAS1hB,EAAG,UAAckhB,EAAe3f,UAAW,QAAY2f,EAAe/b,aAAgBnF,EAAE2hB,SAAS3hB,EAAE2hB,OAAOnf,KAAK,KAAM,CACrM,KAAUxC,EACV,UAAckhB,EAAe3f,UAC7B,QAAY2f,EAAe/b,QAC3B,SAAa,CACZ,EAAM+b,EAAeC,WACrB,EAAMD,EAAeE,eAI1BQ,OAAS,SAAUvY,EAAGuF,GACrB,IAAIvF,EAAK,OAAO,EACZuF,IACHsS,EAAe9a,KAAQ,GACvB8a,EAAerB,MAAQ,IAExB,IAEClgB,EAFGkiB,EAAM,GACTC,GAAM,EA4CP,OAzCGlT,IAAeiT,GAAO,QACzBzjB,EAAE2B,KAAKsJ,GAAG,SAAUrJ,EAAGmX,GACtB,IAAIA,EAAO,OAAO,EAClB+J,EAAerB,MAAM9S,KAAKoK,IACtB2K,GAAO3K,EAAI4K,mBACdF,GAAO,qDAA6DzjB,EAAEmM,OAAO8V,QAAQhb,SAASrE,MAAQ,GAAK,4BAApG,oBAER8gB,GAAM,EACND,GAAO,eAAoB1K,EAAI6K,QAAU,MAAyB,IAAlB7K,EAAIuK,WAAuBtjB,EAAE8N,WAAWiL,EAAIuK,YAAcvK,EAAIuK,UAAU,CAAE,KAASvK,EAAK,UAAc+J,EAAe3f,UAAW,QAAY2f,EAAe/b,UAAc,gCAAkC,IAAM,MAAMgS,EAAI8K,SAAS,mBAAmB9K,EAAI8K,SAAS,KAAK,IAAI,IAC7TJ,GAAO,qBAA0BX,EAAerB,MAAMje,OAAS,GAAK,MAAQuV,EAAI+K,MAAQ,UAAY/K,EAAI+K,MAAQ,IAAM,IAAM,IACzH9jB,EAAEmM,OAAO8V,QAAQhb,SAASrE,QAC5B6gB,GAAO,MACJ1K,EAAI7F,QACwB,IAA3B6F,EAAI7F,KAAKlS,QAAQ,OAA0C,IAA3B+X,EAAI7F,KAAKlS,QAAQ,KAAeyiB,GAAO,4BAA8B1K,EAAI7F,KAAO,gCAC5GuQ,GAAO,WAAa1K,EAAI7F,KAAO,MAEvCuQ,GAAO,2DAERA,IAAQzjB,EAAE8N,WAAWiL,EAAIgL,OAAShL,EAAIgL,MAAM,CAAE,KAASniB,EAAG,UAAckhB,EAAe3f,UAAW,QAAY2f,EAAe/b,UAAagS,EAAIgL,QAAUhL,EAAI8K,SAAS,yEAAyE9K,EAAI8K,SAAS,MAAO9K,EAAIiL,gBAAkB,IAAK,UAAU,IAAhS,OACJjL,EAAIkL,UACN1iB,EAAMvB,EAAEmM,OAAO8V,QAAQuB,OAAOzK,EAAIkL,SAAS,MACjCR,GAAOliB,GAElBkiB,GAAO,QACJ1K,EAAImL,kBACNT,GAAO,qDAA6DzjB,EAAEmM,OAAO8V,QAAQhb,SAASrE,MAAQ,GAAK,4BAApG,mBACP8gB,GAAM,MAGRD,EAAOA,EAAIxiB,QAAQ,kDAAkD,IAClEuP,IAAeiT,GAAO,SAUrBjT,IAAesS,EAAe9a,KAAOyb,EAAKzjB,EAAEmM,OAAO8V,QAAQkB,SAAS,UACjEM,EAAIjgB,OAAS,IAAKigB,GAE1BU,cAAgB,SAAUlZ,GAEzB,IADAA,EAAIjL,EAAEiL,IACAzH,QAAWyH,EAAErE,SAAS,MAAMpD,OAAlC,CACA,IAAIoG,EAAIqB,EAAErE,SAAS,MAClBwd,EAAKnZ,EAAEwX,SAASnK,KAChBnH,EAAIiT,EAAKnZ,EAAEoZ,aACX7B,EAAIvX,EAAEwX,SAASlK,IACfjG,EAAI1I,EAAE2R,QACN+I,EAAI1a,EAAE2a,SACNC,EAAKxkB,EAAEW,QAAQ4a,QAAUvb,EAAEW,QAAQkV,aACnC4O,EAAKzkB,EAAEW,QAAQ4jB,SAAWvkB,EAAEW,QAAQiV,YAElCiN,EACF5X,EAAEkG,GAAKmB,EAAI,GAAKrH,EAAEoZ,cAAgB,EAAI,WAAa,eAAe,uBAGlEpZ,EAAEkG,EAAImB,EAAIkS,GAAOJ,EAAKI,EAAKrT,EAAI,WAAa,eAAe,wBAEzDqR,EAAI8B,EAAI,GAAKG,GACf7a,EAAExC,IAAI,SAAS,QAIZ6D,EAAEjG,SAAS,wBACVof,EAAK9R,GACR1I,EAAExC,IAAI,eAAgBgd,EAAK9R,GAGxBkS,EAAKrT,EAAImB,GACZ1I,EAAExC,IAAI,cAAeod,EAAKrT,EAAImB,GAIhC1I,EAAEgZ,SAEHA,KAAO,SAAUzf,EAAWuhB,EAAU3iB,GACrC,IAAIkJ,EAAGrB,EAAGuH,EAAGqR,EAAGlQ,EAAGgS,EAAGE,EAAIC,EAI1B,OAHG3B,EAAe/b,SAAW+b,EAAe/b,QAAQvD,QACnDsf,EAAe/b,QAAQwU,MAAM,KAFO,GAKpC,KAAOmJ,IAAavhB,EACnB,OAAO,EACR,MAAQuhB,KAAcvhB,EACrB2f,EAAe3f,UAAYA,EAC3B2f,EAAeC,WAAa2B,EAASvT,EACrC2R,EAAeE,WAAa0B,EAASlC,EACrC,MACD,KAAOkC,KAAcvhB,EACpB2f,EAAe3f,UAAYA,EAC3B8H,EAAI9H,EAAUsf,SACdK,EAAeC,WAAa9X,EAAEqN,KAAOnV,EAAUkF,cAC/Cya,EAAeE,WAAa/X,EAAEsN,IAC9B,MACD,MAAQmM,IAAavhB,EACpB2f,EAAeC,WAAa2B,EAASvT,EACrC2R,EAAeE,WAAa0B,EAASlC,EAGlCrf,IAAcpB,GAAQ/B,EAAEmD,GAAWpB,KAAK,wBAC5CA,EAAO/B,EAAEmD,GAAWpB,KAAK,uBAEvB/B,EAAEmM,OAAO8V,QAAQuB,OAAOzhB,IAC1B+gB,EAAe/b,QAAQiB,KAAK8a,EAAe9a,MAEzC8a,EAAerB,MAAMje,SACvBsf,EAAe/b,QAAQyU,SAAS,QAChC5R,EAAIkZ,EAAe/b,QACnBoK,EAAI2R,EAAeC,WACnBP,EAAIM,EAAeE,WACnB1Q,EAAI1I,EAAE2R,QACN+I,EAAI1a,EAAE2a,SACNC,EAAKxkB,EAAEW,QAAQ4a,QAAUvb,EAAEW,QAAQkV,aACnC4O,EAAKzkB,EAAEW,QAAQ4jB,SAAWvkB,EAAEW,QAAQiV,YACjCiN,IACF1R,GAAMvH,EAAEya,aAAerkB,EAAEmD,GAAWkhB,cAC7BrkB,EAAEW,QAAQkV,aAAe,KAC/B1E,EAAInR,EAAEW,QAAQkV,aAAe,IAG5B1E,EAAImB,EAAI,GAAKkS,IACfrT,EAAIqT,GAAMlS,EAAI,KAEZkQ,EAAI8B,EAAI,GAAKG,IACfjC,EAAIiC,GAAMH,EAAI,KAGfxB,EAAe/b,QACbK,IAAI,CAAE,KAAS+J,EAAG,IAAQqR,IAC1BI,OACApb,KAAK,KAAKY,QAAQsC,QAAQhE,SAASM,SAAS,wBAC9C8b,EAAeG,YAAa,EAU5BjjB,EAAEmM,OAAO8V,QAAQkB,SAAS,UAG5BjB,KAAO,WACHY,EAAeG,aACjBH,EAAe/b,QAAQmb,OAAO1a,KAAK,MAAM0a,OAAOtV,MAAMpF,KAAK,UAAUqU,OAAOjP,MAAM+X,SAClF7B,EAAeG,YAAa,EAU5BjjB,EAAEmM,OAAO8V,QAAQkB,SAAS,WAI7BnjB,GAAE,WACD6iB,EAA+C,QAA/B7iB,EAAE,QAAQoH,IAAI,aAC9B,IAAIwd,GAAK,EAET9B,EAAe/b,QAAU/G,EAAE,oCAC3B8iB,EAAe/b,QACb4C,GAAG,aAAc,MAAM,SAAUC,GACjCA,EAAE6R,2BAECzb,EAAE6kB,SAASziB,KAAMwH,EAAEkb,iBAMnBF,GAAMvY,aAAauY,GACtB9B,EAAe/b,QAAQS,KAAK,yBAAyB8B,YAAY,wBAAwBsD,MAEzF5M,EAAEoC,MACA2iB,WAAWvd,KAAK,MAAM0a,OAAOtV,MAAMA,MACnCqC,aAAa,kBAAmB,MAAMvH,UAAUV,SAAS,wBAC3DhH,EAAEmM,OAAO8V,QAAQkC,cAAc/hB,UAG/BuH,GAAG,aAAc,MAAM,SAAUC,GAC9B5J,EAAE6kB,SAASziB,KAAMwH,EAAEkb,gBACtB9kB,EAAEoC,MAAMoF,KAAK,yBAAyBE,UAAU4B,YAAY,2BAE5DK,GAAG,cAAc,SAAUC,GAC3B5J,EAAEoC,MAAMoF,KAAK,yBAAyB8B,YAAY,wBAC/CtJ,EAAEmM,OAAO8V,QAAQhb,SAASic,oBAC5B0B,EAAK5Y,YAEI,WAAchM,EAAEmM,OAAO8V,QAAQC,SAC7BliB,EAAEmM,OAAO8V,QAAQhb,SAASic,uBAGtCvZ,GAAG,QAAS,KAAK,SAAUC,GAC3BA,EAAES,iBAGErK,EAAEoC,MAAMyZ,OAAOnV,SAAS1B,SAAS,6BAAiF,IAAnDhF,EAAEmM,OAAO8V,QAAQoB,SAASrjB,EAAEoC,MAAM3B,KAAK,SACzGT,EAAEmM,OAAO8V,QAAQC,UAGlBvY,GAAG,UAAW,KAAK,SAAUC,GAC5B,IAAIqB,EAAI,KACR,OAAOrB,EAAEgB,OACR,KAAK,GACL,KAAK,GACJhB,EAAEsB,KAAO,QACTtB,EAAES,iBACFrK,EAAE4J,EAAEY,eAAelD,QAAQsC,GAC3B,MACD,KAAK,GACDkZ,EAAeG,aACjBH,EAAe/b,QAAQS,KAAK,yBAAyBqE,OAAOnI,QAAQ,MAAM0E,QAAQZ,KAAK,MAAM0a,OAAO1a,KAAK,yBAAyB8B,YAAY,wBAAwBsD,MAAMA,MAAMhG,SAAS,KAAK8D,QAChMd,EAAE6R,2BACF7R,EAAES,kBAEH,MACD,KAAK,GACDyY,EAAeG,cACjBhY,EAAI6X,EAAe/b,QAAQS,KAAK,cAAcE,UAAUmE,OAAOjF,SAAS,yBAAyB0C,YAAY,wBAAwB0b,QAAQ,qCAAqC5c,SAC5K5E,SAAUyH,EAAI6X,EAAe/b,QAAQS,KAAK,cAAcE,UAAUmE,OAAOjF,SAAS,qCAAqCiF,QAC7HZ,EAAEjE,SAAS,wBAAwBJ,SAAS,KAAK8D,QACjDd,EAAE6R,2BACF7R,EAAES,kBAEH,MACD,KAAK,GACDyY,EAAeG,aACjBH,EAAe/b,QAAQS,KAAK,yBAAyBqE,OAAOjF,SAAS,MAAMgc,OAAOhc,SAAS,qCAAqC0C,YAAY,wBAAwBlB,QAAQpB,SAAS,wBAAwBJ,SAAS,KAAK8D,QAC3Nd,EAAE6R,2BACF7R,EAAES,kBAEH,MACD,KAAK,GACDyY,EAAeG,cACjBhY,EAAI6X,EAAe/b,QAAQS,KAAK,cAAcE,UAAUmE,OAAOjF,SAAS,yBAAyB0C,YAAY,wBAAwB4F,QAAQ,qCAAqC9G,SAC5K5E,SAAUyH,EAAI6X,EAAe/b,QAAQS,KAAK,cAAcE,UAAUmE,OAAOjF,SAAS,qCAAqCwB,SAC7H6C,EAAEjE,SAAS,wBAAwBJ,SAAS,KAAK8D,QACjDd,EAAE6R,2BACF7R,EAAES,kBAEH,MACD,KAAK,GACJrK,EAAEmM,OAAO8V,QAAQC,OACjBtY,EAAES,qBAOLV,GAAG,WAAW,SAAUC,GACxBA,EAAES,iBACF,IAAItF,EAAI+d,EAAe/b,QAAQS,KAAK,gCAAkCoC,EAAEgB,OAAOlE,SAC5E3B,EAAE2B,SAAS2G,IAAI,6BACjBtI,EAAEkgB,WAILjlB,EAAEU,GACAiJ,GAAG,2BAA2B,SAAUC,GACrCkZ,EAAeG,YAAcH,EAAe/b,QAAQ,KAAO6C,EAAEC,SAAY7J,EAAE6kB,SAAS/B,EAAe/b,QAAQ,GAAI6C,EAAEC,SACnH7J,EAAEmM,OAAO8V,QAAQC,UAGlBvY,GAAG,8BAA8B,SAAUC,EAAG7H,GAC9C+gB,EAAe/b,QAAQS,KAAK,cAAcZ,SAAS,KAAKI,SAAS,yBAC9D6b,GACFC,EAAe/b,QAAQC,SAAS,sBAAsBI,IAAI,YAAa,OAGxE0b,EAAe/b,QAAQS,KAAK,MAAM0a,OAAOtV,YAxU7C,CA2UE5M,GAeFA,EAAEE,OAAOW,SAASqkB,IAAM,CAMvBpK,MAAO,EAMPqK,aAAe,IAMfC,cAAe,EAMfC,sBAAuB,EAMvBC,aAAc,EAMdC,WAAa,EAMbC,gBAAiB,EAMjBC,OAAQ,EAMRC,mBAAoB,EAMpBC,mBAAoB,EAOpBC,WAAW,GAIZ5lB,EAAEE,OAAOY,QAAQokB,IAAM,SAAU5jB,EAASoF,GACzCtE,KAAKJ,KAAO,SAAUX,EAAIC,GACzBoF,EAAO1E,KAAKoC,KAAKhC,KAAMf,EAAIC,GAC3Bc,KAAK6E,SAASie,IAAIU,UAAYxjB,KAAK6E,SAASie,IAAIU,WAAc,cAAellB,EAASuI,cAAc,SAErG7G,KAAKiF,KAAO,WACXX,EAAOW,KAAKjD,KAAKhC,MAEjBA,KAAK2E,QACH4C,GAAGvH,KAAK6E,SAASie,IAAIU,UAAY,mBAAqB,qCAAsCxjB,KAAK6E,SAASie,IAAIS,kBAAoB,eAAiB,iBAAkB3lB,EAAEoK,OAAM,SAAUR,GACtL,GAAGxH,KAAK6E,SAASie,IAAIS,mBAAqB3lB,EAAE4J,EAAEC,QAAQnG,QAAQ,gBAAgB,KAAOkG,EAAEY,cACtF,OAAO,EAER,GAAc,eAAXZ,EAAEsB,QAA2B9I,KAAK6E,SAASie,IAAIO,OAAsC,aAA5BrjB,KAAK6E,SAASie,IAAIO,QAAyBzlB,EAAE4J,EAAEY,eAAe9G,QAAQ,gBAAgBkD,SAAS,kBAAkB5B,SAAS,mBACrL,OAAO,EAER,IAAI3B,EAAMjB,KAAKkJ,SAAS1B,EAAEC,QACzBgc,EAAMzjB,KAAKkV,YAAYjU,IAAQjB,KAAK6E,SAASie,IAAIM,eAAiBpjB,KAAK0V,mBAAmBtU,OAAS,EACnGsiB,EAAOD,EAAM,EAAIA,EAAM,IAAMzjB,KAAK6F,WAAW,SAAW7F,KAAKwM,SAAShF,EAAEY,eAIzE,GAHGpI,KAAK6E,SAASzF,KAAKsE,aACrBggB,EAAM9lB,EAAEmM,OAAOnE,KAAK+d,OAAOD,IAEzBziB,GAAOA,EAAIlB,IAAMkB,EAAIlB,KAAOnC,EAAEE,OAAOiB,OAAqB,IAAZyI,EAAEgB,OAA0B,eAAXhB,EAAEsB,MAAoC,cAAXtB,EAAEsB,SAC1D,IAAnC9I,KAAK6E,SAASie,IAAIE,cAA0BplB,EAAE8N,WAAW1L,KAAK6E,SAASie,IAAIE,eAAiBhjB,KAAK6E,SAASie,IAAIE,aAAahhB,KAAKhC,KAAOyjB,EAAM,EAAIzjB,KAAK0V,kBAAiB,GAAQ,CAACzU,GAAOuG,IACvL,CAGD,GAFA0U,EAAM,CAAE,QAAW,EAAM,OAAWlc,KAAM,IAAQA,KAAKkJ,SAASjI,GAAI,GAAO,MAAUwiB,EAAM,EAAIzjB,KAAK0V,mBAAqB,CAACzU,EAAIlB,KAC9Hoc,EAAM3U,EAAEY,eACJpI,KAAK6E,SAASie,IAAIU,UAIrB,OADAxjB,KAAK2E,QAAQO,QAAQ,oBACdtH,EAAEmM,OAAO+Y,IAAIc,MAAMpc,EAAG0U,EAAK,sCAAwClc,KAAKwa,YAAc,WAAaxa,KAAKwa,YAAc,IAAMxa,KAAK0a,oBAAsB,KAAQ1a,KAAK6E,SAASzF,KAAKiB,OAAOkD,WAAa,yBAA2B,IAAO,0CAA4CmgB,EAAM,gEAHjS9lB,EAAEmM,OAAO+Y,IAAI/B,SAAS,QAASvZ,EAAG,CAAE,OAAU5J,IAAK,QAAWue,EAAK,KAAQD,OAM3Elc,OACDA,KAAK6E,SAASie,IAAIU,WACrBxjB,KAAK2E,QACH4C,GAAG,mBAAmB,SAAUC,GAG/B,OAFAA,EAAES,iBACFrK,EAAEmM,OAAO+Y,IAAI/B,SAAS,OAAQvZ,EAAG,CAAE,OAAU5J,IAAK,QAAWue,EAAK,KAAQD,KACnE,KAOR3U,GAAG,cAAe3J,EAAEoK,OAAM,SAAUR,GAGnC,OAFAA,EAAES,iBACFrK,EAAEmM,OAAO+Y,IAAI/B,SAAS,OAAQvZ,EAAG,CAAE,OAAU5J,IAAK,QAAWue,EAAK,KAAQD,KACnE,IACLlc,QAGPA,KAAKoS,YAAc,SAASnR,EAAKuR,EAAMjF,EAAUkF,GAEhD,IADAxR,EAAMqD,EAAO8N,YAAY/P,MAAMrC,KAAMiC,aAC1BjC,KAAK6E,SAASie,IAAIU,UAC5B,GAAIxjB,KAAK6E,SAASie,IAAIS,kBACrBtiB,EAAI6F,aAAa,aAAa,OACxB,CACN,IAAItH,EAAGqK,EAAG1K,EAAM,KAChB,IAAIK,EAAI,EAAGqK,EAAI5I,EAAI+R,WAAW5R,OAAQ5B,EAAIqK,EAAGrK,IAC5C,GAAGyB,EAAI+R,WAAWxT,IAAMyB,EAAI+R,WAAWxT,GAAGuH,YAAuE,IAA1D9F,EAAI+R,WAAWxT,GAAGuH,UAAUnI,QAAQ,iBAAyB,CACnHO,EAAM8B,EAAI+R,WAAWxT,GACrB,MAGCL,GACFA,EAAI2H,aAAa,aAAa,GAIjC,OAAO7F,IAITrD,GAAE,WAED,IAAIimB,GAAS,EACZC,GAAS,EACTC,GAAS,EACTC,GAAS,EACTC,EAASrmB,EAAE,wCAAwCkiB,OAEpDliB,EAAEU,GACAiJ,GAAG,2BAA2B,SAAUC,EAAG7H,GAC3CkkB,GAAS,EACTE,GAAS,EACLpkB,GAASA,EAAKA,MAASA,EAAKA,KAAK7B,QACrCmmB,EAAO7K,SAAS,WAEhB7R,GAAG,0BAA0B,SAAUC,EAAG7H,GAC1C,IAAIukB,EAAkBvkB,EAAKwkB,MAAM1c,SAAWsc,EAAOtc,OAMnD,GALGuc,IACGrkB,EAAKwkB,OAA6B,aAApBxkB,EAAKwkB,MAAMrb,OAAuBob,GACpDja,aAAa+Z,IAGXrkB,GAASA,EAAKA,MAASA,EAAKA,KAAK7B,UAGlC6B,EAAKwkB,MAAM1c,OAAO1H,IAA+B,kBAAzBJ,EAAKwkB,MAAM1c,OAAO1H,IAA7C,CAGAgkB,EAASpkB,EAAKwkB,MAEd,IAIM3W,EAAGkB,EAAGwT,EAAG5V,EAAG9M,EAAGqJ,EAAGkL,EAAIL,EAAIC,EAAIyQ,EAAI1T,EAAI2T,EAAIC,EAAIC,EAAIC,EAASC,EAJ7DC,EAAM9mB,EAAEE,OAAOiD,UAAUpB,EAAKwkB,MAAM1c,QACvCkd,GAAM,EACN7kB,GAAM,EACN8kB,GAAM,EAGP,GAAGF,GAAOA,EAAItkB,OAASskB,EAAItkB,MAAM0iB,IAShC,GARAmB,EAAO5lB,KAAK,QAAS,UAAYqmB,EAAIlK,aAAgBkK,EAAI7f,SAASzF,KAAKiB,OAAOkD,WAAa,yBAA2B,KACtHihB,EAAU7kB,EAAKA,KAAKwY,SAAWxY,EAAKA,KAAKwY,OAAOtT,SAASie,IAAII,aAAgBvjB,EAAKA,KAAKwY,OAAOtT,SAASie,IAAIpK,OAAS/Y,EAAKwkB,MAAMvb,SAAWjJ,EAAKwkB,MAAMzb,UACrJ/I,EAAKklB,OACHrgB,WAAWnG,KAAK,QAAS,UAAYqmB,EAAIlK,YAAc,WAAakK,EAAIlK,YAAc,IAAMkK,EAAIhK,oBAAsB,KAAQgK,EAAI7f,SAASzF,KAAKiB,OAAOkD,WAAa,yBAA2B,KAC/L6B,KAAK,gBAAgBY,QAASwe,EAAU,OAAS,UAI9C7kB,EAAKwkB,MAAM1c,SAAWid,EAAI/f,QAAQ,IAAMhF,EAAKwkB,MAAM1c,SAAWid,EAAI3e,mBAAmB,IAAoD,IAA7C2e,EAAI3e,mBAAmBvB,WAAWpD,QAmBlI,IADAujB,EAAMD,EAAI7f,SAASie,IAAIQ,kBAAoB1lB,EAAE+B,EAAKwkB,MAAM1c,QAAQnG,QAAQ,gBAAgBkD,SAAS,kBAAoB5G,EAAE+B,EAAKwkB,MAAM1c,QAAQnG,QAAQ,oBACxIqjB,EAAIvjB,QAAUujB,EAAIrgB,SAASoL,GAAG,gDACvC5P,EAAM6kB,EAAItE,SACVuE,GAAOjlB,EAAKwkB,MAAMvE,QAAU/hB,EAAY8B,EAAKwkB,MAAMvE,MAAQjgB,EAAKwkB,MAAMpE,cAAcH,OAAS9f,EAAIqW,IACjG+L,EAAIyC,EAAI1e,cAEP4C,EADE+b,EAAM1C,EAAI,EACR,CAAC,IAAK,IAAK,KAER0C,EAAM1C,EAAIA,EAAI,EACjB,CAAC,IAAK,IAAK,KAGX0C,EAAM1C,EAAI,EAAI,CAAC,IAAK,IAAK,KAAO,CAAC,IAAK,IAAK,KAEhDtkB,EAAE2B,KAAKsJ,GAAG,SAAUgB,EAAGY,GACtB,OAAOA,GACN,IAAK,IACJ+C,EAAI1N,EAAIoW,KAAO,EACfxH,EAAI5O,EAAIqW,IACR7J,EAAIoY,EAAIzb,WAAW0b,GACnBnlB,EAAImlB,EAAIrgB,SAASiG,QACjB,MACD,IAAK,IACJ+Z,EAAKI,EAAI7f,SAASie,IAAIK,WACtBoB,EAAKG,EAAIxb,SAASyb,EAAIrgB,UACtBkJ,EAAI1N,EAAIoW,KAAO,EACfxH,EAAI5O,EAAIqW,IAAM+L,EAAI,EAAI,EACtB5V,EAAIiY,EAAGxkB,GACPP,EAAW,UAAP8kB,EAAiB,EAAY,SAAPA,EAAgBC,EAAG/f,SAASpD,OAASsY,KAAKC,IAAI2K,EAAIC,EAAG/f,SAASpD,QACxF,MACD,IAAK,IACJoM,EAAI1N,EAAIoW,KAAO,EACfxH,EAAI5O,EAAIqW,IAAM+L,EACd5V,EAAIoY,EAAIzb,WAAW0b,GACnBnlB,EAAImlB,EAAIrgB,SAASiG,QAAU,EAI7B,IADAwJ,GAAK,EACDL,EAAK,EAAGC,EAAKhU,EAAKA,KAAKwO,MAAM/M,OAAQsS,EAAKC,EAAID,IAUjD,GATA0Q,EAAKzkB,EAAKA,KAAKwY,SAAWxY,EAAKA,KAAKwY,OAAOtT,SAASie,IAAII,aAAgBvjB,EAAKA,KAAKwY,OAAOtT,SAASie,IAAIpK,OAAS/Y,EAAKwkB,MAAMvb,SAAWjJ,EAAKwkB,MAAMzb,UAAa,YAAc,YAC3KgI,EAAKlR,EACK,cAAP4kB,GAA4B,MAAN3Z,GAAc9K,EAAKA,KAAKwY,QAAUxY,EAAKA,KAAKwY,SAAWuM,GAAQpY,IAAMoY,EAAIzb,WAAWtJ,EAAKA,KAAKwO,MAAMuF,MAC5H2Q,EAAKK,EAAIxb,SAASoD,GACfoE,EAAK9S,EAAEiQ,QAAQlO,EAAKA,KAAKwO,MAAMuF,GAAK2Q,EAAG7f,YACzCkM,GAAM,MAGRqD,EAAKA,IAAS2Q,GAAOA,EAAI7f,UAAY6f,EAAI7f,SAASie,MAAiD,IAA1C4B,EAAI7f,SAASie,IAAIG,sBAAmCyB,EAAIlN,MAAM4M,EAAKzkB,EAAKA,KAAKwY,QAAUxY,EAAKA,KAAKwY,SAAWuM,EAAM/kB,EAAKA,KAAKwY,OAAOjP,SAASvJ,EAAKA,KAAKwO,MAAMuF,IAAO/T,EAAKA,KAAKwO,MAAMuF,GAAMpH,EAAGoE,EAAI,CAAE,KAAQ,EAAM,IAAQgU,EAAIxb,SAASyb,EAAIrgB,UAAW,IAAQmG,EAAG,OAAW9K,EAAKA,KAAKwY,OAAQ,SAAcxY,EAAKA,KAAKwY,QAAUxY,EAAKA,KAAKwY,SAAWuM,EAAM,YAAiB/kB,EAAKA,KAAKwY,WACra,CACJuM,GAAOA,EAAI/jB,aAAcmjB,EAASY,EAAI/jB,cACzC,MAMqB,IAAUoO,EAAG+V,EAGpC,GANS,MAANra,GAAaka,EAAIrgB,SAASoL,GAAG,mBAAqBgV,EAAI7f,SAASie,IAAIC,eAChEpjB,EAAKwkB,OAA6B,aAApBxkB,EAAKwkB,MAAMrb,OAAuBob,IAChDF,GAAU/Z,aAAa+Z,GAC3BA,EAASpa,YAAsBmF,EAAkD2V,EAA/CI,EAAoDH,EAAxC,WAAc5V,EAAE1F,UAAUyb,KAAqBJ,EAAI7f,SAASie,IAAIC,gBAG7GhP,EAcF,OAbA0Q,EAAKC,EAAIxb,SAASoD,GAAG,IACb1J,SAAS,wBAChBhF,EAAE,sBAAsBsJ,YAAY,qBACpCud,EAAG7f,SAAS,sBAEbif,EAAS,CAAE,IAAQa,EAAK,IAAQpY,EAAG,IAAc,MAAN7B,GAAoB,SAAP6Z,GAAuB,IAAN9kB,GAAYklB,EAAIvX,UAAUoX,GAAe/kB,EAAT,QACzGykB,EAAOjf,IAAI,CAAE,KAASwI,EAAI,KAAM,IAAQkB,EAAI,OAAQ8R,OACpD7gB,EAAKklB,OAAOzf,KAAK,gBAAgBY,QAAQkB,YAAY,aAAatC,SAAS,aACvEjF,EAAKwkB,MAAMpE,eAAiBpgB,EAAKwkB,MAAMpE,cAAcgF,eACxDplB,EAAKwkB,MAAMpE,cAAcgF,aAAaC,WAAaR,EAAU,OAAS,QAEvEV,EAAS,GACTjb,GAAI,GACG,MAGA,IAANA,GAAc,WA9F8H,CAEhJ,IADAkL,GAAK,EACDL,EAAK,EAAGC,EAAKhU,EAAKA,KAAKwO,MAAM/M,OAAQsS,EAAKC,IAC7CI,EAAKA,GAAM2Q,EAAIlN,MAAQ7X,EAAKA,KAAKwY,SAAWxY,EAAKA,KAAKwY,OAAOtT,SAASie,IAAII,aAAgBvjB,EAAKA,KAAKwY,OAAOtT,SAASie,IAAIpK,OAAS/Y,EAAKwkB,MAAMvb,SAAWjJ,EAAKwkB,MAAMzb,UAAc,YAAc,YAAe/I,EAAKA,KAAKwY,QAAUxY,EAAKA,KAAKwY,SAAWuM,EAAM/kB,EAAKA,KAAKwY,OAAOjP,SAASvJ,EAAKA,KAAKwO,MAAMuF,IAAO/T,EAAKA,KAAKwO,MAAMuF,GAAM9V,EAAEE,OAAOiB,KAAM,OAAQ,CAAE,KAAQ,EAAM,IAAQ2lB,EAAIxb,SAAStL,EAAEE,OAAOiB,MAAO,IAAQ,IAAK,OAAWY,EAAKA,KAAKwY,OAAQ,SAAcxY,EAAKA,KAAKwY,QAAUxY,EAAKA,KAAKwY,SAAWuM,EAAM,YAAiB/kB,EAAKA,KAAKwY,UADhezE,KAIlD,GAAGK,EAOF,OANA8P,EAAS,CAAE,IAAQa,EAAK,IAAQ9mB,EAAEE,OAAOiB,KAAM,IAAQ,QACvDklB,EAAOnE,OACPngB,EAAKklB,OAAOzf,KAAK,gBAAgBY,QAAQkB,YAAY,aAAatC,SAAS,kBACvEjF,EAAKwkB,MAAMpE,eAAiBpgB,EAAKwkB,MAAMpE,cAAcgF,eACxDplB,EAAKwkB,MAAMpE,cAAcgF,aAAaC,WAAaR,EAAU,OAAS,SAuF1E5mB,EAAE,sBAAsBsJ,YAAY,qBACpC2c,GAAS,EACTlkB,EAAKklB,OAAOzf,KAAK,gBAAgB8B,YAAY,aAAatC,SAAS,aAC/DjF,EAAKwkB,MAAMpE,eAAiBpgB,EAAKwkB,MAAMpE,cAAcgF,eACxDplB,EAAKwkB,MAAMpE,cAAcgF,aAAaC,WAAa,QAEpDf,EAAOnE,WAEPvY,GAAG,4BAA4B,SAAUC,EAAG7H,GACxCA,GAASA,EAAKA,MAASA,EAAKA,KAAK7B,SACrCmmB,EAAOnE,OACP+D,GAAS,EACTE,GAAS,EACTpkB,EAAKklB,OAAOzf,KAAK,gBAAgBY,QAAQkB,YAAY,aAAatC,SAAS,iBAE3E2C,GAAG,0BAA0B,SAAUC,EAAG7H,GAG1C,GAFA/B,EAAE,sBAAsBsJ,YAAY,qBACjC8c,GAAU/Z,aAAa+Z,GACtBrkB,GAASA,EAAKA,MAASA,EAAKA,KAAK7B,OAArC,CACAmmB,EAAOnE,OAAOyC,SACd,IAAI/iB,EAAGqK,EAAGsE,EAAQ,GAClB,GAAG0V,EAAQ,CACV,IAAIrkB,EAAI,EAAGqK,EAAIlK,EAAKA,KAAKwO,MAAM/M,OAAQ5B,EAAIqK,EAAGrK,IAC7C2O,EAAM3O,GAAKG,EAAKA,KAAKwY,OAASxY,EAAKA,KAAKwY,OAAOjP,SAASvJ,EAAKA,KAAKwO,MAAM3O,IAAMG,EAAKA,KAAKwO,MAAM3O,GAE/FqkB,EAAOa,IAAK/kB,EAAKA,KAAKwY,SAAWxY,EAAKA,KAAKwY,OAAOtT,SAASie,IAAII,aAAgBvjB,EAAKA,KAAKwY,OAAOtT,SAASie,IAAIpK,OAAS/Y,EAAKwkB,MAAMvb,SAAWjJ,EAAKwkB,MAAMzb,UAAa,YAAc,aAAcyF,EAAO0V,EAAOlU,IAAKkU,EAAOvM,KAAK,GAAO,GAAO,EAAO3X,EAAKA,KAAKwY,aAG9P3Y,EAAI5B,EAAE+B,EAAKwkB,MAAM1c,QAAQnG,QAAQ,YAC5BF,QAAU0iB,GAAUA,EAAO/gB,OAA0B,UAAjB+gB,EAAO/gB,QAC/CvD,EAAIA,EAAE1B,QAAO,KAEZ0B,EAAEqF,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAM8jB,GAIpCC,GAAS,EACTF,GAAS,MAETtc,GAAG,+BAA+B,SAAUC,EAAG7H,IAC/CA,EAAO/B,EAAEmM,OAAO+Y,IAAImC,SACTtlB,EAAKA,MAAQA,EAAKA,KAAK7B,SAClB,UAAX0J,EAAEsB,MAAgC,KAAZtB,EAAEgB,OACvBwb,GAAU/Z,aAAa+Z,GAC3BH,GAAS,EACTC,GAAS,EACTC,GAAS,EACTC,GAAS,EACTC,EAAOnE,OAAOyC,SACd3kB,EAAEmM,OAAO+Y,IAAIoC,WAEbvlB,EAAKklB,OAAOzf,KAAK,gBAAgBY,QAASrG,EAAKA,KAAKwY,SAAWxY,EAAKA,KAAKwY,OAAOtT,SAASie,IAAII,aAAgBvjB,EAAKA,KAAKwY,OAAOtT,SAASie,IAAIpK,OAASlR,EAAEoB,SAAWpB,EAAEkB,UAAa,OAAS,UACtLqb,IACFA,EAAOnb,QAAUpB,EAAEoB,QACnBmb,EAAOrb,QAAUlB,EAAEkB,QACnB9K,EAAEmM,OAAO+Y,IAAI/B,SAAS,OAAQgD,YAQnC,SAAUnmB,GACVA,EAAEmM,OAAOnE,KAAO,CACfuf,IAAMvnB,EAAE,WACR+lB,OAAS,SAAUtC,GAClB,OAAOzjB,EAAEmM,OAAOnE,KAAKuf,IAAIza,KAAK2W,GAAKzb,QAEpCwf,MAAQ,SAAU/D,GACjB,OAAOzjB,EAAEmM,OAAOnE,KAAKuf,IAAI3e,QAAQ6L,OAAOzU,EAAEiR,UAAUwS,IAAM3W,SAI5D,IAAI2a,EAAa,CAChB1gB,SAAU,EACV8C,QAAS,EACT6d,SAAU,EACVC,SAAU,EACVV,QAAS,EACTW,SAAU,EACV7lB,MAAO,EACP8lB,OAAS,EACTC,OAAS,EACTC,SAAU,EACVC,SAAU,EACVC,UAAU,EACVC,UAAU,EACVC,UAAU,GAEXnoB,EAAEmM,OAAO+Y,IAAM,CACdje,SAAW,CACVmhB,aAAgB,GAChBC,iBAAmB,GACnBC,YAAgB,EAChBC,WAAe,GACfC,UAAc,EACdC,gBAAmB,IAEpBtF,SAAW,SAAUC,EAAYxZ,EAAG7H,GAC/BA,IAAS9B,IACZ8B,EAAO/B,EAAEmM,OAAO+Y,IAAImC,QAErBtlB,EAAKwkB,MAAQ3c,EACb5J,EAAEU,GAAUiN,eAAe,OAASyV,EAAa,UAAWrhB,IAE7DslB,KAAO,WACN,MAAO,CACN,KAAUI,EAAW1lB,KACrB,QAAY0lB,EAAW1gB,QACvB,OAAW0gB,EAAWR,SAGxBK,OAAS,WACLG,EAAWR,QAAUQ,EAAWR,OAAOlf,SACvC0f,EAAWS,WAAYQ,cAAcjB,EAAWS,UAAWT,EAAWS,UAAW,GACpFT,EAAa,CACZ1gB,SAAU,EACV8C,QAAS,EACT6d,SAAU,EACVC,SAAU,EACVV,QAAS,EACTW,SAAU,EACV7lB,MAAO,EACP8lB,OAAS,EACTC,OAAS,EACTC,SAAU,EACVC,SAAU,EACVC,UAAU,EACVC,UAAU,EACVC,UAAU,GAEXnoB,EAAEU,GAAUwB,IAAI,kDAAmDlC,EAAEmM,OAAO+Y,IAAIyD,MAChF3oB,EAAEU,GAAUwB,IAAI,+CAAgDlC,EAAEmM,OAAO+Y,IAAIlP,OAE9E4S,QAAU,SAAUC,GACnB,IAAIpB,EAAWQ,WAAcR,EAAWM,WAAaN,EAAWO,SAE/D,OADGP,EAAWS,WAAYQ,cAAcjB,EAAWS,UAAWT,EAAWS,UAAW,IAC7E,EAER,IAAIT,EAAWS,SAEd,OADAT,EAAWS,SAAWY,YAAY9oB,EAAEmM,OAAO+Y,IAAI0D,QAAS,MACjD,EAER,IAAiB,IAAdC,EAAsB,OAAO,EAEhC,IAAIjnB,EAAI6lB,EAAWQ,SAASrS,YAC3B3J,EAAIwb,EAAWQ,SAASpS,aACzB4R,EAAWQ,SAASrS,UAAUhU,EAAI6lB,EAAWO,SAAWhoB,EAAEmM,OAAO+Y,IAAIje,SAASmhB,cAC9EX,EAAWQ,SAASpS,WAAW5J,EAAIwb,EAAWM,SAAW/nB,EAAEmM,OAAO+Y,IAAIje,SAASmhB,cAC5ExmB,IAAM6lB,EAAWQ,SAASrS,aAAe3J,IAAMwb,EAAWQ,SAASpS,cAWrE7V,EAAEmM,OAAO+Y,IAAI/B,SAAS,SAAUsE,EAAWQ,WAG7CjC,MAAQ,SAAUpc,EAAG7H,EAAMiG,GACZ,eAAX4B,EAAEsB,MAAyBtB,EAAEuY,eAAiBvY,EAAEuY,cAAcC,gBAAkBxY,EAAEuY,cAAcC,eAAe,KACjHxY,EAAEmY,MAAQnY,EAAEuY,cAAcC,eAAe,GAAGL,MAC5CnY,EAAEoY,MAAQpY,EAAEuY,cAAcC,eAAe,GAAGJ,MAC5CpY,EAAEC,OAASnJ,EAASqoB,iBAAiBnf,EAAEuY,cAAcC,eAAe,GAAGL,MAAQphB,OAAOqoB,YAAapf,EAAEuY,cAAcC,eAAe,GAAGJ,MAAQrhB,OAAOsoB,cAElJxB,EAAWE,SAAW3nB,EAAEmM,OAAO+Y,IAAIlP,KAAK,IAC3C,IACCpM,EAAEY,cAAc0e,aAAe,KAC/Btf,EAAEY,cAAc2e,cAAgB,WAAa,OAAO,GACjDvf,EAAEY,cAAc6K,QAClBzL,EAAEY,cAAc6K,MAAM+T,YAAc,OACpCxf,EAAEY,cAAc6K,MAAMgU,cAAgB,OACtCzf,EAAEY,cAAc6K,MAAMiU,cAAgB,QAEtC,MAAM7lB,IAqBR,OApBAgkB,EAAWI,OAASje,EAAEmY,MACtB0F,EAAWK,OAASle,EAAEoY,MACtByF,EAAW1lB,KAAQA,EACnB0lB,EAAWC,SAAU,EACrBD,EAAW1gB,QAAU6C,EAAEY,cACvBid,EAAW5d,OAASD,EAAEC,OACtB4d,EAAWU,SAAsB,eAAXve,EAAEsB,MACZ,IAATlD,IACFyf,EAAWR,OAASjnB,EAAE,+BAA+BgI,KAAKA,GAAMZ,IAAI,CACnE,QAAa,QACb,OAAY,IACZ,QAAa,IACb,SAAc,WACd,IAAU,UACV,WAAe,OACf,OAAY,WAGdpH,EAAEU,GAAUiJ,GAAG,kDAAmD3J,EAAEmM,OAAO+Y,IAAIyD,MAC/E3oB,EAAEU,GAAUiJ,GAAG,+CAAgD3J,EAAEmM,OAAO+Y,IAAIlP,OACrE,GAER2S,KAAO,SAAU/e,GAMhB,GALc,cAAXA,EAAEsB,MAAwBtB,EAAEuY,eAAiBvY,EAAEuY,cAAcC,gBAAkBxY,EAAEuY,cAAcC,eAAe,KAChHxY,EAAEmY,MAAQnY,EAAEuY,cAAcC,eAAe,GAAGL,MAC5CnY,EAAEoY,MAAQpY,EAAEuY,cAAcC,eAAe,GAAGJ,MAC5CpY,EAAEC,OAASnJ,EAASqoB,iBAAiBnf,EAAEuY,cAAcC,eAAe,GAAGL,MAAQphB,OAAOqoB,YAAapf,EAAEuY,cAAcC,eAAe,GAAGJ,MAAQrhB,OAAOsoB,cAEjJxB,EAAWC,QAAf,CACA,IAAID,EAAWE,QAAS,CACvB,KACC7L,KAAKyG,IAAI3Y,EAAEmY,MAAQ0F,EAAWI,SAAWJ,EAAWU,SAAWnoB,EAAEmM,OAAO+Y,IAAIje,SAASwhB,gBAAkBzoB,EAAEmM,OAAO+Y,IAAIje,SAASuhB,YAC7H1M,KAAKyG,IAAI3Y,EAAEoY,MAAQyF,EAAWK,SAAWL,EAAWU,SAAWnoB,EAAEmM,OAAO+Y,IAAIje,SAASwhB,gBAAkBzoB,EAAEmM,OAAO+Y,IAAIje,SAASuhB,YAoBvH,OAlBHf,EAAWR,SACbQ,EAAWR,OAAOzL,SAAS,QAC3BiM,EAAWG,SAAWH,EAAWR,OAAO5C,cAEzCoD,EAAWE,SAAU,EACrB3nB,EAAEynB,EAAW5d,QAAQ4S,IAAI,gBAAgB,GAWzCzc,EAAEmM,OAAO+Y,IAAI/B,SAAS,QAASvZ,GAKjC,IAAIoH,GAAK,EAAOsB,GAAK,EACpBmS,GAAK,EAAO8E,GAAK,EACjB/E,GAAK,EAAOgF,GAAK,EACjBC,GAAK,EAAOC,GAAK,EACjBC,GAAK,EAAOC,GAAK,EA8DlB,OA5DAnC,EAAWO,SAAW,EACtBP,EAAWM,SAAW,EACtBN,EAAWQ,UAAW,EACtBjoB,EAAEA,EAAE4J,EAAEC,QAAQoF,aAAa,QAAQvH,UAAU+O,MAAM5H,WACjDjH,QAAO,WACP,MAAO,gBAAkBE,KAAK9H,EAAEoC,MAAMgF,IAAI,eACvChF,KAAKynB,aAAeznB,KAAK4M,cAAgB5M,KAAK0nB,YAAc1nB,KAAK2nB,gBAEpEpoB,MAAK,WACL,IAAImP,EAAI9Q,EAAEoC,MAAO6I,EAAI6F,EAAE2R,SASvB,GARGrgB,KAAKynB,aAAeznB,KAAK4M,eACxB/D,EAAEsN,IAAMzH,EAAEyT,SAAW3a,EAAEoY,MAAQhiB,EAAEmM,OAAO+Y,IAAIje,SAASohB,mBAAoBZ,EAAWO,SAAW,GAC/Fpe,EAAEoY,MAAQ/W,EAAEsN,IAAMvY,EAAEmM,OAAO+Y,IAAIje,SAASohB,mBAAuBZ,EAAWO,UAAY,IAEvF5lB,KAAK0nB,YAAc1nB,KAAK2nB,cACvB9e,EAAEqN,KAAOxH,EAAEyK,QAAU3R,EAAEmY,MAAQ/hB,EAAEmM,OAAO+Y,IAAIje,SAASohB,mBAAoBZ,EAAWM,SAAW,GAC/Fne,EAAEmY,MAAQ9W,EAAEqN,KAAOtY,EAAEmM,OAAO+Y,IAAIje,SAASohB,mBAAuBZ,EAAWM,UAAY,IAExFN,EAAWO,UAAYP,EAAWM,SAEpC,OADAN,EAAWQ,SAAWjoB,EAAEoC,OACjB,KAINqlB,EAAWQ,WACdjX,EAAKhR,EAAEU,GAAW4R,EAAItS,EAAEW,QACxB8jB,EAAKzT,EAAEuT,SAAUgF,EAAKjX,EAAEiS,SACxBC,EAAKxT,EAAEuK,QAASiO,EAAKlX,EAAEiJ,QACvBkO,EAAKzY,EAAE4E,YAAa8T,EAAK1Y,EAAE6E,aACxB4O,EAAK8E,GAAM3f,EAAEoY,MAAQyH,EAAKzpB,EAAEmM,OAAO+Y,IAAIje,SAASohB,mBAAqBZ,EAAWO,UAAY,GAC5FvD,EAAK8E,GAAMA,GAAM3f,EAAEoY,MAAQyH,GAAMzpB,EAAEmM,OAAO+Y,IAAIje,SAASohB,mBAAoBZ,EAAWO,SAAW,GACjGxD,EAAKgF,GAAM5f,EAAEmY,MAAQ2H,EAAK1pB,EAAEmM,OAAO+Y,IAAIje,SAASohB,mBAAqBZ,EAAWM,UAAY,GAC5FvD,EAAKgF,GAAMA,GAAM5f,EAAEmY,MAAQ2H,GAAM1pB,EAAEmM,OAAO+Y,IAAIje,SAASohB,mBAAoBZ,EAAWM,SAAW,IACjGN,EAAWO,UAAYP,EAAWM,YACpCN,EAAWQ,SAAWjX,IAGrByW,EAAWQ,UAAYjoB,EAAEmM,OAAO+Y,IAAI0D,SAAQ,GAE5CnB,EAAWR,SACb0C,EAAKK,SAASpgB,EAAEoY,MAAQhiB,EAAEmM,OAAO+Y,IAAIje,SAASshB,WAAY,IAC1DqB,EAAKI,SAASpgB,EAAEmY,MAAQ/hB,EAAEmM,OAAO+Y,IAAIje,SAASqhB,YAAa,IACxD7D,GAAMkF,EAAK,GAAKlF,IAAMkF,EAAKlF,EAAK,IAChCD,GAAMoF,EAAKnC,EAAWG,SAAWpD,IAAMoF,EAAKpF,GAAMiD,EAAWG,SAAW,IAC3EH,EAAWR,OAAO7f,IAAI,CACrBkR,KAAOsR,EAAK,KACZrR,IAAOoR,EAAK,QAad3pB,EAAEmM,OAAO+Y,IAAI/B,SAAS,OAAQvZ,IACvB,IAERoM,KAAO,SAAUpM,GAMhB,GALc,aAAXA,EAAEsB,MAAuBtB,EAAEuY,eAAiBvY,EAAEuY,cAAcC,gBAAkBxY,EAAEuY,cAAcC,eAAe,KAC/GxY,EAAEmY,MAAQnY,EAAEuY,cAAcC,eAAe,GAAGL,MAC5CnY,EAAEoY,MAAQpY,EAAEuY,cAAcC,eAAe,GAAGJ,MAC5CpY,EAAEC,OAASnJ,EAASqoB,iBAAiBnf,EAAEuY,cAAcC,eAAe,GAAGL,MAAQphB,OAAOqoB,YAAapf,EAAEuY,cAAcC,eAAe,GAAGJ,MAAQrhB,OAAOsoB,cAElJxB,EAAWE,QAWT/d,EAAEC,SAAW4d,EAAW5d,QAC3B7J,EAAEynB,EAAW5d,QAAQ3H,IAAI,gBAE1BlC,EAAEmM,OAAO+Y,IAAI/B,SAAS,OAAQvZ,QAG9B,GAAc,aAAXA,EAAEsB,MAAuBtB,EAAEC,SAAW4d,EAAW5d,OAAQ,CAC3D,IAAI+a,EAAK5Y,YAAW,WAAchM,EAAE4J,EAAEC,QAAQob,UAAY,KAC1DjlB,EAAE4J,EAAEC,QAAQ4S,IAAI,SAAS,WAAgBmI,GAAMvY,aAAauY,MAI9D,OADA5kB,EAAEmM,OAAO+Y,IAAIoC,UACN,IA7QV,CAgREtnB,GA8BFA,EAAEE,OAAOW,SAASopB,SAAW,KAC7BjqB,EAAEE,OAAOY,QAAQmpB,SAAW,SAAU3oB,EAASoF,GAC9CtE,KAAKJ,KAAO,SAAUX,EAAIC,GACzBc,KAAKI,MAAMynB,SAAW,GACtBvjB,EAAO1E,KAAKoC,KAAKhC,KAAMf,EAAIC,IAE5Bc,KAAK2N,YAAc,SAAUQ,EAAOZ,EAAUa,EAAaC,GAC1D,IAIC7O,EAAGqK,EAAG8B,EAJHd,EAAI7K,KAAK6E,SAASgjB,SAErBC,GADc3Y,KAAKC,UAAUjB,GACpB,IACTH,EAAIhO,KAAKwB,OAAO7B,KAEjB,IAAKyO,EAAa,CACjB,IAAI5O,EAAI,EAAGqK,EAAIsE,EAAM/M,OAAQ5B,EAAIqK,EAAGrK,IAC/BwO,EAAEG,EAAM3O,MAAWwO,EAAEG,EAAM3O,IAAIkF,MAAMP,QAAW6J,EAAEG,EAAM3O,IAAIkF,MAAMoJ,UAAWO,IAChFyZ,EAAOvb,KAAK4B,EAAM3O,KAClBmM,EAAM3L,KAAKkJ,SAASiF,EAAM3O,IAAI,KACnBmM,EAAIvK,QACduK,EAAI/G,SAAS,kBAAkBvG,KAAK,aAAY,IAKnD,GADA2B,KAAKI,MAAMynB,SAAW,GAClBC,EAAO1mB,OAAQ,CAClB,GAAGxD,EAAE8N,WAAWb,GACf,OAAOA,EAAE7I,KAAKhC,KAAM8nB,EAAQlqB,EAAEoK,OAAM,SAAUrI,GAC7C,IAAIH,EAAGqK,EACP,GAAGlK,EACF,IAAIH,KAAKG,EACLA,EAAKwR,eAAe3R,KACtBQ,KAAKI,MAAMynB,SAASroB,GAAKG,EAAKH,IAIjC,IAAIA,EAAI,EAAGqK,EAAIsE,EAAM/M,OAAQ5B,EAAIqK,EAAGrK,KACnCmM,EAAM3L,KAAKkJ,SAASiF,EAAM3O,IAAI,KACnBmM,EAAIvK,QACduK,EAAIzE,YAAY,kBAAkB7I,KAAK,aAAY,GAGrDiG,EAAOqJ,YAAY3L,KAAKhC,KAAMmO,EAAOZ,EAAUa,EAAaC,KAC1DrO,OAEJ,GAAgB,iBAAN6K,GAAkBA,GAAKA,EAAE1H,IAQlC,OAPA0H,EAAIjN,EAAE0B,QAAO,EAAM,GAAIuL,GACpBjN,EAAE8N,WAAWb,EAAE1H,OACjB0H,EAAE1H,IAAM0H,EAAE1H,IAAInB,KAAKhC,KAAM8nB,IAEvBlqB,EAAE8N,WAAWb,EAAElL,QACjBkL,EAAElL,KAAOkL,EAAElL,KAAKqC,KAAKhC,KAAM8nB,IAErBlqB,EAAEkR,KAAKjE,GACZ0D,KAAK3Q,EAAEoK,OAAM,SAAUrI,EAAK+O,EAAEK,GAC7B,IAAIvP,EAAGqK,EACP,GAAGlK,EACF,IAAIH,KAAKG,EACLA,EAAKwR,eAAe3R,KACtBQ,KAAKI,MAAMynB,SAASroB,GAAKG,EAAKH,IAIjC,IAAIA,EAAI,EAAGqK,EAAIsE,EAAM/M,OAAQ5B,EAAIqK,EAAGrK,KACnCmM,EAAM3L,KAAKkJ,SAASiF,EAAM3O,IAAI,KACnBmM,EAAIvK,QACduK,EAAIzE,YAAY,kBAAkB7I,KAAK,aAAY,GAGrDiG,EAAOqJ,YAAY3L,KAAKhC,KAAMmO,EAAOZ,EAAUa,EAAaC,KAC1DrO,OACHqP,KAAKzR,EAAEoK,OAAM,SAAUsH,GACtBhL,EAAOqJ,YAAY3L,KAAKhC,KAAMmO,EAAOZ,EAAUa,EAAaC,KAC1DrO,QAIR,OAAOsE,EAAOqJ,YAAY3L,KAAKhC,KAAMmO,EAAOZ,EAAUa,EAAaC,IAEpErO,KAAK+N,WAAa,SAAU9M,EAAKsM,GAChC,IACc5B,EADVhM,EAAOK,KAAKI,MAAMynB,SAAS5mB,EAAIlB,IAClCqQ,EAAO,KACR,OAAGzQ,GACFyQ,EAAOpQ,KAAqB,iBAATL,EAAoB,oBAAsB,qBAC5DsB,EACgB,iBAATtB,EAAoB/B,EAAEA,EAAEiR,UAAUlP,IAAO6F,QAAO,WAAc,OAAyB,IAAlBxF,KAAKmB,YAAqBxB,GACtG,SAAUgK,GAAU4D,EAASvL,KAAKhC,KAAM2J,OAEzCgC,EAAM3L,KAAKkJ,SAASjI,EAAIlB,IAAI,KACjB4L,EAAIvK,QACduK,EAAIzE,YAAY,kBAAkB7I,KAAK,aAAY,UAE7C2B,KAAKI,MAAMynB,SAAS5mB,EAAIlB,IACxBqQ,GAED9L,EAAOyJ,WAAW/L,KAAKhC,KAAMiB,EAAKsM,KAe3C3P,EAAEE,OAAOW,SAASiE,OAAS,CAS1BoM,MAAO,EAMPiZ,OAAQ,EAMRC,gBAAiB,EAOjBC,mBAAoB,EAOpBC,4BAA6B,EAM7BC,sBAAuB,EAMvBC,oBAAqB,EAOrBC,iBAAkB,GAGnBzqB,EAAEE,OAAOY,QAAQgE,OAAS,SAAUxD,EAASoF,GAC5CtE,KAAKiF,KAAO,WACXX,EAAOW,KAAKjD,KAAKhC,MAEjBA,KAAKI,MAAMsC,OAAO2e,IAAM,GACxBrhB,KAAKI,MAAMsC,OAAOiJ,IAAM/N,IACxBoC,KAAKI,MAAMsC,OAAOuc,IAAM,GACxBjf,KAAKI,MAAMsC,OAAO4lB,IAAM,GACxBtoB,KAAKI,MAAMsC,OAAO6lB,KAAM,EACxBvoB,KAAKI,MAAMsC,OAAO8lB,KAAM,EACxBxoB,KAAKI,MAAMsC,OAAO+lB,IAAM,GAExBzoB,KAAK2E,QACH4C,GAAG,gBAAiB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GACxC,GAAGK,KAAKI,MAAMsC,OAAO6lB,KAAO5oB,EAAKsf,IAAI7d,OAAQ,CAC5C,IAA0B5B,EAAGqK,EAAWpK,EAAG+N,EAAvCQ,EAAIhO,KAAKwB,OAAO7B,KAAY2M,EAAI,GACpC,IAAI9M,EAAI,EAAGqK,EAAIlK,EAAKsf,IAAI7d,OAAQ5B,EAAIqK,EAAGrK,IACtC,GAAGwO,EAAErO,EAAKsf,IAAIzf,MAAQwO,EAAErO,EAAKsf,IAAIzf,IAAIkF,MAAMwJ,SAC1C5B,EAAEC,KAAK5M,EAAKsf,IAAIzf,IAChB8M,EAAIA,EAAExC,OAAOkE,EAAErO,EAAKsf,IAAIzf,IAAI+E,SACzBvE,KAAKI,MAAMsC,OAAO8lB,KACpB,IAAK/oB,EAAI,EAAG+N,EAAIQ,EAAErO,EAAKsf,IAAIzf,IAAIiF,WAAWrD,OAAQ3B,EAAI+N,EAAG/N,IACpDuO,EAAEA,EAAErO,EAAKsf,IAAIzf,IAAIiF,WAAWhF,MAAQuO,EAAEA,EAAErO,EAAKsf,IAAIzf,IAAIiF,WAAWhF,IAAIiF,MAAMwJ,QAC7E5B,EAAEC,KAAKyB,EAAErO,EAAKsf,IAAIzf,IAAIiF,WAAWhF,IAMtC6M,EAAI1O,EAAEmM,OAAOuL,kBAAkB1X,EAAEmM,OAAOC,aAAasC,GAAI1O,EAAEE,OAAOiB,MAClEiB,KAAKI,MAAMsC,OAAO+lB,IAAMzoB,KAAK6U,UAAS,GACtC7U,KAAK4U,UAAUtI,GAAG,GAClBtM,KAAK+P,QAAO,MAEX/P,OACHuH,GAAG,sBAAuB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GAC3CK,KAAKI,MAAMsC,OAAO6lB,KAAO5oB,EAAKsf,IAAI7d,SACpCpB,KAAK4U,UAAU5U,KAAKI,MAAMsC,OAAO+lB,KAAK,GACtCzoB,KAAK+P,QAAO,MAEX/P,QAaNA,KAAK0C,OAAS,SAAU2e,EAAKqH,EAAYT,EAAmBU,EAAQtW,EAAQ6V,GAC3E,IAAW,IAAR7G,GAA4C,KAA3BzjB,EAAEmU,KAAKsP,EAAIxQ,YAC9B,OAAO7Q,KAAK4oB,eAGbD,GADAA,EAAS3oB,KAAKkJ,SAASyf,KACJA,EAAO5oB,GAAK4oB,EAAO5oB,GAAK,KAC3CshB,EAAMA,EAAIxQ,WACV,IAKSrR,EAAGqK,EALRgB,EAAI7K,KAAK6E,SAASnC,OACrBC,IAAIkI,EAAEiE,MAAOjE,EAAEiE,KACfd,EAAIhO,KAAKwB,OAAO7B,KAChB2P,EAAI,KACJhB,EAAI,GACJhC,EAAI,GAUL,GATGtM,KAAKI,MAAMsC,OAAOuc,IAAI7d,SAAWiR,GACnCrS,KAAK4oB,eAEHX,IAAsBpqB,IACxBoqB,EAAoBpd,EAAEod,mBAEpBC,IAA+BrqB,IACjCqqB,EAA6Brd,EAAEqd,6BAE5BQ,IAAoB,IAAN/lB,EACjB,OAAG/E,EAAE8N,WAAW/I,GACRA,EAAEX,KAAKhC,KAAMqhB,EAAKzjB,EAAEoK,OAAM,SAAU4G,GACtCA,GAAKA,EAAEA,IAAKA,EAAIA,EAAEA,GACrB5O,KAAK2N,YAAa/P,EAAE8P,QAAQkB,GAAUhR,EAAEmM,OAAOC,aAAa4E,GAA3B,IAA+B,WAC/D5O,KAAK0C,OAAO2e,GAAK,EAAM4G,EAAmBU,EAAQtW,EAAQ6V,QAEzDloB,MAAO2oB,KAGXhmB,EAAI/E,EAAE0B,OAAO,GAAIqD,IACXhD,OAAQgD,EAAEhD,KAAO,IACvBgD,EAAEhD,KAAK0hB,IAAMA,EACVsH,IACFhmB,EAAEhD,KAAKgpB,OAASA,GAEb3oB,KAAKI,MAAMsC,OAAOmmB,aACrB7oB,KAAKI,MAAMsC,OAAOmmB,YAAYC,QAE/B9oB,KAAKI,MAAMsC,OAAOmmB,YAAcjrB,EAAEkR,KAAKnM,GACrC0M,KAAKzR,EAAEoK,OAAM,WACbhI,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,OAAQ,OAAW,SAAU,GAAO,YAAa,OAAW,gCAAiC,KAASwO,KAAKC,UAAUzM,IAC9J3C,KAAK6E,SAASzF,KAAK2D,MAAMf,KAAKhC,KAAMA,KAAKI,MAAMhB,KAAKuB,cAClDX,OACFuO,KAAK3Q,EAAEoK,OAAM,SAAU4G,GACpBA,GAAKA,EAAEA,IAAKA,EAAIA,EAAEA,GACrB5O,KAAK2N,YAAa/P,EAAE8P,QAAQkB,GAAUhR,EAAEmM,OAAOC,aAAa4E,GAA3B,IAA+B,WAC/D5O,KAAK0C,OAAO2e,GAAK,EAAM4G,EAAmBU,EAAQtW,EAAQ6V,QAEzDloB,OACGA,KAAKI,MAAMsC,OAAOmmB,aAoB3B,GAjBIxW,IACHrS,KAAKI,MAAMsC,OAAO2e,IAAMA,EACxBrhB,KAAKI,MAAMsC,OAAOiJ,IAAM/N,IACxBoC,KAAKI,MAAMsC,OAAOuc,IAAM,GACxBjf,KAAKI,MAAMsC,OAAO4lB,IAAM,GACxBtoB,KAAKI,MAAMsC,OAAO6lB,IAAMN,EACxBjoB,KAAKI,MAAMsC,OAAO8lB,IAAMN,GAGzB5Y,EAAI,IAAI1R,EAAEmM,OAAOrH,OAAO2e,GAAK,EAAM,CAAE0H,cAAgBle,EAAEmd,eAAgBD,MAAQld,EAAEkd,QACjFnqB,EAAE2B,KAAKyO,EAAE2a,GAAkB/qB,EAAEE,OAAOiB,MAAM0F,YAAY,SAAUukB,EAAIxpB,GACnE,IAAIiL,EAAIuD,EAAExO,GACPiL,EAAEC,OAASD,EAAE/F,MAAMwJ,UAAYrD,EAAEud,oBAAuB3d,EAAE/F,MAAMP,QAAgC,IAAtBsG,EAAEjG,SAASpD,UAAqByJ,EAAEwd,iBAAmBxd,EAAEwd,gBAAgBrmB,KAAKhC,KAAMqhB,EAAK5W,KAASI,EAAEwd,iBAAmB/Y,EAAE5M,OAAO+H,EAAEC,MAAMue,WAClN3a,EAAE/B,KAAK/M,GACP8M,EAAIA,EAAExC,OAAOW,EAAElG,aAGd+J,EAAElN,OAAQ,CAEZ,IAAI5B,EAAI,EAAGqK,GADXyC,EAAI1O,EAAEmM,OAAOC,aAAasC,IACTlL,OAAQ5B,EAAIqK,EAAGrK,IAC5B8M,EAAE9M,KAAO5B,EAAEE,OAAOiB,MAAQiP,EAAE1B,EAAE9M,MAAyC,IAAlCQ,KAAKqJ,UAAUiD,EAAE9M,GAAI,KAAM,IAClEQ,KAAKI,MAAMsC,OAAO4lB,IAAI/b,KAAKD,EAAE9M,IAG3B6S,GAKHrS,KAAKI,MAAMsC,OAAOiJ,IAAM3L,KAAKI,MAAMsC,OAAOiJ,IAAI0E,IAAIzS,EAAEoC,KAAK2E,QAAQ,GAAGukB,iBAAiB,IAAMtrB,EAAE6X,IAAInH,GAAG,SAAU7D,GAAK,OAAuC,IAAhC,aAAa7L,QAAQ6L,EAAE,IAAa,MAAQA,EAAE,GAAK,IAAMA,EAAEoI,OAAO,GAAGhU,QAAQjB,EAAEE,OAAOgB,QAAQ,QAAU2L,EAAE5L,QAAQjB,EAAEE,OAAOgB,QAAQ,WAAY4N,KAAK,UAC9Q1M,KAAKI,MAAMsC,OAAOuc,IAAMrhB,EAAEmM,OAAOC,aAAahK,KAAKI,MAAMsC,OAAOuc,IAAInV,OAAOwE,MAL3EtO,KAAKI,MAAMsC,OAAOiJ,IAAM/N,EAAEoC,KAAK2E,QAAQ,GAAGukB,iBAAiB,IAAMtrB,EAAE6X,IAAInH,GAAG,SAAU7D,GAAK,OAAuC,IAAhC,aAAa7L,QAAQ6L,EAAE,IAAa,MAAQA,EAAE,GAAK,IAAMA,EAAEoI,OAAO,GAAGhU,QAAQjB,EAAEE,OAAOgB,QAAQ,QAAU2L,EAAE5L,QAAQjB,EAAEE,OAAOgB,QAAQ,WAAY4N,KAAK,SACpP1M,KAAKI,MAAMsC,OAAOuc,IAAM3Q,GAMzBtO,KAAKI,MAAMsC,OAAOiJ,IAAInH,SAAS,kBAAkBI,SAAS,iBAW3D5E,KAAKkF,QAAQ,SAAU,CAAEiJ,MAAQnO,KAAKI,MAAMsC,OAAOiJ,IAAK0V,IAAMA,EAAKpC,IAAMjf,KAAKI,MAAMsC,OAAOuc,IAAKgJ,kBAAoBA,KAQrHjoB,KAAK4oB,aAAe,WAChB5oB,KAAK6E,SAASnC,OAAOylB,sBACvBnoB,KAAKgJ,WAAWhJ,KAAKI,MAAMsC,OAAO4lB,IAAK,GAWxCtoB,KAAKkF,QAAQ,eAAgB,CAAE,MAAUlF,KAAKI,MAAMsC,OAAOiJ,IAAK0V,IAAMrhB,KAAKI,MAAMsC,OAAO2e,IAAKpC,IAAMjf,KAAKI,MAAMsC,OAAOuc,MAClHjf,KAAKI,MAAMsC,OAAOuc,IAAI7d,SACxBpB,KAAKI,MAAMsC,OAAOiJ,IAAM/N,EAAEoC,KAAK2E,QAAQ,GAAGukB,iBAAiB,IAAMtrB,EAAE6X,IAAIzV,KAAKI,MAAMsC,OAAOuc,KAAK,SAAUxU,GACvG,OAAuC,IAAhC,aAAa7L,QAAQ6L,EAAE,IAAa,MAAQA,EAAE,GAAK,IAAMA,EAAEoI,OAAO,GAAGhU,QAAQjB,EAAEE,OAAOgB,QAAQ,QAAU2L,EAAE5L,QAAQjB,EAAEE,OAAOgB,QAAQ,WACxI4N,KAAK,SACR1M,KAAKI,MAAMsC,OAAOiJ,IAAInH,SAAS,kBAAkB0C,YAAY,kBAE9DlH,KAAKI,MAAMsC,OAAO2e,IAAM,GACxBrhB,KAAKI,MAAMsC,OAAOuc,IAAM,GACxBjf,KAAKI,MAAMsC,OAAO4lB,IAAM,GACxBtoB,KAAKI,MAAMsC,OAAOiJ,IAAM/N,KAGzBoC,KAAKoS,YAAc,SAASnR,EAAKuR,EAAMjF,EAAUkF,GAEhD,IADAxR,EAAMqD,EAAO8N,YAAY/P,MAAMrC,KAAMiC,cAEa,IAA9CrE,EAAEiQ,QAAQ5M,EAAIlB,GAAIC,KAAKI,MAAMsC,OAAOuc,KAAa,CACnD,IAAIzf,EAAGqK,EAAG1K,EAAM,KAChB,IAAIK,EAAI,EAAGqK,EAAI5I,EAAI+R,WAAW5R,OAAQ5B,EAAIqK,EAAGrK,IAC5C,GAAGyB,EAAI+R,WAAWxT,IAAMyB,EAAI+R,WAAWxT,GAAGuH,YAAuE,IAA1D9F,EAAI+R,WAAWxT,GAAGuH,UAAUnI,QAAQ,iBAAyB,CACnHO,EAAM8B,EAAI+R,WAAWxT,GACrB,MAGCL,IACFA,EAAI4H,WAAa,kBAIpB,OAAO9F,IAKR,SAAUrD,GAEVA,EAAEmM,OAAOrH,OAAS,SAASymB,EAASzF,EAAKxkB,GACxCA,EAAUA,GAAW,IAEA,KADrBA,EAAUtB,EAAE0B,OAAO,GAAI1B,EAAEmM,OAAOrH,OAAOjE,SAAUS,IACtC6oB,QACV7oB,EAAQ6oB,OAAQ,GAEjBoB,EAAUjqB,EAAQ6pB,cAAgBI,EAAUA,EAAQzhB,cACpD,IAIC0hB,EAAWC,EAAkBC,EAAkB5mB,EAJ5C6mB,EAAiBrqB,EAAQsqB,SAC5BC,EAAiBvqB,EAAQwqB,SACzBC,EAAkBzqB,EAAQknB,UAC1BwD,EAAaT,EAAQ/nB,OAyGtB,OAvGGwoB,EAAa,KACf1qB,EAAQ6oB,OAAQ,GAEd7oB,EAAQ6oB,QACVqB,EAAY,GAAMQ,EAAa,EAC/BP,EAAoB,WACnB,IAAIQ,EAAO,GACVrqB,EAAI,EACL,IAAKA,EAAI,EAAGA,EAAIoqB,EAAYpqB,IAC3BqqB,EAAKV,EAAQve,OAAOpL,IAAM,EAE3B,IAAKA,EAAI,EAAGA,EAAIoqB,EAAYpqB,IAC3BqqB,EAAKV,EAAQve,OAAOpL,KAAO,GAAMoqB,EAAapqB,EAAI,EAEnD,OAAOqqB,EATW,GAWnBP,EAAmB,SAAU9hB,EAAGuH,GAC/B,IAAI+a,EAAWtiB,EAAIoiB,EAClBG,EAAYrQ,KAAKyG,IAAIoJ,EAAiBxa,GACvC,OAAI0a,EAGGK,EAAYC,EAAYN,EAFvBM,EAAY,EAAMD,IAK5BpnB,EAAS,SAAUgI,GAElB,GADAA,EAAOxL,EAAQ6pB,cAAgBre,EAAOA,EAAKhD,cACxCyhB,IAAYze,IAAmC,IAA3BA,EAAK9L,QAAQuqB,GACnC,MAAO,CACNF,SAAS,EACTe,MAAO,GAGT,IAAI9qB,EAAQ6oB,MACX,MAAO,CACNkB,SAAS,EACTe,MAAO,GAGT,IAAIxqB,EAAGqK,EAINogB,EAAQC,EAERC,EAAQvG,EAAOwG,EAAQC,EAAIC,EAL3BC,EAAU7f,EAAKtJ,OACfopB,EAAiBb,EACjBc,EAAU/f,EAAK9L,QAAQuqB,EAASI,GAEhCmB,EAASd,EAAaW,EAEtBP,EAAQ,EACRW,EAAY,GASb,KARiB,IAAbF,IACHD,EAAiB9Q,KAAKC,IAAI2P,EAAiB,EAAGmB,GAAUD,IAEvC,KADjBC,EAAU/f,EAAKkgB,YAAYzB,EAASI,EAAiBK,MAEpDY,EAAiB9Q,KAAKC,IAAI2P,EAAiB,EAAGmB,GAAUD,KAG1DC,GAAW,EACNjrB,EAAI,EAAGA,EAAIoqB,EAAYpqB,IAAK,CAGhC,IAFAyqB,EAAS,EACTC,EAASQ,EACFT,EAASC,GACXZ,EAAiB9pB,EAAG+pB,EAAiBW,IAAWM,EACnDP,EAASC,EAETQ,EAASR,EAEVA,EAASxQ,KAAKmR,OAAOH,EAAST,GAAU,EAAIA,GAO7C,IALAS,EAASR,EACTtG,EAAQlK,KAAKoR,IAAI,EAAGvB,EAAiBW,EAAS,GAC9CE,EAAS1Q,KAAKC,IAAI4P,EAAiBW,EAAQK,GAAWX,GACtDS,EAAK,IAAIxoB,MAAMuoB,EAAS,IACrBA,EAAS,IAAM,GAAK5qB,GAAK,EACvBqK,EAAIugB,EAAQvgB,GAAK+Z,EAAO/Z,IAO5B,GANAygB,EAAYjB,EAAiB3e,EAAKE,OAAOf,EAAI,IAE5CwgB,EAAGxgB,GADM,IAANrK,GACO6qB,EAAGxgB,EAAI,IAAM,EAAK,GAAKygB,GAEvBD,EAAGxgB,EAAI,IAAM,EAAK,GAAKygB,GAAeH,EAAOtgB,EAAI,GAAKsgB,EAAOtgB,KAAO,EAAK,EAAKsgB,EAAOtgB,EAAI,GAEhGwgB,EAAGxgB,GAAKuf,IACXY,EAAQV,EAAiB9pB,EAAGqK,EAAI,KACnB2gB,EAAgB,CAI5B,GAHAA,EAAiBR,EACjBS,EAAU5gB,EAAI,EACd8gB,EAAUpe,KAAKke,KACXA,EAAUlB,GAGb,MAFA3F,EAAQlK,KAAKoR,IAAI,EAAG,EAAIvB,EAAiBkB,GAO7C,GAAInB,EAAiB9pB,EAAI,EAAG+pB,GAAkBiB,EAC7C,MAEDL,EAASE,EAEV,MAAO,CACNpB,QAASwB,GAAW,EACpBT,MAAOA,KAGM,IAARtG,EAAe,CAAE,OAAWhhB,GAAWA,EAAOghB,IAEtD9lB,EAAEmM,OAAOrH,OAAOjE,SAAW,CAC1B+qB,SAAW,EACXE,SAAW,IACXtD,UAAY,GACZ2B,OAAQ,EACRgB,eAAgB,GA5HlB,CA8HEnrB,GAkBFA,EAAEE,OAAOW,SAASuX,KAAO,SAAUrT,EAAGqZ,GAErC,OAAOhc,KAAKwM,SAAS7J,GAAK3C,KAAKwM,SAASwP,GAAK,GAAK,GAEnDpe,EAAEE,OAAOY,QAAQsX,KAAO,SAAU9W,EAASoF,GAC1CtE,KAAKiF,KAAO,WACXX,EAAOW,KAAKjD,KAAKhC,MACjBA,KAAK2E,QACH4C,GAAG,eAAgB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GACvCK,KAAKgW,KAAKrW,EAAK2E,QAAQ,KACrBtE,OACHuH,GAAG,wCAAyC3J,EAAEoK,OAAM,SAAUR,EAAG7H,GAChEK,KAAKgW,KAAKrW,EAAK2E,QAAU3E,EAAKuG,KAAK5B,QAAQ,GAC3CtE,KAAKoS,YAAYzS,EAAK2E,QAAU3E,EAAKuG,KAAK5B,QAAQ,KAChDtE,OACHuH,GAAG,oCAAqC3J,EAAEoK,OAAM,SAAUR,EAAG7H,GAC5DK,KAAKgW,KAAKrW,EAAK2E,QAAQ,GACvBtE,KAAKoS,YAAYzS,EAAK2E,QAAQ,KAC5BtE,QAWNA,KAAKgW,KAAO,SAAU/U,EAAKuR,GAC1B,IAAIhT,EAAGqK,EAEP,IADA5I,EAAMjB,KAAKkJ,SAASjI,KACVA,EAAIuD,UAAYvD,EAAIuD,SAASpD,SACtCH,EAAIuD,SAASwR,KAAKpY,EAAEoK,MAAMhI,KAAK6E,SAASmR,KAAMhW,OAC3CwS,GACF,IAAIhT,EAAI,EAAGqK,EAAI5I,EAAIwD,WAAWrD,OAAQ5B,EAAIqK,EAAGrK,IAC5CQ,KAAKgW,KAAK/U,EAAIwD,WAAWjF,IAAI,KAgBlC,IAAIgjB,GAAK,EAMT5kB,EAAEE,OAAOW,SAASiG,MAAQ,CAMzB+G,IAAO,SAMPsf,OAAS,0FAMTC,KAAO,EAMPxlB,QAAS,GAEV5H,EAAEE,OAAOY,QAAQgG,MAAQ,SAAUxF,EAASoF,GAC3CtE,KAAKiF,KAAO,WACXX,EAAOW,KAAKjD,KAAKhC,MACjB,IAAIiF,EAAOrH,EAAEoK,OAAM,WAClBhI,KAAK2E,QAAQ4C,GAAGvH,KAAK6E,SAASH,MAAMqmB,OAAQntB,EAAEoK,OAAM,WAChDwa,GAAMvY,aAAauY,GACtBA,EAAK5Y,WAAWhM,EAAEoK,OAAM,WAAchI,KAAKirB,eAAiBjrB,MAAO,OACjEA,OAOHA,KAAKkF,QAAQ,iBACXlF,MACHA,KAAK2E,QACH4C,GAAG,eAAgB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GACvCK,KAAK2E,QAAQ0V,IAAI,uBAAwBpV,GACrCjF,KAAKkrB,iBAAmBjmB,MAC1BjF,QAONA,KAAKirB,WAAa,WACjB,IAAIE,EAAK,CAAE,MAAUnrB,KAAK4V,YAAa,IAAQ5V,KAAK6E,SAASH,MAAMsmB,IAAK,KAAS,IAAK9iB,MACtFtK,EAAEmM,OAAOqhB,QAAQC,IAAIrrB,KAAK6E,SAASH,MAAM+G,IAAK0D,KAAKC,UAAU+b,KAO9DnrB,KAAKkrB,cAAgB,WACpB,IAAIzrB,EAAI7B,EAAEmM,OAAOqhB,QAAQ/W,IAAIrU,KAAK6E,SAASH,MAAM+G,KACjD,GAAKhM,EAAK,IAAMA,EAAI0P,KAAKc,MAAMxQ,GAAM,MAAMyM,GAAM,OAAO,EACxD,QAAKzM,GAAKA,EAAEurB,KAAOvrB,EAAE6rB,MAAQ,IAAKpjB,KAAUzI,EAAE6rB,IAAM7rB,EAAEurB,OACjDvrB,GAAKA,EAAEiF,QAASjF,EAAIA,EAAEiF,OACtBjF,GAAK7B,EAAE8N,WAAW1L,KAAK6E,SAASH,MAAMc,UAAW/F,EAAIO,KAAK6E,SAASH,MAAMc,OAAOxD,KAAKhC,KAAMP,MAC3FA,IACJO,KAAK2E,QAAQ0V,IAAI,oBAAoB,SAAU7S,EAAG7H,GAAQA,EAAKwC,SAAS+C,QAAQ,gBAAiB,CAAE,MAAUtH,EAAE0B,QAAO,EAAM,GAAIG,QAChIO,KAAK8V,UAAUrW,IACR,KASTO,KAAKurB,YAAc,WAClB,OAAO3tB,EAAEmM,OAAOqhB,QAAQI,IAAIxrB,KAAK6E,SAASH,MAAM+G,OAIjD,SAAU7N,EAAGC,GACbD,EAAEmM,OAAOqhB,QAAU,CAElBC,IAAM,SAAU5f,EAAKkL,GAAO,OAAOpY,OAAOktB,aAAaC,QAAQjgB,EAAKkL,IACpEtC,IAAM,SAAU5I,GAAO,OAAOlN,OAAOktB,aAAaE,QAAQlgB,IAC1D+f,IAAM,SAAU/f,GAAO,OAAOlN,OAAOktB,aAAaG,WAAWngB,KAL/D,CAOE7N,GA6BFA,EAAEE,OAAOW,SAASotB,MAAQ,CACzB,QAAY,IAEbjuB,EAAEE,OAAOW,SAASotB,MAAMjuB,EAAEE,OAAOiB,MAAQ,GAEzCnB,EAAEE,OAAOY,QAAQmtB,MAAQ,SAAU3sB,EAASoF,GAC3CtE,KAAKJ,KAAO,SAAUX,EAAIC,GACzB,IAAIM,EAAGqK,EACP,GAAG3K,GAAWA,EAAQ2sB,OAAS3sB,EAAQ2sB,MAAe,QACrD,IAAIrsB,KAAKN,EAAQ2sB,MAChB,GAAS,YAANrsB,GAAmBA,IAAM5B,EAAEE,OAAOiB,MAAQG,EAAQ2sB,MAAM1a,eAAe3R,GACzE,IAAIqK,KAAK3K,EAAQ2sB,MAAe,QAC5B3sB,EAAQ2sB,MAAe,QAAE1a,eAAetH,IAAM3K,EAAQ2sB,MAAMrsB,GAAGqK,KAAOhM,IACxEqB,EAAQ2sB,MAAMrsB,GAAGqK,GAAK3K,EAAQ2sB,MAAe,QAAEhiB,IAMpDvF,EAAO1E,KAAKoC,KAAKhC,KAAMf,EAAIC,GAC3Bc,KAAKwB,OAAO7B,KAAK/B,EAAEE,OAAOiB,MAAM+J,KAAOlL,EAAEE,OAAOiB,MAEjDiB,KAAKqW,QAAU,SAAUC,EAAcC,GACtCjS,EAAO+R,QAAQrU,KAAKhC,KAAMsW,EAAcC,GACxCvW,KAAKwB,OAAO7B,KAAK/B,EAAEE,OAAOiB,MAAM+J,KAAOlL,EAAEE,OAAOiB,MAEjDiB,KAAKiF,KAAO,WACXjF,KAAK2E,QACH4C,GAAG,eAAgB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GACvC,IAGCH,EAAGqK,EAAkBpK,EAHlBuO,EAAIhO,KAAKwB,OAAO7B,KACnBkQ,EAAMlQ,EAAKwO,MACXO,EAAI1O,KAAK6E,SAASgnB,MACZpe,EAAI,UACX,IAAIjO,EAAI,EAAGqK,EAAIgG,EAAIzO,OAAQ5B,EAAIqK,EAAGrK,IAAK,CAYtC,GAXAiO,EAAI,UACDO,EAAE6B,EAAIrQ,IAAI0R,UAAYlD,EAAE6B,EAAIrQ,IAAI0R,SAASpI,MAAQ4F,EAAEV,EAAE6B,EAAIrQ,IAAI0R,SAASpI,QACxE2E,EAAIO,EAAE6B,EAAIrQ,IAAI0R,SAASpI,MAErBkF,EAAE6B,EAAIrQ,IAAIG,MAAQqO,EAAE6B,EAAIrQ,IAAIG,KAAK7B,QAAUkQ,EAAE6B,EAAIrQ,IAAIG,KAAK7B,OAAOgL,MAAQ4F,EAAEV,EAAE6B,EAAIrQ,IAAIG,KAAK7B,OAAOgL,QACnG2E,EAAIO,EAAE6B,EAAIrQ,IAAIG,KAAK7B,OAAOgL,MAE3BkF,EAAE6B,EAAIrQ,IAAIsJ,KAAO2E,GACK,IAAnBO,EAAE6B,EAAIrQ,IAAIsR,MAAiBpC,EAAEjB,GAAGqD,OAASjT,IAC3CmQ,EAAE6B,EAAIrQ,IAAIsR,KAAOpC,EAAEjB,GAAGqD,MAEpBpC,EAAEjB,GAAGsD,UAAYlT,GAAqC,iBAAjB6Q,EAAEjB,GAAGsD,QAC5C,IAAKtR,KAAKiP,EAAEjB,GAAGsD,QACd,GAAIrC,EAAEjB,GAAGsD,QAAQI,eAAe1R,GAAI,CACnC,GAAU,OAANA,EACH,SAEQuO,EAAE6B,EAAIrQ,IAAIuR,QAAQtR,KAAO5B,EACjCmQ,EAAE6B,EAAIrQ,IAAIuR,QAAQtR,GAAKiP,EAAEjB,GAAGsD,QAAQtR,GAEtB,UAANA,IACRuO,EAAE6B,EAAIrQ,IAAIuR,QAAe,MAAIrC,EAAEjB,GAAGsD,QAAe,MAAI,IAAM/C,EAAE6B,EAAIrQ,IAAIuR,QAAe,OAKxF,GAAGrC,EAAEjB,GAAGuD,SAAWnT,GAAoC,iBAAhB6Q,EAAEjB,GAAGuD,OAC3C,IAAKvR,KAAKiP,EAAEjB,GAAGuD,OACd,GAAItC,EAAEjB,GAAGuD,OAAOG,eAAe1R,GAAI,CAClC,GAAU,OAANA,EACH,SAEQuO,EAAE6B,EAAIrQ,IAAIwR,OAAOvR,KAAO5B,EAChCmQ,EAAE6B,EAAIrQ,IAAIwR,OAAOvR,GAAKiP,EAAEjB,GAAGuD,OAAOvR,GAEpB,SAANA,GAAwC,MAAxBuO,EAAE6B,EAAIrQ,IAAIwR,OAAOvR,GACzCuO,EAAE6B,EAAIrQ,IAAIwR,OAAa,KAAItC,EAAEjB,GAAGuD,OAAa,KAE/B,UAANvR,IACRuO,EAAE6B,EAAIrQ,IAAIwR,OAAc,MAAItC,EAAEjB,GAAGuD,OAAc,MAAI,IAAMhD,EAAE6B,EAAIrQ,IAAIwR,OAAc,QAMtFhD,EAAEpQ,EAAEE,OAAOiB,MAAM+J,KAAOlL,EAAEE,OAAOiB,OAC/BiB,OACLsE,EAAOW,KAAKjD,KAAKhC,OAElBA,KAAK4W,SAAW,SAAU3V,EAAK/B,EAAS2X,GACvC,IAAIrX,EAAGqK,EACNmE,EAAIhO,KAAKwB,OAAO7B,KAChBN,EAAMH,EAAUtB,EAAE0B,QAAO,EAAM,GAAIJ,EAAS,CAACiY,OAAM,IAAU,GAC7DhY,EAAMmF,EAAOsS,SAAS5U,KAAKhC,KAAMiB,EAAK5B,EAAKwX,GAC5C,IAAW,IAAR1X,EAAiB,OAAO,EAC3B,GAAGvB,EAAE8P,QAAQvO,GACZ,IAAIK,EAAI,EAAGqK,EAAI1K,EAAIiC,OAAQ5B,EAAIqK,EAAGrK,IACjCL,EAAIK,GAAGsJ,KAAO3J,EAAIK,GAAGO,IAAMiO,EAAE7O,EAAIK,GAAGO,KAAOiO,EAAE7O,EAAIK,GAAGO,IAAI+I,KAAOkF,EAAE7O,EAAIK,GAAGO,IAAI+I,KAAO,UAChF5J,GAAWA,EAAQiY,eACdhY,EAAIK,GAAGO,GACXZ,EAAIK,GAAGuR,SAAW5R,EAAIK,GAAGuR,QAAQhR,WAC5BZ,EAAIK,GAAGuR,QAAQhR,GAEpBZ,EAAIK,GAAGwR,QAAU7R,EAAIK,GAAGwR,OAAOjR,WAC1BZ,EAAIK,GAAGwR,OAAOjR,SAMxBZ,EAAI2J,KAAO3J,EAAIY,IAAMiO,EAAE7O,EAAIY,KAAOiO,EAAE7O,EAAIY,IAAI+I,KAAOkF,EAAE7O,EAAIY,IAAI+I,KAAO,UACjE5J,GAAWA,EAAQiY,QACrBhY,EAAMa,KAAK8rB,YAAY3sB,IAGzB,OAAOA,GAERa,KAAK8rB,YAAc,SAAU3sB,GAC5B,GAAGvB,EAAE8P,QAAQvO,GAAM,CAClB,IAAI,IAAIK,EAAI,EAAGqK,EAAI1K,EAAIiC,OAAQ5B,EAAIqK,EAAGrK,IACrCL,EAAIK,GAAKQ,KAAK8rB,YAAY3sB,EAAIK,IAE/B,OAAOL,EAYR,cAVOA,EAAIY,GACRZ,EAAI4R,SAAW5R,EAAI4R,QAAQhR,WACtBZ,EAAI4R,QAAQhR,GAEjBZ,EAAI6R,QAAU7R,EAAI6R,OAAOjR,WACpBZ,EAAI6R,OAAOjR,GAEhBZ,EAAIqF,UAAY5G,EAAE8P,QAAQvO,EAAIqF,YAChCrF,EAAIqF,SAAWxE,KAAK8rB,YAAY3sB,EAAIqF,WAE9BrF,GAERa,KAAKwX,MAAQ,SAAUK,EAAK5W,EAAK0O,EAAK2H,EAAKQ,GAC1C,IAAyD,IAAtDxT,EAAOkT,MAAMxV,KAAKhC,KAAM6X,EAAK5W,EAAK0O,EAAK2H,EAAKQ,GAAmB,OAAO,EACzE7W,EAAMA,GAAOA,EAAIlB,GAAKkB,EAAMjB,KAAKkJ,SAASjI,GAC1C0O,EAAMA,GAAOA,EAAI5P,GAAK4P,EAAM3P,KAAKkJ,SAASyG,GAC1C,IAAiGxQ,EAAKyP,EAAGpP,EAAGqK,EAAxGmE,EAAI/M,GAAOA,EAAIlB,GAAM+X,GAAQA,EAAKK,OAASL,EAAKK,OAASva,EAAEE,OAAOiD,UAAUE,EAAIlB,IAAO,KAE3F,OADAiO,EAAIA,GAAKA,EAAExM,QAAUwM,EAAExM,OAAO7B,KAAOqO,EAAExM,OAAO7B,KAAO,KAC9CkY,GACN,IAAK,cACL,IAAK,YACL,IAAK,YACJ,GAAW,cAARA,IAA4D,IAArCja,EAAEiQ,QAAQ5M,EAAIlB,GAAI4P,EAAInL,UAAkB,CAEjE,IADArF,EAAMa,KAAK+rB,UAAUpc,IACdqc,eAAiBnuB,IAAmC,IAAtBsB,EAAI6sB,cAAuB7sB,EAAI6sB,eAAiBrc,EAAInL,SAASpD,OAEjG,OADApB,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,QAAS,OAAW,QAAS,GAAO,WAAY,OAAW,mCAAqCkX,EAAK,KAAS1I,KAAKC,UAAU,CAAE,IAAQyI,EAAK,IAAQP,EAAK,OAAQrW,IAAOA,EAAIlB,KAAKkB,EAAIlB,GAAY,OAAQ4P,IAAOA,EAAI5P,KAAK4P,EAAI5P,OAC/P,EAER,GAAGZ,EAAI8sB,iBAAmBpuB,IAAqC,IAAxBsB,EAAI8sB,iBAAqF,IAA5DruB,EAAEiQ,QAAS5M,EAAI6H,MAAQ,UAAY3J,EAAI8sB,gBAE1G,OADAjsB,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,QAAS,OAAW,QAAS,GAAO,WAAY,OAAW,qCAAuCkX,EAAK,KAAS1I,KAAKC,UAAU,CAAE,IAAQyI,EAAK,IAAQP,EAAK,OAAQrW,IAAOA,EAAIlB,KAAKkB,EAAIlB,GAAY,OAAQ4P,IAAOA,EAAI5P,KAAK4P,EAAI5P,OACjQ,EAER,GAAGiO,GAAK/M,EAAIwD,YAAcxD,EAAIsD,QAAS,CAEtC,IADAqK,EAAI,EACApP,EAAI,EAAGqK,EAAI5I,EAAIwD,WAAWrD,OAAQ5B,EAAIqK,EAAGrK,IAC5CoP,EAAI8K,KAAKoR,IAAIlc,EAAGZ,EAAE/M,EAAIwD,WAAWjF,IAAI+E,QAAQnD,QAE9CwN,EAAIA,EAAI3N,EAAIsD,QAAQnD,OAAS,GAE3BwN,GAAK,GAAKA,IAAM/Q,KAAa+Q,EAAI,GACpC,EAAG,CACF,GAAGzP,EAAI+sB,YAAcruB,IAAgC,IAAnBsB,EAAI+sB,WAAoB/sB,EAAI+sB,UAAYtd,EAEzE,OADA5O,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,QAAS,OAAW,QAAS,GAAO,WAAY,OAAW,gCAAkCkX,EAAK,KAAS1I,KAAKC,UAAU,CAAE,IAAQyI,EAAK,IAAQP,EAAK,OAAQrW,IAAOA,EAAIlB,KAAKkB,EAAIlB,GAAY,OAAQ4P,IAAOA,EAAI5P,KAAK4P,EAAI5P,OAC5P,EAER4P,EAAM3P,KAAKkJ,SAASyG,EAAIrL,QACxBnF,EAAMa,KAAK+rB,UAAUpc,GACrBf,UACOe,IAIX,OAAO,GASR3P,KAAK+rB,UAAY,SAAU9qB,GAE1B,KADAA,EAAMjB,KAAKkJ,SAASjI,IACT,OAAO,EAClB,IAAI9B,EAAMa,KAAKmsB,SAASlrB,GAAK,GAI7B,OAHG9B,EAAI+sB,YAAcruB,IAAasB,EAAI+sB,WAAa,GAChD/sB,EAAI6sB,eAAiBnuB,IAAasB,EAAI6sB,cAAgB,GACtD7sB,EAAI8sB,iBAAmBpuB,IAAasB,EAAI8sB,gBAAkB,GACtD9sB,GAURa,KAAKmsB,SAAW,SAAUlrB,EAAKmrB,GAE9B,SADAnrB,EAAMjB,KAAKkJ,SAASjI,MACMmrB,EAAQxuB,EAAE0B,OAAO,CAAE,KAAS2B,EAAI6H,MAAQ9I,KAAK6E,SAASgnB,MAAM5qB,EAAI6H,OAAS7H,EAAI6H,OASxG9I,KAAKqsB,SAAW,SAAUprB,EAAK6H,GAC9B,IAA0B4F,EAAGgF,EAAIC,EAAI2Y,EAAUC,EAAU9sB,EAAGmP,EAAGjM,EAA3DqL,EAAIhO,KAAKwB,OAAO7B,KACpB,GAAG/B,EAAE8P,QAAQzM,GAAM,CAElB,IAAIyS,EAAK,EAAGC,GADZ1S,EAAMA,EAAIc,SACWX,OAAQsS,EAAKC,EAAID,IACrC1T,KAAKqsB,SAASprB,EAAIyS,GAAK5K,GAExB,OAAO,EAIR,GAFA4F,EAAI1O,KAAK6E,SAASgnB,MAClB5qB,EAAMjB,KAAKkJ,SAASjI,IAChByN,EAAE5F,KAAU7H,EAAO,OAAO,EAa9B,IAZA2N,EAAI5O,KAAKkJ,SAASjI,GAAK,KACd2N,EAAExN,SACVuB,EAAIiM,EAAEpK,SAAS,mBAEhB8nB,EAAWrrB,EAAI6H,KACfyjB,EAAWvsB,KAAK8W,SAAS7V,GACzBA,EAAI6H,KAAOA,IACK,IAAbyjB,IAAsB7d,EAAE4d,IAAc5d,EAAE4d,GAAUxb,OAASjT,GAAa0uB,IAAa7d,EAAE4d,GAAUxb,OACnG9Q,KAAKub,SAASta,EAAKyN,EAAE5F,GAAMgI,OAASjT,GAAY6Q,EAAE5F,GAAMgI,MAItDpC,EAAE4d,IAAa5d,EAAE4d,GAAUvb,UAAYlT,GAA4C,iBAAxB6Q,EAAE4d,GAAUvb,QACzE,IAAKtR,KAAKiP,EAAE4d,GAAUvb,QACrB,GAAIrC,EAAE4d,GAAUvb,QAAQI,eAAe1R,GAAI,CAC1C,GAAU,OAANA,EACH,SAEc,UAANA,GACRuO,EAAE/M,EAAIlB,IAAIgR,QAAe,OAAK/C,EAAE/M,EAAIlB,IAAIgR,QAAe,OAAK,IAAIlS,QAAQ6P,EAAE4d,GAAUvb,QAAQtR,GAAI,IAC5FmP,GAAKA,EAAE1H,YAAYwH,EAAE4d,GAAUvb,QAAQtR,KAEnCuO,EAAE/M,EAAIlB,IAAIgR,QAAQtR,KAAOiP,EAAE4d,GAAUvb,QAAQtR,KACrDuO,EAAE/M,EAAIlB,IAAIgR,QAAQtR,GAAK,KACnBmP,GAAKA,EAAE6M,WAAWhc,IAK1B,GAAGiP,EAAE4d,IAAa5d,EAAE4d,GAAUtb,SAAWnT,GAA2C,iBAAvB6Q,EAAE4d,GAAUtb,OACxE,IAAKvR,KAAKiP,EAAE4d,GAAUtb,OACrB,GAAItC,EAAE4d,GAAUtb,OAAOG,eAAe1R,GAAI,CACzC,GAAU,OAANA,EACH,SAEc,UAANA,GACRuO,EAAE/M,EAAIlB,IAAIiR,OAAc,OAAKhD,EAAE/M,EAAIlB,IAAIiR,OAAc,OAAK,IAAInS,QAAQ6P,EAAE4d,GAAUtb,OAAOvR,GAAI,IACzFkD,GAAKA,EAAEuE,YAAYwH,EAAE4d,GAAUtb,OAAOvR,KAElCuO,EAAE/M,EAAIlB,IAAIiR,OAAOvR,KAAOiP,EAAE4d,GAAUtb,OAAOvR,KACzC,SAANA,GACHuO,EAAE/M,EAAIlB,IAAIiR,OAAOvR,GAAK,IAClBkD,GAAKA,EAAEtE,KAAK,OAAQ,cAGjB2P,EAAE/M,EAAIlB,IAAIiR,OAAOvR,GACpBkD,GAAKA,EAAE8Y,WAAWhc,KAQ3B,GAAGiP,EAAE5F,GAAMiI,UAAYlT,GAAwC,iBAApB6Q,EAAE5F,GAAMiI,QAClD,IAAKtR,KAAKiP,EAAE5F,GAAMiI,QACjB,GAAIrC,EAAE5F,GAAMiI,QAAQI,eAAe1R,GAAI,CACtC,GAAU,OAANA,EACH,SAEQuO,EAAE/M,EAAIlB,IAAIgR,QAAQtR,KAAO5B,GACjCmQ,EAAE/M,EAAIlB,IAAIgR,QAAQtR,GAAKiP,EAAE5F,GAAMiI,QAAQtR,GACnCmP,IACO,UAANnP,EACHmP,EAAEhK,SAAS8J,EAAE5F,GAAMiI,QAAQtR,IAG3BmP,EAAEvQ,KAAKoB,EAAGiP,EAAE5F,GAAMiI,QAAQtR,MAId,UAANA,IACRuO,EAAE/M,EAAIlB,IAAIgR,QAAe,MAAIrC,EAAE5F,GAAMiI,QAAQtR,GAAK,IAAMuO,EAAE/M,EAAIlB,IAAIgR,QAAe,MAC7EnC,GAAKA,EAAEhK,SAAS8J,EAAE5F,GAAMiI,QAAQtR,KAKxC,GAAGiP,EAAE5F,GAAMkI,SAAWnT,GAAuC,iBAAnB6Q,EAAE5F,GAAMkI,OACjD,IAAKvR,KAAKiP,EAAE5F,GAAMkI,OACjB,GAAItC,EAAE5F,GAAMkI,OAAOG,eAAe1R,GAAI,CACrC,GAAU,OAANA,EACH,SAEQuO,EAAE/M,EAAIlB,IAAIiR,OAAOvR,KAAO5B,GAChCmQ,EAAE/M,EAAIlB,IAAIiR,OAAOvR,GAAKiP,EAAE5F,GAAMkI,OAAOvR,GACjCkD,IACO,UAANlD,EACHkD,EAAEiC,SAAS8J,EAAE5F,GAAMkI,OAAOvR,IAG1BkD,EAAEtE,KAAKoB,EAAGiP,EAAE5F,GAAMkI,OAAOvR,MAIb,SAANA,GAAwC,MAAxBuO,EAAE/M,EAAIlB,IAAIiR,OAAOvR,IACzCuO,EAAE/M,EAAIlB,IAAIiR,OAAa,KAAItC,EAAE5F,GAAMkI,OAAa,KAC5CrO,GAAKA,EAAEtE,KAAK,OAAQqQ,EAAE5F,GAAMkI,OAAa,OAE/B,UAANvR,IACRuO,EAAE/M,EAAIlB,IAAIiR,OAAc,MAAItC,EAAE5F,GAAMkI,OAAc,MAAI,IAAMhD,EAAE/M,EAAIlB,IAAIiR,OAAc,MAChFrO,GAAKA,EAAEiC,SAAS8J,EAAE5F,GAAMkI,OAAOvR,KAMvC,OAAO,IAkBT7B,EAAEE,OAAOW,SAAS+tB,OAAS,CAM1BxE,gBAAiB,EAMjByE,UAAY,SAAUnsB,EAAMosB,GAC3B,OAAOpsB,EAAO,KAAOosB,EAAU,MAIjC9uB,EAAEE,OAAOY,QAAQ8tB,OAAS,SAAUttB,EAASoF,GAC5CtE,KAAKwX,MAAQ,SAAUK,EAAK5W,EAAK0O,EAAK2H,EAAKQ,GAC1C,IAAyD,IAAtDxT,EAAOkT,MAAMxV,KAAKhC,KAAM6X,EAAK5W,EAAK0O,EAAK2H,EAAKQ,GAAmB,OAAO,EAGzE,GAFA7W,EAAMA,GAAOA,EAAIlB,GAAKkB,EAAMjB,KAAKkJ,SAASjI,KAC1C0O,EAAMA,GAAOA,EAAI5P,GAAK4P,EAAM3P,KAAKkJ,SAASyG,MAC9BA,EAAInL,SAAY,OAAO,EACnC,IAGuBhF,EAAGqK,EAHtB8iB,EAAY,gBAAR9U,EAAwBP,EAAMrW,EAAIyJ,KACzC+C,EAAI,GACJ5C,EAAI7K,KAAK6E,SAAS2nB,OAAOxE,eACzBha,EAAIhO,KAAKwB,OAAO7B,KACjB,IAAIH,EAAI,EAAGqK,EAAI8F,EAAInL,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC1CiO,EAAElB,KAAK1B,EAAImD,EAAE2B,EAAInL,SAAShF,IAAIkL,KAAOsD,EAAE2B,EAAInL,SAAShF,IAAIkL,KAAKhD,eAG9D,OADImD,IAAK8hB,EAAIA,EAAEjlB,eACRmQ,GACN,IAAK,cACJ,OAAO,EACR,IAAK,cAKJ,OAJArY,GAA0B,IAArB5B,EAAEiQ,QAAQ8e,EAAGlf,IAAcxM,EAAIyJ,MAAQzJ,EAAIyJ,KAAMG,EAAI,WAAa,mBAAqB8hB,KAE3F3sB,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,QAAS,OAAW,SAAU,GAAO,YAAa,OAAW,mBAAqBgsB,EAAI,gCAAkC9U,EAAK,KAAS1I,KAAKC,UAAU,CAAE,IAAQyI,EAAK,IAAQP,EAAK,OAAQrW,IAAOA,EAAIlB,KAAKkB,EAAIlB,GAAY,OAAQ4P,IAAOA,EAAI5P,KAAK4P,EAAI5P,OAExRP,EACR,IAAK,cAKJ,OAJAA,GAA0B,IAArB5B,EAAEiQ,QAAQ8e,EAAGlf,MAEjBzN,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,QAAS,OAAW,SAAU,GAAO,YAAa,OAAW,mBAAqBgsB,EAAI,gCAAkC9U,EAAK,KAAS1I,KAAKC,UAAU,CAAE,IAAQyI,EAAK,IAAQP,EAAK,OAAQrW,IAAOA,EAAIlB,KAAKkB,EAAIlB,GAAY,OAAQ4P,IAAOA,EAAI5P,KAAK4P,EAAI5P,OAExRP,EACR,IAAK,YAKJ,OAJAA,GAA0B,IAArB5B,EAAEiQ,QAAQ8e,EAAGlf,MAEjBzN,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,QAAS,OAAW,SAAU,GAAO,YAAa,OAAW,mBAAqBgsB,EAAI,gCAAkC9U,EAAK,KAAS1I,KAAKC,UAAU,CAAE,IAAQyI,EAAK,IAAQP,EAAK,OAAQrW,IAAOA,EAAIlB,KAAKkB,EAAIlB,GAAY,OAAQ4P,IAAOA,EAAI5P,KAAK4P,EAAI5P,OAExRP,EACR,IAAK,YAKJ,OAJAA,EAAOyB,EAAIqD,SAAWqL,EAAI5P,MAAQ+X,IAASA,EAAKE,YAAmC,IAArBpa,EAAEiQ,QAAQ8e,EAAGlf,MAE1EzN,KAAKI,MAAMhB,KAAKuB,WAAa,CAAE,MAAU,QAAS,OAAW,SAAU,GAAO,YAAa,OAAW,mBAAqBgsB,EAAI,gCAAkC9U,EAAK,KAAS1I,KAAKC,UAAU,CAAE,IAAQyI,EAAK,IAAQP,EAAK,OAAQrW,IAAOA,EAAIlB,KAAKkB,EAAIlB,GAAY,OAAQ4P,IAAOA,EAAI5P,KAAK4P,EAAI5P,OAExRP,EAET,OAAO,GAERQ,KAAKqX,YAAc,SAAU1H,EAAKzJ,EAAMoR,EAAK/J,EAAUJ,GACtD,IAAIjH,GAAQA,EAAKwE,OAAS7M,EAAW,CAKpC,GAJW,OAAR8R,IACFA,EAAM/R,EAAEE,OAAOiB,QAEhB4Q,EAAM3P,KAAKkJ,SAASyG,IAEnB,OAAOrL,EAAO+S,YAAYrV,KAAKhC,KAAM2P,EAAKzJ,EAAMoR,EAAK/J,EAAUJ,GAGhE,KADAmK,EAAMA,IAAQzZ,EAAY,OAASyZ,GAC3BzG,WAAW0G,MAAM,sBAAwBpK,IAAcnN,KAAKmN,UAAUwC,GAC7E,OAAOrL,EAAO+S,YAAYrV,KAAKhC,KAAM2P,EAAKzJ,EAAMoR,EAAK/J,EAAUJ,GAE5DjH,IAAQA,EAAO,IACnB,IAAI/G,EAAKwtB,EAAG9c,EAAKrQ,EAAGqK,EAAGmE,EAAIhO,KAAKwB,OAAO7B,KAAMkL,EAAI7K,KAAK6E,SAAS2nB,OAAOxE,eAAgBxY,EAAKxP,KAAK6E,SAAS2nB,OAAOC,UAGhH,IAFAE,EAAIxtB,EAAMa,KAAK6F,WAAW,YAC1BgK,EAAM,GACFrQ,EAAI,EAAGqK,EAAI8F,EAAInL,SAASpD,OAAQ5B,EAAIqK,EAAGrK,IAC1CqQ,EAAItD,KAAK1B,EAAImD,EAAE2B,EAAInL,SAAShF,IAAIkL,KAAOsD,EAAE2B,EAAInL,SAAShF,IAAIkL,KAAKhD,eAGhE,IADAlI,EAAI,GAC+C,IAA7C5B,EAAEiQ,QAAQhD,EAAI8hB,EAAIA,EAAEjlB,cAAemI,IACxC8c,EAAInd,EAAGxN,KAAKhC,KAAMb,IAAQK,GAAIqR,WAE/B3K,EAAKwE,KAAOiiB,EAEb,OAAOroB,EAAO+S,YAAYrV,KAAKhC,KAAM2P,EAAKzJ,EAAMoR,EAAK/J,EAAUJ,KAcjE,IAAIgY,EAAM7mB,EAASuI,cAAc,OAmGjC,GAlGAse,EAAIre,aAAa,eAAe,MAChCqe,EAAIre,aAAa,OAAO,gBACxBqe,EAAIpe,UAAY,kBAChBoe,EAAI7R,UAAY,SAChB1V,EAAEE,OAAOY,QAAQkuB,SAAW,SAAU1tB,EAASoF,GAC9CtE,KAAKiF,KAAO,WACXX,EAAOW,KAAKjD,KAAKhC,MAEjBA,KAAK2E,QACH4C,GAAG,gCAAiC3J,EAAEoK,OAAM,WAC3ChI,KAAK+a,cACH/a,OACHuH,GAAG,0CAA2C3J,EAAEoK,OAAM,WAErDhI,KAAK+F,mBAAmBnB,SAAS,wBAC/B5E,OACHuH,GAAG,sBAAuB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GAC9CK,KAAK2E,QAAQS,KAAK,4BAA4B8B,YAAY,6BACxDlH,OACHuH,GAAG,iBAAkB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GACzCK,KAAK2E,QAAQS,KAAK,4BAA4B8B,YAAY,2BAC1D,IAAiB1H,EAAGqK,EAAhB1K,GAAM,EACV,IAAIK,EAAI,EAAGqK,EAAIlK,EAAKe,SAASU,OAAQ5B,EAAIqK,EAAGrK,KAC3CL,EAAMa,KAAKkJ,SAASvJ,EAAKe,SAASlB,IAAI,KAC5BL,EAAIiC,QACbjC,EAAIqF,SAAS,oBAAoBI,SAAS,6BAG1C5E,OACHuH,GAAG,mBAAoB3J,EAAEoK,OAAM,SAAUR,EAAG7H,GAC3CK,KAAKkJ,SAASvJ,EAAKuG,MAAM,GAAMd,KAAK,mBAAmBd,SAASE,SAAS,oBAAoBI,SAAS,6BACpG5E,OACHuH,GAAG,wCAAyC3J,EAAEoK,OAAM,SAAUR,EAAG7H,GAClD,eAAX6H,EAAEsB,MAAyB9I,KAAKsU,YAAY3U,EAAKuG,OACpDlG,KAAKkJ,SAASvJ,EAAKuG,MAAM,GAAM1B,SAAS,oBAA+B,eAAXgD,EAAEsB,KAAsB,WAAW,eAAe,6BAC5G9I,OACHuH,GAAG,qBAAsB,mBAAoB3J,EAAEoK,OAAM,SAAUR,GAC9D,GAAIxH,KAAKI,MAAM+e,YAAa,CAC3B3X,EAAES,iBACF,IAAI9I,EAAMvB,EAAEivB,MAAM,cAAe,CAAEjkB,QAAUpB,EAAEoB,QAASF,QAAUlB,EAAEkB,QAASC,OAASnB,EAAEmB,OAAQF,SAAWjB,EAAEiB,SAAUkX,MAAQnY,EAAEmY,MAAOC,MAAQpY,EAAEoY,QAClJhiB,EAAE4J,EAAEY,eAAe9G,QAAQ,gBAAgBkD,SAAS,kBAAkBwB,QAAQd,QAAQ/F,MAErFa;;;;;;;;;OAUHuH,GAAG,eAAgB,oBAAoB,SAAUC,GAChDA,EAAE6R,2BACF,IAAIla,EAAMvB,EAAEivB,MAAM,QAAS,CAAEjkB,QAAUpB,EAAEoB,QAASF,QAAUlB,EAAEkB,QAASC,OAASnB,EAAEmB,OAAQF,SAAWjB,EAAEiB,WACvG7K,EAAE4J,EAAEY,eAAe9G,QAAQ,gBAAgBkD,SAAS,kBAAkBwB,QAAQd,QAAQ/F,GAAKmJ,WAE5Ff,GAAG,kBAAmB,oBAAoB,SAAUC,GACnDA,EAAE6R,2BACF,IAAIla,EAAMvB,EAAEivB,MAAM,WAAY,CAAEjkB,QAAUpB,EAAEoB,QAASF,QAAUlB,EAAEkB,QAASC,OAASnB,EAAEmB,OAAQF,SAAWjB,EAAEiB,WAC1G7K,EAAE4J,EAAEY,eAAe9G,QAAQ,gBAAgBkD,SAAS,kBAAkBwB,QAAQd,QAAQ/F,GAAKmJ,WAE5Ff,GAAG,eAAgB,6BAA8B3J,EAAEoK,OAAM,SAAUR,GAClEA,EAAE6R,2BACF,IAAIla,EAAMvB,EAAEivB,MAAM,QAAS,CAAEjkB,QAAUpB,EAAEoB,QAASF,QAAUlB,EAAEkB,QAASC,OAASnB,EAAEmB,OAAQF,SAAWjB,EAAEiB,WACvG7K,EAAE4J,EAAEY,eAAe9G,QAAQ,gBAAgBkD,SAAS,kBAAkBwB,QAAQd,QAAQ/F,GAAKmJ,UACzFtI,OACHuH,GAAG,mBAAoB,iCAAkC3J,EAAEoK,OAAM,SAAUR,GAK1E,OAJAA,EAAE6R,2BACErZ,KAAKsU,YAAY9M,EAAEY,gBACtBpI,KAAKoL,WAAW5D,EAAEY,gBAEZ,IACLpI,OACHuH,GAAG,oBAAqB,eAAgB3J,EAAEoK,OAAM,SAAUR,GACzDxH,KAAKqL,aAAa7D,EAAEY,iBAClBpI,QAENA,KAAKyG,SAAW,WACZzG,KAAK6E,SAAS+nB,UAChB5sB,KAAK2E,QAAQS,KAAK,oBAAoBO,SAEvCrB,EAAOmC,SAASzE,KAAKhC,OAEtBA,KAAKoS,YAAc,SAASnR,EAAKuR,EAAMjF,EAAUkF,GAEhD,GADAxR,EAAMqD,EAAO8N,YAAY/P,MAAMrC,KAAMiC,WAC7B,CACP,IAAI9C,EAAMgmB,EAAIpS,WAAU,IAE4B,IAAjDnV,EAAEiQ,QAAQ5M,EAAIlB,GAAIC,KAAKI,MAAMhB,KAAKsB,YAAoBvB,EAAI4H,WAAa,4BACvE/G,KAAKI,MAAMhB,KAAK0B,SAAWd,KAAKI,MAAMhB,KAAK0B,UAAYG,EAAIlB,KAAMZ,EAAI4H,WAAa,4BACrF9F,EAAIsS,aAAapU,EAAK8B,EAAI+R,WAAW,IAEtC,OAAO/R,IAKN3C,EAASwuB,iBAAmBC,QAAUA,OAAO/tB,OAAQ,CACvD,IAAIguB,EAAQD,OAAO/tB,OAAOiuB,YAAYnrB,WACtCkrB,EAAME,gBAAkB,WACvB,IAAqC1tB,EAAjCiO,EAAI,CAAErO,KAAO,GAAIV,QAAU,IAC/B,IAAIc,KAAK5B,EAAEE,OAAOY,QACdd,EAAEE,OAAOY,QAAQyS,eAAe3R,IAAMQ,KAAK8R,WAAWtS,KACxDiO,EAAE/O,QAAQ6N,KAAK/M,GACZQ,KAAKmtB,aAAa3tB,IAAM2P,KAAKc,MAAMjQ,KAAKmtB,aAAa3tB,MACvDiO,EAAEjO,GAAK2P,KAAKc,MAAMjQ,KAAKmtB,aAAa3tB,MAIvC,IAAIA,KAAK5B,EAAEE,OAAOW,SAASW,KACvBxB,EAAEE,OAAOW,SAASW,KAAK+R,eAAe3R,IAAMQ,KAAK8R,WAAWtS,KAC9DiO,EAAErO,KAAKI,GAAK2P,KAAKc,MAAMjQ,KAAKmtB,aAAa3tB,KAAOQ,KAAKmtB,aAAa3tB,IAGpE5B,EAAEoC,MAAMlC,OAAO2P,IAGhB,IACCnP,EAASwuB,gBAAgB,gBAAiB,CAAEhrB,UAAWkrB,IACtD,MAAM3rB,QA/tQkB,+BAH5B,I,qBCDA,kBA4BC,IAASmG,IAA+Q,WAAW,IAAI4lB,EAAO1vB,EAAO2vB,EAAQ,OAAO,SAAU7lB,EAAEkH,EAAEie,EAAEre,GAAG,SAASzD,EAAEhC,EAAEykB,GAAG,IAAIX,EAAE9jB,GAAG,CAAC,IAAI6F,EAAE7F,GAAG,CAAC,IAAIlG,EAAkB,mBAAT4qB,SAAqBA,QAAQ,IAAID,GAAG3qB,EAAE,OAAOA,EAAEkG,GAAE,GAAI,GAAGrJ,EAAE,OAAOA,EAAEqJ,GAAE,GAAI,IAAIyG,EAAE,IAAIke,MAAM,uBAAuB3kB,EAAE,KAAK,MAAMyG,EAAEme,KAAK,mBAAmBne,EAAE,IAAI9B,EAAEmf,EAAE9jB,GAAG,CAACwkB,QAAQ,IAAI3e,EAAE7F,GAAG,GAAG7G,KAAKwL,EAAE6f,SAAQ,SAAS7lB,GAAG,IAAImlB,EAAEje,EAAE7F,GAAG,GAAGrB,GAAG,OAAOqD,EAAE8hB,GAAInlB,KAAIgG,EAAEA,EAAE6f,QAAQ7lB,EAAEkH,EAAEie,EAAEre,GAAG,OAAOqe,EAAE9jB,GAAGwkB,QAAkD,IAA1C,IAAI7tB,EAAkB,mBAAT+tB,SAAqBA,QAAgB1kB,EAAE,EAAEA,EAAEyF,EAAElN,OAAOyH,IAAIgC,EAAEyD,EAAEzF,IAAI,OAAOgC,EAAvb,CAA2b,CAAC6iB,EAAE,CAAC,SAASH,EAAQ7vB,EAAO2vB,GAC5xB,aACA3vB,EAAO2vB,QAAU,SAASM,GAC1B,IAAIC,EAAmBD,EAAQE,kBAC/B,SAASC,EAAIC,GACT,IAAIC,EAAM,IAAIJ,EAAiBG,GAC3BE,EAAUD,EAAIC,UAIlB,OAHAD,EAAIE,WAAW,GACfF,EAAIG,YACJH,EAAIpuB,OACGquB,EAGXN,EAAQG,IAAM,SAAUC,GACpB,OAAOD,EAAIC,IAGfJ,EAAQ7rB,UAAUgsB,IAAM,WACpB,OAAOA,EAAI9tB,SAKb,IAAIouB,EAAE,CAAC,SAASb,EAAQ7vB,EAAO2vB,GACjC,aACA,IAAIgB,EACJ,IAAK,MAAM,IAAIb,MAAW,MAAOhmB,GAAI6mB,EAAiB7mB,EACtD,IAAI8mB,EAAWf,EAAQ,cACnBgB,EAAQhB,EAAQ,WAChBiB,EAAOjB,EAAQ,UAEnB,SAASkB,IACLzuB,KAAK0uB,kBAAmB,EACxB1uB,KAAK2uB,aAAc,EACnB3uB,KAAK4uB,WAAa,IAAIL,EAAM,IAC5BvuB,KAAK6uB,aAAe,IAAIN,EAAM,IAC9BvuB,KAAK8uB,oBAAqB,EAC1B9uB,KAAK+uB,oBAAqB,EAC1B,IAAIzQ,EAAOte,KACXA,KAAKgvB,YAAc,WACf1Q,EAAK2Q,gBAETjvB,KAAKkvB,UAAYZ,EAyDrB,SAASa,EAAiB1tB,EAAI2tB,EAAU1tB,GACpC1B,KAAK4uB,WAAWriB,KAAK9K,EAAI2tB,EAAU1tB,GACnC1B,KAAKqvB,aAGT,SAASC,EAAY7tB,EAAI2tB,EAAU1tB,GAC/B1B,KAAK6uB,aAAatiB,KAAK9K,EAAI2tB,EAAU1tB,GACrC1B,KAAKqvB,aAGT,SAASE,EAAoBtB,GACzBjuB,KAAK6uB,aAAaW,SAASvB,GAC3BjuB,KAAKqvB,aAlETZ,EAAM3sB,UAAU2tB,aAAe,SAAShuB,GACpC,IAAIiuB,EAAO1vB,KAAKkvB,UAGhB,OAFAlvB,KAAKkvB,UAAYztB,EACjBzB,KAAK0uB,kBAAmB,EACjBgB,GAGXjB,EAAM3sB,UAAU6tB,mBAAqB,WACjC,OAAO3vB,KAAK0uB,kBAGhBD,EAAM3sB,UAAU8tB,iBAAmB,WAC/B5vB,KAAK+uB,oBAAqB,GAG9BN,EAAM3sB,UAAU+tB,6BAA+B,WACvCrB,EAAKsB,cACL9vB,KAAK+uB,oBAAqB,IAIlCN,EAAM3sB,UAAUiuB,gBAAkB,WAC9B,OAAO/vB,KAAK2uB,aAAe3uB,KAAK8uB,oBAIpCL,EAAM3sB,UAAUkuB,WAAa,SAASxoB,EAAGyoB,GACjCA,GACAC,EAAQC,OAAOC,MAAM,UAAY5oB,aAAagmB,MAAQhmB,EAAE6oB,MAAQ7oB,GAC5D,MACJ0oB,EAAQI,KAAK,IAEbtwB,KAAKuwB,WAAW/oB,IAIxBinB,EAAM3sB,UAAUyuB,WAAa,SAAS9uB,EAAIC,GAKtC,GAJyB,IAArBO,UAAUb,SACVM,EAAMD,EACNA,EAAK,WAAc,MAAMC,IAEH,oBAAfkI,WACPA,YAAW,WACPnI,EAAGC,KACJ,QACA,IACH1B,KAAKkvB,WAAU,WACXztB,EAAGC,MAET,MAAO8F,GACL,MAAM,IAAIgmB,MAAM,oEAmBnBgB,EAAKsB,aAKNrB,EAAM3sB,UAAU0uB,YAAc,SAAU/uB,EAAI2tB,EAAU1tB,GAC9C1B,KAAK+uB,mBACLI,EAAiBntB,KAAKhC,KAAMyB,EAAI2tB,EAAU1tB,GAE1C1B,KAAKkvB,WAAU,WACXtlB,YAAW,WACPnI,EAAGO,KAAKotB,EAAU1tB,KACnB,SAKf+sB,EAAM3sB,UAAU2uB,OAAS,SAAUhvB,EAAI2tB,EAAU1tB,GACzC1B,KAAK+uB,mBACLO,EAAYttB,KAAKhC,KAAMyB,EAAI2tB,EAAU1tB,GAErC1B,KAAKkvB,WAAU,WACXztB,EAAGO,KAAKotB,EAAU1tB,OAK9B+sB,EAAM3sB,UAAU4uB,eAAiB,SAASzC,GAClCjuB,KAAK+uB,mBACLQ,EAAoBvtB,KAAKhC,KAAMiuB,GAE/BjuB,KAAKkvB,WAAU,WACXjB,EAAQ0C,wBA/BpBlC,EAAM3sB,UAAU0uB,YAAcrB,EAC9BV,EAAM3sB,UAAU2uB,OAASnB,EACzBb,EAAM3sB,UAAU4uB,eAAiBnB,GAmCrCd,EAAM3sB,UAAU8uB,YAAc,SAASC,GACnC,KAAOA,EAAMzvB,SAAW,GAAG,CACvB,IAAIK,EAAKovB,EAAMhf,QACf,GAAkB,mBAAPpQ,EAAX,CAIA,IAAI2tB,EAAWyB,EAAMhf,QACjBnQ,EAAMmvB,EAAMhf,QAChBpQ,EAAGO,KAAKotB,EAAU1tB,QALdD,EAAGkvB,oBASflC,EAAM3sB,UAAUmtB,aAAe,WAC3BjvB,KAAK4wB,YAAY5wB,KAAK6uB,cACtB7uB,KAAK8wB,SACL9wB,KAAK8uB,oBAAqB,EAC1B9uB,KAAK4wB,YAAY5wB,KAAK4uB,aAG1BH,EAAM3sB,UAAUutB,WAAa,WACpBrvB,KAAK2uB,cACN3uB,KAAK2uB,aAAc,EACnB3uB,KAAKkvB,UAAUlvB,KAAKgvB,eAI5BP,EAAM3sB,UAAUgvB,OAAS,WACrB9wB,KAAK2uB,aAAc,GAGvBjxB,EAAO2vB,QAAUoB,EACjB/wB,EAAO2vB,QAAQgB,eAAiBA,GAE9B,CAAC,UAAU,GAAG,aAAa,GAAG,SAAS,KAAK0C,EAAE,CAAC,SAASxD,EAAQ7vB,EAAO2vB,GACzE,aACA3vB,EAAO2vB,QAAU,SAASM,EAASqD,EAAUC,EAAqBC,GAClE,IAAIC,GAAa,EACbC,EAAa,SAASC,EAAG7pB,GACzBxH,KAAKsxB,QAAQ9pB,IAGb+pB,EAAiB,SAAS/pB,EAAGqY,GAC7BA,EAAQ2R,wBAAyB,EACjC3R,EAAQ4R,eAAeC,MAAMN,EAAYA,EAAY,KAAMpxB,KAAMwH,IAGjEmqB,EAAkB,SAASC,EAAS/R,GACC,IAAd,SAAjB7f,KAAK6xB,YACP7xB,KAAK8xB,iBAAiBjS,EAAQpY,SAIlCsqB,EAAkB,SAASvqB,EAAGqY,GACzBA,EAAQ2R,wBAAwBxxB,KAAKsxB,QAAQ9pB,IAGtDmmB,EAAQ7rB,UAAUmD,KAAO,SAAU2sB,GAC1BT,IACDA,GAAa,EACbxD,EAAQ7rB,UAAUkwB,eAAiBd,EAAMe,wBACzCtE,EAAQ7rB,UAAUowB,YAAchB,EAAMiB,sBAE1C,IAAIC,EAAenB,EAAoBW,GACnC5D,EAAM,IAAIL,EAAQqD,GACtBhD,EAAIgE,eAAehyB,KAAM,GACzB,IAAIyH,EAASzH,KAAKqyB,UAElB,GADArE,EAAIsE,YAAYF,GACZA,aAAwBzE,EAAS,CACjC,IAAI9N,EAAU,CACV2R,wBAAwB,EACxBvD,QAASD,EACTvmB,OAAQA,EACRgqB,eAAgBW,GAEpB3qB,EAAOiqB,MAAMV,EAAUO,OAAgB1zB,EAAWmwB,EAAKnO,GACvDuS,EAAaV,MACTC,EAAiBI,OAAiBl0B,EAAWmwB,EAAKnO,GACtDmO,EAAIuE,aAAaH,QAEjBpE,EAAI8D,iBAAiBrqB,GAEzB,OAAOumB,GAGXL,EAAQ7rB,UAAUwwB,YAAc,SAAUrxB,QAC1BpD,IAARoD,GACAjB,KAAK6xB,UAA6B,QAAjB7xB,KAAK6xB,UACtB7xB,KAAKwyB,SAAWvxB,GAEhBjB,KAAK6xB,WAA6B,QAAjB7xB,KAAK6xB,WAI9BlE,EAAQ7rB,UAAU2wB,SAAW,WACzB,OAAsC,UAAb,QAAjBzyB,KAAK6xB,YAGjBlE,EAAQ1oB,KAAO,SAAU2sB,EAASpY,GAC9B,OAAOmU,EAAQ+E,QAAQlZ,GAAOvU,KAAK2sB,MAIrC,IAAIe,EAAE,CAAC,SAASpF,EAAQ7vB,EAAO2vB,GACjC,aACA,IAAI3a,OACmB,IAAZib,IAAyBjb,EAAMib,GAM1C,IAAIiF,EAAWrF,EAAQ,YAARA,GACfqF,EAASC,WANT,WACI,IAAUlF,IAAYiF,IAAUjF,EAAUjb,GAC1C,MAAOlL,IACP,OAAOorB,GAIXl1B,EAAO2vB,QAAUuF,GAEf,CAAC,YAAY,KAAKE,EAAE,CAAC,SAASvF,EAAQ7vB,EAAO2vB,GAC/C,aACA,IAAI0F,EAAKhG,OAAO/tB,OAChB,GAAI+zB,EAAI,CACJ,IAAIC,EAAcD,EAAG,MACjBE,EAAcF,EAAG,MACrBC,EAAY,SAAWC,EAAY,SAAW,EAGlDv1B,EAAO2vB,QAAU,SAASM,GAC1B,IAAIa,EAAOjB,EAAQ,UACf2F,EAAc1E,EAAK0E,YAqEvB,SAASC,EAAOlyB,GAGZ,OAdJ,SAAsBA,EAAKmyB,GACvB,IAAI3xB,EAEJ,GADW,MAAPR,IAAaQ,EAAKR,EAAImyB,IACR,mBAAP3xB,EAAmB,CAC1B,IAAI4xB,EAAU,UAAY7E,EAAK8E,YAAYryB,GAAO,mBAC9CutB,EAAK3d,SAASuiB,GAAc,IAChC,MAAM,IAAIzF,EAAQ4F,UAAUF,GAEhC,OAAO5xB,EAKE+xB,CAAavyB,EADLjB,KAAKyzB,OAEZpxB,MAAMpB,EAAKjB,MAiBzB,SAAS0zB,EAAYzyB,GACjB,OAAOA,EAAIjB,MAEf,SAAS2zB,EAAc1yB,GACnB,IAAIsJ,GAASvK,KAEb,OADIuK,EAAQ,IAAGA,EAAQmP,KAAKoR,IAAI,EAAGvgB,EAAQtJ,EAAIG,SACxCH,EAAIsJ,GA9FIikB,EAAKoF,aAyExBjG,EAAQ7rB,UAAUE,KAAO,SAAUoxB,GAC/B,IAAIxxB,EAAO,GAAGG,MAAMC,KAAKC,UAAW,GAWpC,OADAL,EAAK2K,KAAK6mB,GACHpzB,KAAK0xB,MAAMyB,OAAQt1B,OAAWA,EAAW+D,OAAM/D,IAW1D8vB,EAAQ7rB,UAAUuS,IAAM,SAAUwf,GAC9B,IACIC,EACJ,GAFuC,iBAAjBD,EAUlBC,EAASH,OAPT,GAAIT,EAAa,CACb,IAAIa,QAlGZC,GAkGoCH,GAC5BC,EAAyB,OAAhBC,EAAuBA,EAAcL,OAE9CI,EAASJ,EAKjB,OAAO1zB,KAAK0xB,MAAMoC,OAAQj2B,OAAWA,EAAWg2B,OAAch2B,MAIhE,CAAC,SAAS,KAAKo2B,EAAE,CAAC,SAAS1G,EAAQ7vB,EAAO2vB,GAC5C,aACA3vB,EAAO2vB,QAAU,SAASM,EAASuG,EAAcC,EAAcjD,GAC/D,IAAI1C,EAAOjB,EAAQ,UACf6G,EAAW5F,EAAK4F,SAChBC,EAAW7F,EAAK6F,SAChBC,EAAQ3G,EAAQ4G,OAEpB5G,EAAQ7rB,UAAiB,MAAI6rB,EAAQ7rB,UAAUoX,OAAS,WACpD,IAAKgY,EAAMsD,eAAgB,OAAOx0B,KAAKy0B,MAAM,4BAI7C,IAFA,IAAIxG,EAAUjuB,KACV00B,EAAQzG,EACLA,EAAQ0G,kBAAkB,CAC7B,IAAK1G,EAAQ2G,UAAUF,GAAQ,CACvBA,EAAMG,eACNH,EAAMI,YAAY5b,SAElBwb,EAAMK,kBAEV,MAGJ,IAAIzwB,EAAS2pB,EAAQ+G,oBACrB,GAAc,MAAV1wB,IAAmBA,EAAOqwB,iBAAkB,CACxC1G,EAAQ4G,eACR5G,EAAQ6G,YAAY5b,SAEpB+U,EAAQ8G,kBAEZ,MAEI9G,EAAQ4G,gBAAgB5G,EAAQ6G,YAAY5b,SAChD+U,EAAQgH,sBACRP,EAAQzG,EACRA,EAAU3pB,IAKtBqpB,EAAQ7rB,UAAUozB,oBAAsB,WACpCl1B,KAAKm1B,8BAGTxH,EAAQ7rB,UAAUszB,6BAA+B,WAC7C,YAA2Cv3B,IAApCmC,KAAKm1B,4BACLn1B,KAAKm1B,4BAA8B,GAG9CxH,EAAQ7rB,UAAU8yB,UAAY,SAASS,GACnC,OAAIA,IAAcr1B,MACdA,KAAKm1B,2BAA6B,EAClCn1B,KAAKs1B,mBACE,IAEPt1B,KAAKk1B,wBACDl1B,KAAKo1B,iCACLp1B,KAAKs1B,mBACE,KAMnB3H,EAAQ7rB,UAAUizB,gBAAkB,WAC5B/0B,KAAKo1B,gCACLp1B,KAAKu1B,WAIb5H,EAAQ7rB,UAAUyzB,QAAU,WACnBv1B,KAAK20B,mBACV30B,KAAKw1B,gBACLlB,EAAM7D,OAAOzwB,KAAKy1B,gBAAiBz1B,UAAMnC,KAG7C8vB,EAAQ7rB,UAAU2zB,gBAAkB,WAC5Bz1B,KAAK01B,UAAY,GAAG11B,KAAK2wB,mBAGjChD,EAAQ7rB,UAAU6zB,eAAiB,WAC/B31B,KAAK41B,oBAAiB/3B,GAG1B8vB,EAAQ7rB,UAAU6yB,eAAiB,WAC/B,OAAO30B,KAAK61B,cAAgB71B,KAAK81B,gBAGrCnI,EAAQ7rB,UAAUi0B,cAAgB,WAC9B,OAAO/1B,KAAK61B,cAAgB71B,KAAKg2B,eAGrCrI,EAAQ7rB,UAAUm0B,kBAAoB,SAASC,EAAkBC,GAC7D,GAAI3H,EAAK9gB,QAAQwoB,GACb,IAAK,IAAI12B,EAAI,EAAGA,EAAI02B,EAAiB90B,SAAU5B,EAC3CQ,KAAKi2B,kBAAkBC,EAAiB12B,GAAI22B,QAE7C,QAAyBt4B,IAArBq4B,EACP,GAAgC,mBAArBA,GACP,IAAKC,EAAc,CACf,IAAI3uB,EAAI4sB,EAAS8B,GAAkBl0B,KAAKhC,KAAKkyB,eACzC1qB,IAAM6sB,IACNr0B,KAAKo2B,kBAAkB5uB,EAAEA,GACzB8sB,EAAM/D,WAAW/oB,EAAEA,UAI3B0uB,EAAiBG,iBAAiBr2B,OAK9C2tB,EAAQ7rB,UAAUwzB,gBAAkB,WAChC,IAAIY,EAAmBl2B,KAAKs2B,YAC5Bt2B,KAAK21B,iBACLrB,EAAM7D,OAAOzwB,KAAKi2B,kBAAmBj2B,KAAMk2B,IAG/CvI,EAAQ7rB,UAAUy0B,wBAA0B,WACpCv2B,KAAK20B,mBACL30B,KAAKi2B,kBAAkBj2B,KAAKs2B,aAAa,GACzCt2B,KAAK21B,mBAIbhI,EAAQ7rB,UAAUu0B,iBAAmB,WACjCr2B,KAAKkZ,YAKP,CAAC,SAAS,KAAKsd,EAAE,CAAC,SAASjJ,EAAQ7vB,EAAO2vB,GAC5C,aACA3vB,EAAO2vB,QAAU,SAASoJ,GAC1B,IAAIjI,EAAOjB,EAAQ,UACfmJ,EAAUnJ,EAAQ,SAASoJ,KAC3BvC,EAAW5F,EAAK4F,SAChBC,EAAW7F,EAAK6F,SAmCpB,OAjCA,SAAqBuC,EAAWpnB,EAAIye,GAChC,OAAO,SAASzmB,GACZ,IAAIqvB,EAAU5I,EAAQiE,cACtB4E,EAAe,IAAK,IAAIt3B,EAAI,EAAGA,EAAIo3B,EAAUx1B,SAAU5B,EAAG,CACtD,IAAIuc,EAAO6a,EAAUp3B,GAErB,GAAIuc,IAASyR,OACA,MAARzR,GAAgBA,EAAKja,qBAAqB0rB,OAC3C,GAAIhmB,aAAauU,EACb,OAAOqY,EAAS5kB,GAAIxN,KAAK60B,EAASrvB,QAEnC,GAAoB,mBAATuU,EAAqB,CACnC,IAAIgb,EAAmB3C,EAASrY,GAAM/Z,KAAK60B,EAASrvB,GACpD,GAAIuvB,IAAqB1C,EACrB,OAAO0C,EACJ,GAAIA,EACP,OAAO3C,EAAS5kB,GAAIxN,KAAK60B,EAASrvB,QAEnC,GAAIgnB,EAAKwI,SAASxvB,GAAI,CAEzB,IADA,IAAImvB,EAAOD,EAAQ3a,GACVlS,EAAI,EAAGA,EAAI8sB,EAAKv1B,SAAUyI,EAAG,CAClC,IAAI4B,EAAMkrB,EAAK9sB,GACf,GAAIkS,EAAKtQ,IAAQjE,EAAEiE,GACf,SAASqrB,EAGjB,OAAO1C,EAAS5kB,GAAIxN,KAAK60B,EAASrvB,IAG1C,OAAOivB,MAOb,CAAC,QAAQ,GAAG,SAAS,KAAKQ,EAAE,CAAC,SAAS1J,EAAQ7vB,EAAO2vB,GACvD,aACA3vB,EAAO2vB,QAAU,SAASM,GAC1B,IAAIuJ,GAAkB,EAClBC,EAAe,GAOnB,SAASC,IACLp3B,KAAKq3B,OAAS,IAAID,EAAQE,cAAcC,KAuB5C,SAASA,IACL,IAAIC,EAAYL,EAAa/1B,OAAS,EACtC,GAAIo2B,GAAa,EACb,OAAOL,EAAaK,GA8B5B,OA9DA7J,EAAQ7rB,UAAU21B,gBAAkB,aACpC9J,EAAQ7rB,UAAU41B,aAAe,aACjC/J,EAAQ7rB,UAAU61B,YAAc,WAAY,OAAO,MACnDhK,EAAQiK,aAAejK,EAAQ7rB,UAAU81B,aAAe,aAKxDR,EAAQt1B,UAAU41B,aAAe,gBACT75B,IAAhBmC,KAAKq3B,SACLr3B,KAAKq3B,OAAOI,gBAAkB,KAC9BN,EAAa5qB,KAAKvM,KAAKq3B,UAI/BD,EAAQt1B,UAAU61B,YAAc,WAC5B,QAAoB95B,IAAhBmC,KAAKq3B,OAAsB,CAC3B,IAAIQ,EAAQV,EAAa1D,MACrBzF,EAAM6J,EAAMJ,gBAEhB,OADAI,EAAMJ,gBAAkB,KACjBzJ,EAEX,OAAO,MAcXoJ,EAAQE,cAAgB,KACxBF,EAAQp4B,OAZR,WACI,GAAIk4B,EAAiB,OAAO,IAAIE,GAYpCA,EAAQU,0BAA4B,aACpCV,EAAQW,wBAA0B,WAC9B,IAAIC,EAAsBrK,EAAQ7rB,UAAU41B,aACxCO,EAAqBtK,EAAQ7rB,UAAU61B,YACvCO,EAAsBvK,EAAQiK,aAC9BO,EAAsBxK,EAAQ7rB,UAAU81B,aACxCQ,EAAyBzK,EAAQ7rB,UAAU21B,gBAC/CL,EAAQU,0BAA4B,WAChCnK,EAAQ7rB,UAAU41B,aAAeM,EACjCrK,EAAQ7rB,UAAU61B,YAAcM,EAChCtK,EAAQiK,aAAeM,EACvBvK,EAAQ7rB,UAAU81B,aAAeO,EACjCxK,EAAQ7rB,UAAU21B,gBAAkBW,EACpClB,GAAkB,GAEtBA,GAAkB,EAClBvJ,EAAQ7rB,UAAU41B,aAAeN,EAAQt1B,UAAU41B,aACnD/J,EAAQ7rB,UAAU61B,YAAcP,EAAQt1B,UAAU61B,YAClDhK,EAAQiK,aAAejK,EAAQ7rB,UAAU81B,aAAeL,EACxD5J,EAAQ7rB,UAAU21B,gBAAkB,WAChC,IAAIY,EAAMr4B,KAAK43B,eACXS,GAA8B,MAAvBA,EAAIZ,kBAAyBY,EAAIZ,gBAAkBz3B,QAG/Do3B,IAGL,IAAIkB,EAAE,CAAC,SAAS/K,EAAQ7vB,EAAO2vB,GACjC,aACA3vB,EAAO2vB,QAAU,SAASM,EAASyJ,GACnC,IAKImB,EACAC,EAQAC,EAdAC,EAAY/K,EAAQgL,WACpBrE,EAAQ3G,EAAQ4G,OAChBqE,EAAUrL,EAAQ,YAAYqL,QAC9BpK,EAAOjB,EAAQ,UACfsL,EAAiBrK,EAAKqK,eAGtBC,EACA,2DACAC,EAAmB,6BACnBC,EAAmB,kCACnBC,EAAoB,KACpBC,EAAc,KACdC,GAAoB,EAEpBC,IAA6C,GAA9B5K,EAAK6K,IAAI,mBAKxBC,IAA+C,GAAjC9K,EAAK6K,IAAI,uBACtBD,IAAa5K,EAAK6K,IAAI,sBAEvBnC,IAA+D,GAA1C1I,EAAK6K,IAAI,gCAC7BD,IAAa5K,EAAK6K,IAAI,+BAEvBE,EAA8D,GAA3C/K,EAAK6K,IAAI,iCAC3BC,KAAc9K,EAAK6K,IAAI,gCAE5B1L,EAAQ7rB,UAAU03B,4BAA8B,WAC5C,IAAI/xB,EAASzH,KAAKqyB,UAClB5qB,EAAOoqB,WAAiC,QAAnBpqB,EAAOoqB,UACV,QAGtBlE,EAAQ7rB,UAAU23B,gCAAkC,WACd,IAAZ,OAAjBz5B,KAAK6xB,aACV7xB,KAAK05B,2BACLpF,EAAM9D,YAAYxwB,KAAK25B,0BAA2B35B,UAAMnC,KAG5D8vB,EAAQ7rB,UAAU83B,mCAAqC,WACnDC,EAAmB,mBACWtB,OAA2B16B,EAAWmC,OAGxE2tB,EAAQ7rB,UAAUg4B,yBAA2B,WACzC95B,KAAK6xB,UAA6B,UAAjB7xB,KAAK6xB,WAG1BlE,EAAQ7rB,UAAUi4B,sBAAwB,WACtC,OAAwC,IAAf,UAAjB/5B,KAAK6xB,YAGjBlE,EAAQ7rB,UAAU63B,0BAA4B,WAC1C,GAAI35B,KAAKg6B,wBAAyB,CAC9B,IAAIC,EAASj6B,KAAKk6B,gBAClBl6B,KAAKm6B,mCACLN,EAAmB,qBACWrB,EAA4ByB,EAAQj6B,QAI1E2tB,EAAQ7rB,UAAUq4B,iCAAmC,WACjDn6B,KAAK6xB,UAA6B,OAAjB7xB,KAAK6xB,WAG1BlE,EAAQ7rB,UAAUs4B,mCAAqC,WACnDp6B,KAAK6xB,WAA6B,OAAjB7xB,KAAK6xB,WAG1BlE,EAAQ7rB,UAAUu4B,8BAAgC,WAC9C,OAAyB,OAAjBr6B,KAAK6xB,WAAsB,GAGvClE,EAAQ7rB,UAAU43B,yBAA2B,WACzC15B,KAAK6xB,UAA6B,QAAjB7xB,KAAK6xB,WAG1BlE,EAAQ7rB,UAAUw4B,2BAA6B,WAC3Ct6B,KAAK6xB,WAA6B,QAAjB7xB,KAAK6xB,UAClB7xB,KAAKq6B,kCACLr6B,KAAKo6B,qCACLp6B,KAAK45B,uCAIbjM,EAAQ7rB,UAAUk4B,sBAAwB,WACtC,OAAyB,QAAjBh6B,KAAK6xB,WAAuB,GAGxClE,EAAQ7rB,UAAU2yB,MAAQ,SAASpB,EAASkH,EAAmBtM,GAC3D,OAAOuM,EAAKnH,EAASkH,EAAmBtM,GAAWjuB,OAGvD2tB,EAAQ8M,6BAA+B,SAAUh5B,GAC7C,IAAIi5B,EAAShC,IACbF,EACkB,mBAAP/2B,EAAgC,OAAXi5B,EACQj5B,EAAK+sB,EAAKmM,WAAWD,EAAQj5B,QACtC5D,GAGnC8vB,EAAQiN,4BAA8B,SAAUn5B,GAC5C,IAAIi5B,EAAShC,IACbH,EACkB,mBAAP92B,EAAgC,OAAXi5B,EACQj5B,EAAK+sB,EAAKmM,WAAWD,EAAQj5B,QACtC5D,GAGnC,IAAIg9B,EAAyB,aAC7BlN,EAAQuJ,gBAAkB,WACtB,GAAI5C,EAAMvE,oBAAsB+K,EAAO5D,gBACnC,MAAM,IAAI1J,MAAM,sGAEpB,IAAKsN,EAAO5D,iBAAmB6D,IAA8B,CACzD,IAAIC,EAA4BrN,EAAQ7rB,UAAUm5B,mBAC9CC,EAA2BvN,EAAQ7rB,UAAUs0B,kBACjD0E,EAAO5D,iBAAkB,EACzB2D,EAAyB,WACrB,GAAIvG,EAAMvE,oBAAsB+K,EAAO5D,gBACnC,MAAM,IAAI1J,MAAM,sGAEpBG,EAAQ7rB,UAAUm5B,mBAAqBD,EACvCrN,EAAQ7rB,UAAUs0B,kBAAoB8E,EACtC9D,EAAQU,4BACRxD,EAAM1E,mBACNkL,EAAO5D,iBAAkB,GAE7BvJ,EAAQ7rB,UAAUm5B,mBAAqBE,EACvCxN,EAAQ7rB,UAAUs0B,kBAAoBgF,EACtChE,EAAQW,0BACRzD,EAAMzE,iCAIdlC,EAAQ0N,mBAAqB,WACzB,OAAOP,EAAO5D,iBAAmB6D,KAGrC,IAAIO,EAAe,WACf,IACI,GAA2B,mBAAhBC,YAA4B,CACnC,IAAIpX,EAAQ,IAAIoX,YAAY,eAE5B,OADA/M,EAAKgN,OAAOC,cAActX,GACnB,SAAS7jB,EAAM6jB,GAClB,IAAIuX,EAAW,IAAIH,YAAYj7B,EAAKoH,cAAe,CAC/Ci0B,OAAQxX,EACRyX,YAAY,IAEhB,OAAQpN,EAAKgN,OAAOC,cAAcC,IAEnC,MAAqB,mBAAV7O,OACV1I,EAAQ,IAAI0I,MAAM,eACtB2B,EAAKgN,OAAOC,cAActX,GACnB,SAAS7jB,EAAM6jB,GAClB,IAAIuX,EAAW,IAAI7O,MAAMvsB,EAAKoH,cAAe,CACzCk0B,YAAY,IAGhB,OADAF,EAASC,OAASxX,GACVqK,EAAKgN,OAAOC,cAAcC,OAGlCvX,EAAQ7lB,SAASu9B,YAAY,gBAC3BC,gBAAgB,mBAAmB,GAAO,EAAM,IACtDtN,EAAKgN,OAAOC,cAActX,GACnB,SAAS7jB,EAAM6jB,GAClB,IAAIuX,EAAWp9B,SAASu9B,YAAY,eAGpC,OAFAH,EAASI,gBAAgBx7B,EAAKoH,eAAe,GAAO,EAChDyc,IACIqK,EAAKgN,OAAOC,cAAcC,KAG5C,MAAOl0B,IACT,OAAO,WACH,OAAO,GAnCI,GAuCfu0B,EACIvN,EAAKyB,OACE,WACH,OAAOC,EAAQ8L,KAAK35B,MAAM6tB,EAASjuB,YAGlCusB,EAAKgN,OAKH,SAASl7B,GACZ,IAAI8yB,EAAa,KAAO9yB,EAAKoH,cACzBtF,EAASosB,EAAKgN,OAAOpI,GACzB,QAAKhxB,IACLA,EAAOC,MAAMmsB,EAAKgN,OAAQ,GAAGz5B,MAAMC,KAAKC,UAAW,KAC5C,IATA,WACH,OAAO,GAavB,SAASg6B,EAAoC37B,EAAM2tB,GAC/C,MAAO,CAACA,QAASA,GAGrB,IAAIiO,EAAyB,CACzBC,eAAgBF,EAChBG,iBAAkBH,EAClBI,gBAAiBJ,EACjBK,gBAAiBL,EACjBM,iBAAkBN,EAClBO,eAAgB,SAASl8B,EAAM2tB,EAASyG,GACpC,MAAO,CAACzG,QAASA,EAASyG,MAAOA,IAErC+H,QAAS,SAASn8B,EAAMm8B,GACpB,MAAO,CAACA,QAASA,IAErBC,mBAAoB,SAAUp8B,EAAM25B,EAAQhM,GACxC,MAAO,CAACgM,OAAQA,EAAQhM,QAASA,IAErC0O,iBAAkBV,GAGlBW,EAAkB,SAAUt8B,GAC5B,IAAIu8B,GAAmB,EACvB,IACIA,EAAmBd,EAAgB15B,MAAM,KAAMJ,WACjD,MAAOuF,GACL8sB,EAAM/D,WAAW/oB,GACjBq1B,GAAmB,EAGvB,IAAIC,GAAgB,EACpB,IACIA,EAAgBxB,EAAah7B,EACjB47B,EAAuB57B,GAAM+B,MAAM,KAAMJ,YACvD,MAAOuF,GACL8sB,EAAM/D,WAAW/oB,GACjBs1B,GAAgB,EAGpB,OAAOA,GAAiBD,GAmD5B,SAASE,IAAqB,OAAO,EAuBrC,SAASC,EAAoBC,EAAUvK,EAASwK,GAC5C,IAAIjP,EAAUjuB,KACd,IACIi9B,EAASvK,EAASwK,GAAQ,SAASC,GAC/B,GAAwB,mBAAbA,EACP,MAAM,IAAI5J,UAAU,qCACA/E,EAAK3d,SAASssB,IAEtClP,EAAQmP,4BAA4BD,MAE1C,MAAO31B,GACL,OAAOA,GAIf,SAAS61B,EAAuCF,GAC5C,IAAKn9B,KAAK20B,iBAAkB,OAAO30B,KAEnC,IAAIs9B,EAAmBt9B,KAAKs2B,iBACHz4B,IAArBy/B,EACI9O,EAAK9gB,QAAQ4vB,GACbA,EAAiB/wB,KAAK4wB,GAEtBn9B,KAAKuyB,aAAa,CAAC+K,EAAkBH,IAGzCn9B,KAAKuyB,aAAa4K,GAI1B,SAASI,IACL,OAAOv9B,KAAK41B,eAGhB,SAAS4H,EAAwBL,GAC7Bn9B,KAAK41B,eAAiBuH,EAG1B,SAASM,IACLz9B,KAAKg1B,yBAAsBn3B,EAC3BmC,KAAK41B,oBAAiB/3B,EAG1B,SAAS6/B,EAA0Bp5B,EAAQq5B,GACvC,GAAoB,IAAP,EAARA,GAAkB,CACnB39B,KAAKg1B,oBAAsB1wB,EAC3B,IAAIs5B,EAA4Bt5B,EAAO6wB,gCACLt3B,IAA9B+/B,IACAA,EAA4B,GAEhCt5B,EAAO6wB,2BAA6ByI,EAA4B,EAEhD,IAAP,EAARD,IAAoBr5B,EAAOmuB,YAC5BzyB,KAAKsyB,YAAYhuB,EAAOkuB,UA5HhC7E,EAAQmN,OAAS,SAASj3B,GAStB,GAPI,oBADJA,EAAOkpB,OAAOlpB,MAENA,EAAKqzB,gBACLvJ,EAAQuJ,mBACArzB,EAAKqzB,iBAAmBvJ,EAAQ0N,sBACxCR,KAGJ,aAAch3B,EAAM,CACpB,IAAIg6B,EAAiBh6B,EAAKy1B,SAC1BwB,EAAOxB,WAAauE,EACpBtE,EAAmBuB,EAAOxB,SAEtB9K,EAAKwI,SAAS6G,IACV,qBAAsBA,IACtBtE,IAAqBsE,EAAetE,kBAIhD,GAAI,iBAAkB11B,GAAQA,EAAK2wB,eAAiBsG,EAAOtG,aAAc,CACrE,GAAIF,EAAMvE,kBACN,MAAM,IAAIvC,MACN,wDAERG,EAAQ7rB,UAAUg8B,uBACdL,EACJ9P,EAAQ7rB,UAAUkwB,eAAiB0L,EACnC/P,EAAQ7rB,UAAUw0B,UAAYiH,EAC9B5P,EAAQ7rB,UAAUywB,aAAeiL,EACjC7P,EAAQ7rB,UAAUs7B,4BACdC,EACJ1P,EAAQ7rB,UAAUmf,SAAW+b,EAC7B/K,EAAwByL,EACxB5C,EAAOtG,cAAe,EAW1B,MATI,eAAgB3wB,IACZA,EAAKk6B,aAAejD,EAAOiD,YAC3BjD,EAAOiD,YAAa,EACpBpQ,EAAQ7rB,UAAUk8B,WAAapB,IACvB/4B,EAAKk6B,YAAcjD,EAAOiD,aAClCjD,EAAOiD,YAAa,EACpBpQ,EAAQ7rB,UAAUk8B,WAAajB,IAGhCpP,GAKXA,EAAQ7rB,UAAUk8B,WAAajB,EAC/BpP,EAAQ7rB,UAAUmf,SAAW,SAASgc,EAAUvK,EAASwK,GACrD,IACID,EAASvK,EAASwK,GACpB,MAAO11B,GACL,OAAOA,IAGfmmB,EAAQ7rB,UAAUw0B,UAAY,aAC9B3I,EAAQ7rB,UAAUywB,aAAe,SAAU0L,KAC3CtQ,EAAQ7rB,UAAUs7B,4BAA8B,SAASD,KAGzDxP,EAAQ7rB,UAAUm5B,mBAAqB,aACvCtN,EAAQ7rB,UAAUs0B,kBAAoB,aACtCzI,EAAQ7rB,UAAUg8B,uBAAyB,aAC3CnQ,EAAQ7rB,UAAUkwB,eAAiB,SAAU1tB,EAAQq5B,KAmErD,IAAI1L,EALJ,SAA8B3tB,EAAQq5B,GACd,IAAP,EAARA,IAAoBr5B,EAAOmuB,YAC5BzyB,KAAKsyB,YAAYhuB,EAAOkuB,WAKhC,SAASL,IACL,IAAInE,EAAMhuB,KAAKwyB,SACf,YAAY30B,IAARmwB,GACIA,aAAeL,EACXK,EAAIkQ,cACGlQ,EAAIxU,aAEX,EAILwU,EAGX,SAASmN,IACLn7B,KAAKq3B,OAAS,IAAIC,EAAct3B,KAAK43B,gBAGzC,SAASwD,EAAgCr4B,EAAOo7B,GAC5C,GAAItF,EAAe91B,GAAQ,CACvB,IAAI80B,EAAQ73B,KAAKq3B,OAIjB,QAHcx5B,IAAVg6B,GACIsG,IAAYtG,EAAQA,EAAMuG,cAEpBvgC,IAAVg6B,EACAA,EAAMwG,iBAAiBt7B,QACpB,IAAKA,EAAMu7B,iBAAkB,CAChC,IAAIC,EAASC,EAAqBz7B,GAClCyrB,EAAKiQ,kBAAkB17B,EAAO,QAC1Bw7B,EAAOlL,QAAU,KAAOkL,EAAOlO,MAAM3jB,KAAK,OAC9C8hB,EAAKiQ,kBAAkB17B,EAAO,oBAAoB,KA2D9D,SAASy3B,EAAKnH,EAASkH,EAAmBtM,GACtC,GAAK6M,EAAOxB,SAAZ,CACA,IACIjB,EADAoE,EAAU,IAAI7D,EAAQvF,GAE1B,GAAIkH,EACAtM,EAAQmI,kBAAkBqG,QACvB,GAAI3B,EAAO5D,kBAAoBmB,EAAM1K,EAAQiK,gBAChDS,EAAIgG,iBAAiB5B,OAClB,CACH,IAAI8B,EAASC,EAAqB/B,GAClCA,EAAQpM,MAAQkO,EAAOlL,QAAU,KAAOkL,EAAOlO,MAAM3jB,KAAK,MAGzDkwB,EAAgB,UAAWH,IAC5BiC,EAAkBjC,EAAS,IAAI,IAqDvC,SAASkC,EAAWtO,GAEhB,IADA,IAAIrC,EAAM,GACDxuB,EAAI,EAAGA,EAAI6wB,EAAMjvB,SAAU5B,EAAG,CACnC,IAAIo/B,EAAOvO,EAAM7wB,GACbq/B,EAAc,yBAA2BD,GACzC3F,EAAkBvzB,KAAKk5B,GACvBE,EAAkBD,GAAeE,EAAaH,GAC9CC,IAAgBC,IACZ3F,GAAwC,MAAnByF,EAAKh0B,OAAO,KACjCg0B,EAAO,OAASA,GAEpB5Q,EAAIzhB,KAAKqyB,IAGjB,OAAO5Q,EAiBX,SAASwQ,EAAqBz7B,GAC1B,IAAIstB,EAAQttB,EAAMstB,MACdgD,EAAUtwB,EAAM8N,WAGpB,OAFAwf,EAAyB,iBAAVA,GAAsBA,EAAMjvB,OAAS,EAjBxD,SAA4B2B,GAExB,IADA,IAAIstB,EAAQttB,EAAMstB,MAAMxxB,QAAQ,QAAS,IAAImgC,MAAM,MAC1Cx/B,EAAI,EAAGA,EAAI6wB,EAAMjvB,SAAU5B,EAAG,CACnC,IAAIo/B,EAAOvO,EAAM7wB,GACjB,GAAI,yBAA2Bo/B,GAAQ3F,EAAkBvzB,KAAKk5B,GAC1D,MAMR,OAHIp/B,EAAI,GAAmB,eAAduD,EAAMzC,OACf+vB,EAAQA,EAAMtuB,MAAMvC,IAEjB6wB,EAOO4O,CAAmBl8B,GAAS,CAAC,wBACpC,CACHswB,QAASA,EACThD,MAAqB,eAAdttB,EAAMzC,KAAwB+vB,EAAQsO,EAAWtO,IAIhE,SAASqO,EAAkB37B,EAAO2e,EAAOwd,GACrC,GAAuB,oBAAZC,QAAyB,CAChC,IAAI9L,EACJ,GAAI7E,EAAKwI,SAASj0B,GAAQ,CACtB,IAAIstB,EAAQttB,EAAMstB,MAClBgD,EAAU3R,EAAQwX,EAAY7I,EAAOttB,QAErCswB,EAAU3R,EAAQvX,OAAOpH,GAED,mBAAjB01B,EACPA,EAAapF,EAAS6L,GACQ,mBAAhBC,QAAQC,KACC,iBAAhBD,QAAQC,KACfD,QAAQC,IAAI/L,IAKxB,SAASwG,EAAmBv5B,EAAM++B,EAAcpF,EAAQhM,GACpD,IAAIqR,GAAkB,EACtB,IACgC,mBAAjBD,IACPC,GAAkB,EACL,qBAATh/B,EACA++B,EAAapR,GAEboR,EAAapF,EAAQhM,IAG/B,MAAOzmB,GACL8sB,EAAM/D,WAAW/oB,GAGR,uBAATlH,EACKs8B,EAAgBt8B,EAAM25B,EAAQhM,IAAaqR,GAC5CZ,EAAkBzE,EAAQ,wBAG9B2C,EAAgBt8B,EAAM2tB,GAI9B,SAASsR,EAAet+B,GACpB,IAAIogB,EACJ,GAAmB,mBAARpgB,EACPogB,EAAM,cACDpgB,EAAIX,MAAQ,aACb,QACD,CAIH,GAHA+gB,EAAMpgB,GAA+B,mBAAjBA,EAAI4P,SAClB5P,EAAI4P,WAAa2d,EAAK3d,SAAS5P,GACd,4BACFyE,KAAK2b,GACtB,IAEIA,EADalS,KAAKC,UAAUnO,GAGhC,MAAMuG,IAIS,IAAf6Z,EAAIjgB,SACJigB,EAAM,iBAGd,MAAQ,KAGZ,SAAcA,GAEV,OAAIA,EAAIjgB,OADO,GAEJigB,EAEJA,EAAIxO,OAAO,EAAG2sB,IAAgB,MARtBC,CAAKpe,GAAO,qBAW/B,SAAS0Z,IACL,MAAoC,mBAAtB2E,EAGlB,IAAIX,EAAe,WAAa,OAAO,GACnCY,EAAqB,wCACzB,SAASC,EAAchB,GACnB,IAAIiB,EAAUjB,EAAKrnB,MAAMooB,GACzB,GAAIE,EACA,MAAO,CACHC,SAAUD,EAAQ,GAClBjB,KAAMhX,SAASiY,EAAQ,GAAI,KA+CvC,SAASvI,EAAchzB,GACnBtE,KAAKo+B,QAAU95B,EACftE,KAAK+/B,iBAAmB,EACxB,IAAI3+B,EAASpB,KAAK01B,QAAU,QAAgB73B,IAAXyG,EAAuB,EAAIA,EAAOoxB,SACnEgK,EAAkB1/B,KAAMs3B,GACpBl2B,EAAS,IAAIpB,KAAKggC,UAE1BxR,EAAKyR,SAAS3I,EAAe9J,OAC7B4J,EAAQE,cAAgBA,EAExBA,EAAcx1B,UAAUk+B,QAAU,WAC9B,IAAI5+B,EAASpB,KAAK01B,QAClB,KAAIt0B,EAAS,GAAb,CAIA,IAHA,IAAI+M,EAAQ,GACR+xB,EAAe,GAEV1gC,EAAI,EAAG0G,EAAOlG,UAAenC,IAATqI,IAAsB1G,EAC/C2O,EAAM5B,KAAKrG,GACXA,EAAOA,EAAKk4B,QAGhB,IAAS5+B,GADT4B,EAASpB,KAAK01B,QAAUl2B,GACF,EAAGA,GAAK,IAAKA,EAAG,CAClC,IAAI6wB,EAAQliB,EAAM3O,GAAG6wB,WACOxyB,IAAxBqiC,EAAa7P,KACb6P,EAAa7P,GAAS7wB,GAG9B,IAASA,EAAI,EAAGA,EAAI4B,IAAU5B,EAAG,CAC7B,IACI+K,EAAQ21B,EADO/xB,EAAM3O,GAAG6wB,OAE5B,QAAcxyB,IAAV0M,GAAuBA,IAAU/K,EAAG,CAChC+K,EAAQ,IACR4D,EAAM5D,EAAQ,GAAG6zB,aAAUvgC,EAC3BsQ,EAAM5D,EAAQ,GAAGmrB,QAAU,GAE/BvnB,EAAM3O,GAAG4+B,aAAUvgC,EACnBsQ,EAAM3O,GAAGk2B,QAAU,EACnB,IAAIyK,EAAgB3gC,EAAI,EAAI2O,EAAM3O,EAAI,GAAKQ,KAEvCuK,EAAQnJ,EAAS,GACjB++B,EAAc/B,QAAUjwB,EAAM5D,EAAQ,GACtC41B,EAAc/B,QAAQ4B,UACtBG,EAAczK,QACVyK,EAAc/B,QAAQ1I,QAAU,IAEpCyK,EAAc/B,aAAUvgC,EACxBsiC,EAAczK,QAAU,GAG5B,IADA,IAAI0K,EAAqBD,EAAczK,QAAU,EACxC7rB,EAAIrK,EAAI,EAAGqK,GAAK,IAAKA,EAC1BsE,EAAMtE,GAAG6rB,QAAU0K,EACnBA,IAEJ,WAKZ9I,EAAcx1B,UAAUu8B,iBAAmB,SAASt7B,GAChD,IAAIA,EAAMu7B,iBAAV,CACAt+B,KAAKggC,UAML,IALA,IAAIzB,EAASC,EAAqBz7B,GAC9BswB,EAAUkL,EAAOlL,QACjBgN,EAAS,CAAC9B,EAAOlO,OAEjBwH,EAAQ73B,UACKnC,IAAVg6B,GACHwI,EAAO9zB,KAAKoyB,EAAW9G,EAAMxH,MAAM2O,MAAM,QACzCnH,EAAQA,EAAMuG,SAhRtB,SAA2BiC,GAEvB,IADA,IAAIC,EAAUD,EAAO,GACZ7gC,EAAI,EAAGA,EAAI6gC,EAAOj/B,SAAU5B,EAAG,CAMpC,IALA,IAAIkwB,EAAO2Q,EAAO7gC,GACd+gC,EAAmBD,EAAQl/B,OAAS,EACpCo/B,EAAkBF,EAAQC,GAC1BE,GAAuB,EAElB52B,EAAI6lB,EAAKtuB,OAAS,EAAGyI,GAAK,IAAKA,EACpC,GAAI6lB,EAAK7lB,KAAO22B,EAAiB,CAC7BC,EAAsB52B,EACtB,MAIR,IAASA,EAAI42B,EAAqB52B,GAAK,IAAKA,EAAG,CAC3C,IAAI+0B,EAAOlP,EAAK7lB,GAChB,GAAIy2B,EAAQC,KAAsB3B,EAI9B,MAHA0B,EAAQ7M,MACR8M,IAKRD,EAAU5Q,GA0PdgR,CAAkBL,GA5RtB,SAAqCA,GACjC,IAAK,IAAI7gC,EAAI,EAAGA,EAAI6gC,EAAOj/B,SAAU5B,GACR,IAArB6gC,EAAO7gC,GAAG4B,QACR5B,EAAI,EAAI6gC,EAAOj/B,QAAWi/B,EAAO7gC,GAAG,KAAO6gC,EAAO7gC,EAAE,GAAG,MACzD6gC,EAAOvkB,OAAOtc,EAAG,GACjBA,KAwRRmhC,CAA4BN,GAC5B7R,EAAKiQ,kBAAkB17B,EAAO,QAzSlC,SAA0BswB,EAASgN,GAC/B,IAAK,IAAI7gC,EAAI,EAAGA,EAAI6gC,EAAOj/B,OAAS,IAAK5B,EACrC6gC,EAAO7gC,GAAG+M,KAAK,wBACf8zB,EAAO7gC,GAAK6gC,EAAO7gC,GAAGkN,KAAK,MAK/B,OAHIlN,EAAI6gC,EAAOj/B,SACXi/B,EAAO7gC,GAAK6gC,EAAO7gC,GAAGkN,KAAK,OAExB2mB,EAAU,KAAOgN,EAAO3zB,KAAK,MAiSGk0B,CAAiBvN,EAASgN,IACjE7R,EAAKiQ,kBAAkB17B,EAAO,oBAAoB,KAGtD,IAAI28B,EAAoB,WACpB,IAAImB,EAAsB,YACtBC,EAAmB,SAASzQ,EAAOttB,GACnC,MAAqB,iBAAVstB,EAA2BA,OAEnBxyB,IAAfkF,EAAMzC,WACYzC,IAAlBkF,EAAMswB,QACCtwB,EAAM8N,WAEV0uB,EAAex8B,IAG1B,GAAqC,iBAA1ByqB,MAAMuT,iBACsB,mBAA5BvT,MAAMkS,kBAAkC,CAC/ClS,MAAMuT,iBAAmB,EACzB9H,EAAoB4H,EACpB3H,EAAc4H,EACd,IAAIpB,EAAoBlS,MAAMkS,kBAK9B,OAHAX,EAAe,SAASH,GACpB,OAAO9F,EAAqBpzB,KAAKk5B,IAE9B,SAASxP,EAAU4R,GACtBxT,MAAMuT,iBAAmB,EACzBrB,EAAkBtQ,EAAU4R,GAC5BxT,MAAMuT,iBAAmB,GAGjC,IAYIE,EAZAC,EAAM,IAAI1T,MAEd,GAAyB,iBAAd0T,EAAI7Q,OACX6Q,EAAI7Q,MAAM2O,MAAM,MAAM,GAAGpgC,QAAQ,oBAAsB,EAIvD,OAHAq6B,EAAoB,IACpBC,EAAc4H,EACd3H,GAAoB,EACb,SAA2BtwB,GAC9BA,EAAEwnB,OAAQ,IAAI7C,OAAQ6C,OAK9B,IAAM,MAAM,IAAI7C,MAChB,MAAMhmB,GACFy5B,EAAsB,UAAWz5B,EAErC,QAAM,UAAW05B,IAAQD,GACY,iBAA1BzT,MAAMuT,iBACb9H,EAAoB4H,EACpB3H,EAAc4H,EACP,SAA2Bj4B,GAC9B2kB,MAAMuT,iBAAmB,EACzB,IAAM,MAAM,IAAIvT,MAChB,MAAMhmB,GAAKqB,EAAEwnB,MAAQ7oB,EAAE6oB,MACvB7C,MAAMuT,iBAAmB,KAIjC7H,EAAc,SAAS7I,EAAOttB,GAC1B,MAAqB,iBAAVstB,EAA2BA,EAEhB,iBAAVttB,GACS,mBAAVA,QACQlF,IAAfkF,EAAMzC,WACYzC,IAAlBkF,EAAMswB,QAGHkM,EAAex8B,GAFXA,EAAM8N,YAKd,MArEa,GAyED,oBAAZsuB,cAAmD,IAAjBA,QAAQ3E,OACjD/B,EAAe,SAAUpF,GACrB8L,QAAQ3E,KAAKnH,IAEb7E,EAAKyB,QAAUC,EAAQC,OAAOgR,MAC9B1I,EAAe,SAASpF,EAAS6L,GAC7B,IAAIkC,EAAQlC,EAAS,QAAe,QACpCC,QAAQ3E,KAAK4G,EAAQ/N,EAAU,WAE3B7E,EAAKyB,QAAyC,iBAAvB,IAAIzC,OAAa,QAChDiL,EAAe,SAASpF,EAAS6L,GAC7BC,QAAQ3E,KAAK,KAAOnH,EACR6L,EAAS,oBAAsB,iBAKvD,IAAIpE,EAAS,CACTxB,SAAUA,EACVpC,iBAAiB,EACjB1C,cAAc,EACduJ,YAAY,GAKhB,OAFI7G,GAAiBvJ,EAAQuJ,kBAEtB,CACHA,gBAAiB,WACb,OAAO4D,EAAO5D,iBAElBoC,SAAU,WACN,OAAOwB,EAAOxB,UAElB9E,aAAc,WACV,OAAOsG,EAAOtG,cAElBuJ,WAAY,WACR,OAAOjD,EAAOiD,YAElB9L,sBAAuB,WACnB,OAAOA,GAEXE,mBAAoB,WAChB,OAAOA,GAEXkP,sBA3eJ,SAA+BC,EAAanF,EAAgB77B,EAAM2tB,EACnC3pB,GAC3B,QAAoBzG,IAAhByjC,GAAgD,OAAnBnF,GAC7B5C,EAAkB,CAClB,QAAe17B,IAAXyG,GAAwBA,EAAOy1B,wBAAyB,OAC5D,GAAoC,IAAX,MAApB9L,EAAQ4D,WAA0B,OAEnCvxB,IAAMA,GAAc,KACxB,IAAIihC,EAAc,GACdC,EAAc,GAClB,GAAIrF,EAAe9E,OAAQ,CAGvB,IAFA,IAAIoK,EAAatF,EAAe9E,OAAOhH,MAAM2O,MAAM,MAC/C3O,EAAQsO,EAAW8C,GACdjiC,EAAI6wB,EAAMjvB,OAAS,EAAG5B,GAAK,IAAKA,EAAG,CACxC,IAAIo/B,EAAOvO,EAAM7wB,GACjB,IAAKu5B,EAAiBrzB,KAAKk5B,GAAO,CAC9B,IAAI8C,EAAc9C,EAAKrnB,MAAMyhB,GACzB0I,IACAH,EAAe,MAAQG,EAAY,GAC/B,IAAMA,EAAY,GAAK,IAAMA,EAAY,GAAK,KAEtD,OAIR,GAAIrR,EAAMjvB,OAAS,EACf,KAAIugC,EAAgBtR,EAAM,GAC1B,IAAS7wB,EAAI,EAAGA,EAAIiiC,EAAWrgC,SAAU5B,EAErC,GAAIiiC,EAAWjiC,KAAOmiC,EAAe,CAC7BniC,EAAI,IACJgiC,EAAc,KAAOC,EAAWjiC,EAAI,IAExC,QAMhB,IAAIoiC,EAAM,8BAAgCthC,EACtC,WAAaihC,EADP,yDAGNC,EACJvT,EAAQwG,MAAMmN,GAAK,EAAMzF,KAic7B0F,UA7OJ,SAAmBxT,EAAgByT,GAC/B,GAAK/G,IAAL,CAOA,IANA,IAIIgH,EACAC,EALAC,EAAkB5T,EAAegC,MAAM2O,MAAM,MAC7CkD,EAAiBJ,EAAczR,MAAM2O,MAAM,MAC3CmD,GAAc,EACd3K,GAAa,EAGRh4B,EAAI,EAAGA,EAAIyiC,EAAgB7gC,SAAU5B,EAE1C,GADI0C,EAAS09B,EAAcqC,EAAgBziC,IAC/B,CACRuiC,EAAgB7/B,EAAO49B,SACvBqC,EAAajgC,EAAO08B,KACpB,MAGR,IAASp/B,EAAI,EAAGA,EAAI0iC,EAAe9gC,SAAU5B,EAAG,CAC5C,IAAI0C,EACJ,GADIA,EAAS09B,EAAcsC,EAAe1iC,IAC9B,CACRwiC,EAAe9/B,EAAO49B,SACtBtI,EAAYt1B,EAAO08B,KACnB,OAGJuD,EAAa,GAAK3K,EAAY,IAAMuK,IAAkBC,GACtDD,IAAkBC,GAAgBG,GAAc3K,IAIpDuH,EAAe,SAASH,GACpB,GAAI9F,EAAqBpzB,KAAKk5B,GAAO,OAAO,EAC5C,IAAIwD,EAAOxC,EAAchB,GACzB,SAAIwD,GACIA,EAAKtC,WAAaiC,GACjBI,GAAcC,EAAKxD,MAAQwD,EAAKxD,MAAQpH,OA4MrDgD,KAAMA,EACN6H,WA/bJ,SAAoB/hC,EAAMgiC,GACtB,IAAIjP,EAAU/yB,EACV,0DAEJ,OADIgiC,IAAajP,GAAW,QAAUiP,EAAc,aAC7C9H,EAAKnH,IA4bZiE,cAAeA,EACfgE,aAAcA,EACdS,gBAAiBA,KAInB,CAAC,WAAW,GAAG,SAAS,KAAKwG,GAAG,CAAC,SAAShV,EAAQ7vB,EAAO2vB,GAC3D,aACA3vB,EAAO2vB,QAAU,SAASM,GAC1B,SAAS6U,IACL,OAAOxiC,KAAKwZ,MAEhB,SAASipB,IACL,MAAMziC,KAAKi6B,OAGftM,EAAQ7rB,UAAkB,OAC1B6rB,EAAQ7rB,UAAU4gC,WAAa,SAAUlpB,GAErC,OADIA,aAAiBmU,GAASnU,EAAMggB,8BAC7Bx5B,KAAK0xB,MACR8Q,OAAU3kC,OAAWA,EAAW,CAAC2b,MAAOA,QAAQ3b,IAGxD8vB,EAAQ7rB,UAAiB,MACzB6rB,EAAQ7rB,UAAU6gC,UAAY,SAAU1I,GACpC,OAAOj6B,KAAK0xB,MACR+Q,OAAS5kC,OAAWA,EAAW,CAACo8B,OAAQA,QAASp8B,IAGzD8vB,EAAQ7rB,UAAU8gC,WAAa,SAAU3I,GACrC,GAAIh4B,UAAUb,QAAU,EACpB,OAAOpB,KAAK0xB,WACR7zB,EAAW4kC,OAAS5kC,EAAW,CAACo8B,OAAQA,QAASp8B,GAErD,IAAIglC,EAAU5gC,UAAU,GACpBg8B,EAAU,WAAY,MAAM4E,GAChC,OAAO7iC,KAAK8iC,OAAO7I,EAAQgE,IAInCtQ,EAAQ7rB,UAAUihC,YAAc,SAAUvpB,GACtC,GAAIvX,UAAUb,QAAU,EAEpB,OADIoY,aAAiBmU,GAASnU,EAAMggB,8BAC7Bx5B,KAAK0xB,WACR7zB,EAAW2kC,OAAU3kC,EAAW,CAAC2b,MAAOA,QAAQ3b,GAEpD,IAAImlC,EAAS/gC,UAAU,GACnB+gC,aAAkBrV,GAASqV,EAAOxJ,8BACtC,IAAIyE,EAAU,WAAY,OAAO+E,GACjC,OAAOhjC,KAAK8iC,OAAOtpB,EAAOykB,MAKhC,IAAIgF,GAAG,CAAC,SAAS1V,EAAQ7vB,EAAO2vB,GAClC,aACA3vB,EAAO2vB,QAAU,SAASM,EAASqD,GACnC,IAAIkS,EAAgBvV,EAAQwV,OACxBC,EAAazV,EAAQ0V,IAEzB,SAASC,IACL,OAAOF,EAAWpjC,MAOtB2tB,EAAQ7rB,UAAUvC,KAAO,SAAUkC,GAC/B,OAAOyhC,EAAcljC,KAAMyB,EAAIuvB,EAAU,GAC9BU,MAAM4R,OAAgBzlC,OAAWA,EAAWmC,UAAMnC,IAGjE8vB,EAAQ7rB,UAAUyhC,UAAY,SAAU9hC,GACpC,OAAOyhC,EAAcljC,KAAMyB,EAAIuvB,EAAUA,IAG7CrD,EAAQpuB,KAAO,SAAUwuB,EAAUtsB,GAC/B,OAAOyhC,EAAcnV,EAAUtsB,EAAIuvB,EAAU,GAClCU,MAAM4R,OAAgBzlC,OAAWA,EAAWkwB,OAAUlwB,IAGrE8vB,EAAQ4V,UAlBR,SAA0BxV,EAAUtsB,GAChC,OAAOyhC,EAAcnV,EAAUtsB,EAAIuvB,EAAUA,MAqB/C,IAAIwS,GAAG,CAAC,SAASjW,EAAQ7vB,EAAO2vB,GAClC,aACA,IAsBIoW,EAAYC,EAtBZC,EAAMpW,EAAQ,SACdqW,EAAeD,EAAIE,OACnBrV,EAAOjB,EAAQ,UACf0S,EAAWzR,EAAKyR,SAChBxB,EAAoBjQ,EAAKiQ,kBAE7B,SAASqF,EAASC,EAAcC,GAC5B,SAASC,EAAS5Q,GACd,KAAMrzB,gBAAgBikC,GAAW,OAAO,IAAIA,EAAS5Q,GACrDoL,EAAkBz+B,KAAM,UACD,iBAAZqzB,EAAuBA,EAAU2Q,GAC5CvF,EAAkBz+B,KAAM,OAAQ+jC,GAC5BvW,MAAMkS,kBACNlS,MAAMkS,kBAAkB1/B,KAAMA,KAAKkkC,aAEnC1W,MAAMxrB,KAAKhC,MAInB,OADAigC,EAASgE,EAAUzW,OACZyW,EAIX,IAAIrL,EAAUkL,EAAS,UAAW,WAC9BK,EAAoBL,EAAS,oBAAqB,sBAClDM,EAAeN,EAAS,eAAgB,iBACxCO,EAAiBP,EAAS,iBAAkB,mBAChD,IACIL,EAAalQ,UACbmQ,EAAcY,WAChB,MAAM98B,GACJi8B,EAAaK,EAAS,YAAa,cACnCJ,EAAcI,EAAS,aAAc,eAMzC,IAHA,IAAIS,EAAU,sHACuDvF,MAAM,KAElEx/B,EAAI,EAAGA,EAAI+kC,EAAQnjC,SAAU5B,EACS,mBAAhCqC,MAAMC,UAAUyiC,EAAQ/kC,MAC/B6kC,EAAeviC,UAAUyiC,EAAQ/kC,IAAMqC,MAAMC,UAAUyiC,EAAQ/kC,KAIvEmkC,EAAIa,eAAeH,EAAeviC,UAAW,SAAU,CACnD0X,MAAO,EACPirB,cAAc,EACdC,UAAU,EACVC,YAAY,IAEhBN,EAAeviC,UAAyB,eAAI,EAC5C,IAAI8iC,EAAQ,EAmBZ,SAASC,EAAiBxR,GACtB,KAAMrzB,gBAAgB6kC,GAClB,OAAO,IAAIA,EAAiBxR,GAChCoL,EAAkBz+B,KAAM,OAAQ,oBAChCy+B,EAAkBz+B,KAAM,UAAWqzB,GACnCrzB,KAAK8kC,MAAQzR,EACbrzB,KAAoB,eAAI,EAEpBqzB,aAAmB7F,OACnBiR,EAAkBz+B,KAAM,UAAWqzB,EAAQA,SAC3CoL,EAAkBz+B,KAAM,QAASqzB,EAAQhD,QAClC7C,MAAMkS,mBACblS,MAAMkS,kBAAkB1/B,KAAMA,KAAKkkC,aA9B3CG,EAAeviC,UAAU+O,SAAW,WAChC,IAAIk0B,EAASljC,MAAc,EAAR+iC,EAAY,GAAGl4B,KAAK,KACnCshB,EAAM,KAAO+W,EAAP,uBACVH,IACAG,EAASljC,MAAc,EAAR+iC,EAAY,GAAGl4B,KAAK,KACnC,IAAK,IAAIlN,EAAI,EAAGA,EAAIQ,KAAKoB,SAAU5B,EAAG,CAGlC,IAFA,IAAI6hB,EAAMrhB,KAAKR,KAAOQ,KAAO,4BAA8BA,KAAKR,GAAK,GACjEwlC,EAAQ3jB,EAAI2d,MAAM,MACbn1B,EAAI,EAAGA,EAAIm7B,EAAM5jC,SAAUyI,EAChCm7B,EAAMn7B,GAAKk7B,EAASC,EAAMn7B,GAG9BmkB,IADA3M,EAAM2jB,EAAMt4B,KAAK,OACJ,KAGjB,OADAk4B,IACO5W,GAmBXiS,EAAS4E,EAAkBrX,OAE3B,IAAIyX,EAAazX,MAA8B,uBAC1CyX,IACDA,EAAarB,EAAa,CACtBO,kBAAmBA,EACnBC,aAAcA,EACdS,iBAAkBA,EAClBK,eAAgBL,EAChBR,eAAgBA,IAEpBV,EAAIa,eAAehX,MAAO,yBAA0B,CAChDhU,MAAOyrB,EACPP,UAAU,EACVC,YAAY,EACZF,cAAc,KAItB/mC,EAAO2vB,QAAU,CACbG,MAAOA,MACP+F,UAAWkQ,EACXa,WAAYZ,EACZS,kBAAmBc,EAAWd,kBAC9BU,iBAAkBI,EAAWJ,iBAC7BT,aAAca,EAAWb,aACzBC,eAAgBY,EAAWZ,eAC3BzL,QAASA,IAGX,CAAC,QAAQ,GAAG,SAAS,KAAKuM,GAAG,CAAC,SAAS5X,EAAQ7vB,EAAO2vB,GACxD,IAAI+X,EAAQ,WACR,aACA,YAAgBvnC,IAATmC,KAFC,GAKZ,GAAIolC,EACA1nC,EAAO2vB,QAAU,CACbwW,OAAQ9W,OAAO8W,OACfW,eAAgBzX,OAAOyX,eACvBa,cAAetY,OAAOuY,yBACtB3O,KAAM5J,OAAO4J,KACb4O,MAAOxY,OAAOyY,oBACdC,eAAgB1Y,OAAO0Y,eACvB/3B,QAAS7L,MAAM6L,QACf03B,MAAOA,EACPM,mBAAoB,SAASzkC,EAAK0kC,GAC9B,IAAIC,EAAa7Y,OAAOuY,yBAAyBrkC,EAAK0kC,GACtD,QAAWC,IAAcA,EAAWlB,WAAYkB,EAAWva,WAGhE,CACH,IAAIwa,EAAM,GAAG10B,eACTkQ,EAAM,GAAGxQ,SACTmc,EAAQ,GAAGkX,YAAYpiC,UAEvBgkC,EAAa,SAAUj9B,GACvB,IAAImlB,EAAM,GACV,IAAK,IAAIviB,KAAO5C,EACRg9B,EAAI7jC,KAAK6G,EAAG4C,IACZuiB,EAAIzhB,KAAKd,GAGjB,OAAOuiB,GAkCXtwB,EAAO2vB,QAAU,CACb3f,QAVe,SAAUzM,GACzB,IACI,MAAyB,mBAAlBogB,EAAIrf,KAAKf,GAEpB,MAAMuG,GACF,OAAO,IAMXmvB,KAAMmP,EACNP,MAAOO,EACPtB,eA/BuB,SAAU37B,EAAG4C,EAAKs6B,GAEzC,OADAl9B,EAAE4C,GAAOs6B,EAAKvsB,MACP3Q,GA8BPw8B,cApCsB,SAASx8B,EAAG4C,GAClC,MAAO,CAAC+N,MAAO3Q,EAAE4C,KAoCjBo4B,OA5Be,SAAU5iC,GACzB,OAAOA,GA4BPwkC,eAzBuB,SAAUxkC,GACjC,IACI,OAAO8rB,OAAO9rB,GAAKijC,YAAYpiC,UAEnC,MAAO0F,GACH,OAAOwlB,IAqBXoY,MAAOA,EACPM,mBAAoB,WAChB,OAAO,MAKjB,IAAIM,GAAG,CAAC,SAASzY,EAAQ7vB,EAAO2vB,GAClC,aACA3vB,EAAO2vB,QAAU,SAASM,EAASqD,GACnC,IAAIiV,EAAatY,EAAQlY,IAEzBkY,EAAQ7rB,UAAU0D,OAAS,SAAU/D,EAAIvC,GACrC,OAAO+mC,EAAWjmC,KAAMyB,EAAIvC,EAAS8xB,IAGzCrD,EAAQnoB,OAAS,SAAUuoB,EAAUtsB,EAAIvC,GACrC,OAAO+mC,EAAWlY,EAAUtsB,EAAIvC,EAAS8xB,MAI3C,IAAIkV,GAAG,CAAC,SAAS3Y,EAAQ7vB,EAAO2vB,GAClC,aACA3vB,EAAO2vB,QAAU,SAASM,EAASsD,EAAqBwF,GACxD,IAAIjI,EAAOjB,EAAQ,UACf4W,EAAoBxW,EAAQwW,kBAC5B9P,EAAW7F,EAAK6F,SAChB8R,EAAc5Y,EAAQ,iBAARA,CAA0BkJ,GAE5C,SAAS2P,EAA0BnY,EAASnlB,EAAMm1B,GAC9Cj+B,KAAKiuB,QAAUA,EACfjuB,KAAK8I,KAAOA,EACZ9I,KAAKi+B,QAAUA,EACfj+B,KAAKqmC,QAAS,EACdrmC,KAAKsmC,cAAgB,KAOzB,SAASC,EAA6BC,GAClCxmC,KAAKwmC,eAAiBA,EAO1B,SAASC,EAAYpO,EAAK4B,GACtB,OAAyB,MAArB5B,EAAIiO,gBACArkC,UAAUb,OAAS,EACnBi3B,EAAIiO,cAAchV,QAAQ2I,GAE1B5B,EAAIiO,cAAc/Q,UAEtB8C,EAAIiO,cAAgB,MACb,GAKf,SAASI,IACL,OAAOF,EAAexkC,KAAKhC,KAAMA,KAAKiuB,QAAQoE,UAAU6H,iBAE5D,SAAS7qB,EAAK4qB,GACV,IAAIwM,EAAYzmC,KAAMi6B,GAEtB,OADA5F,EAAS7sB,EAAIyyB,EACN5F,EAEX,SAASmS,EAAeG,GACpB,IAAI1Y,EAAUjuB,KAAKiuB,QACfgQ,EAAUj+B,KAAKi+B,QAEnB,IAAKj+B,KAAKqmC,OAAQ,CACdrmC,KAAKqmC,QAAS,EACd,IAAIrY,EAAMhuB,KAAK4mC,mBACT3I,EAAQj8B,KAAKisB,EAAQiE,eACrB+L,EAAQj8B,KAAKisB,EAAQiE,cAAeyU,GAC1C,GAAI3Y,IAAQyI,EACR,OAAOzI,EACJ,QAAYnwB,IAARmwB,EAAmB,CAC1BC,EAAQ6L,2BACR,IAAI1H,EAAenB,EAAoBjD,EAAKC,GAC5C,GAAImE,aAAwBzE,EAAS,CACjC,GAA0B,MAAtB3tB,KAAKsmC,cAAuB,CAC5B,GAAIlU,EAAa0D,eAAgB,CAC7B,IAAImE,EACA,IAAIkK,EAAkB,8BAG1B,OAFAlW,EAAQmI,kBAAkB6D,GAC1B5F,EAAS7sB,EAAIyyB,EACN5F,EACAjC,EAAayD,aACpBzD,EAAagL,4BACT,IAAImJ,EAA6BvmC,OAG7C,OAAOoyB,EAAaV,MAChBgV,EAASr3B,OAAMxR,EAAWmC,UAAMnC,KAKhD,OAAIowB,EAAQ4Y,cACRJ,EAAYzmC,MACZq0B,EAAS7sB,EAAIm/B,EACNtS,IAEPoS,EAAYzmC,MACL2mC,GAyDf,OAjIAP,EAA0BtkC,UAAU8kC,iBAAmB,WACnD,OAAqB,IAAd5mC,KAAK8I,MAOhBy9B,EAA6BzkC,UAAUu0B,iBAAmB,WACtDoQ,EAAYzmC,KAAKwmC,iBAmErB7Y,EAAQ7rB,UAAUglC,aAAe,SAAS7I,EAASn1B,EAAMi+B,EAAS13B,GAC9D,MAAuB,mBAAZ4uB,EAA+Bj+B,KAAKgnC,OACxChnC,KAAK0xB,MAAMqV,EACA13B,OACAxR,EACA,IAAIuoC,EAA0BpmC,KAAM8I,EAAMm1B,QAC1CpgC,IAGtB8vB,EAAQ7rB,UAAUmlC,OAClBtZ,EAAQ7rB,UAAmB,QAAI,SAAUm8B,GACrC,OAAOj+B,KAAK8mC,aAAa7I,EACA,EACAuI,EACAA,IAI7B7Y,EAAQ7rB,UAAUolC,IAAM,SAAUjJ,GAC9B,OAAOj+B,KAAK8mC,aAAa7I,EAAS,EAAGuI,IAGzC7Y,EAAQ7rB,UAAUqlC,SAAW,SAAUC,GACnC,IAAIC,EAAMplC,UAAUb,OACpB,GAAW,IAARimC,EACC,OAAOrnC,KAAK8mC,aAAaM,EACA,OACAvpC,EACA2oC,GAExB,IACUhnC,EADN8nC,EAAiB,IAAIzlC,MAAMwlC,EAAM,GAClCx9B,EAAI,EACR,IAAKrK,EAAI,EAAGA,EAAI6nC,EAAM,IAAK7nC,EAAG,CAC1B,IAAIuc,EAAO9Z,UAAUzC,GACrB,IAAIgvB,EAAKwI,SAASjb,GAGd,OAAO4R,EAAQuP,OAAO,IAAI3J,UACtB,6DACmC/E,EAAK8E,YAAYvX,KAJxDurB,EAAez9B,KAAOkS,EAQ9BurB,EAAelmC,OAASyI,EACxB,IAAIo0B,EAAUh8B,UAAUzC,GACxB,OAAOQ,KAAK8mC,aAAaX,EAAYmB,EAAgBrJ,EAASj+B,MACrC,OACAnC,EACA2oC,IAK1BJ,IAGL,CAAC,iBAAiB,EAAE,SAAS,KAAKmB,GAAG,CAAC,SAASha,EAAQ7vB,EAAO2vB,GAChE,aACA3vB,EAAO2vB,QAAU,SAASM,EACAwG,EACAnD,EACAC,EACAuW,EACAtW,GAC1B,IACIqC,EADShG,EAAQ,YACEgG,UACnB/E,EAAOjB,EAAQ,UACf8G,EAAW7F,EAAK6F,SAChBD,EAAW5F,EAAK4F,SAChBqT,EAAgB,GAmBpB,SAASC,EAAaC,EAAmBvY,EAAUwY,EAAcvX,GAC7D,GAAIa,EAAMsD,eAAgB,CACtB,IAAIqT,EAAW,IAAIla,EAAQqD,GACvB8W,EAAkB9nC,KAAK8nC,gBAAkB,IAAIna,EAAQqD,GACzDhxB,KAAK+nC,SAAWF,EAASZ,QAAO,WAC5B,OAAOa,KAEXD,EAAS5M,qBACT4M,EAAStV,aAAavyB,WAERA,KAAK+nC,SAAW,IAAIpa,EAAQqD,IAClCiK,qBAEZj7B,KAAKgoC,OAAS3X,EACdrwB,KAAKioC,mBAAqBN,EAC1B3nC,KAAKkoC,UAAY9Y,EACjBpvB,KAAKmoC,gBAAatqC,EAClBmC,KAAKooC,eAAyC,mBAAjBR,EACvB,CAACA,GAAc99B,OAAO29B,GACtBA,EACNznC,KAAKqoC,gBAAkB,KACvBroC,KAAKsoC,oBAAqB,EAE9B9Z,EAAKyR,SAASyH,EAAcF,GAE5BE,EAAa5lC,UAAUymC,YAAc,WACjC,OAAyB,OAAlBvoC,KAAK+nC,UAGhBL,EAAa5lC,UAAU0mC,SAAW,WAC9BxoC,KAAK+nC,SAAW/nC,KAAKmoC,WAAa,KAC9BjX,EAAMsD,gBAA2C,OAAzBx0B,KAAK8nC,kBAC7B9nC,KAAK8nC,gBAAgBW,WACrBzoC,KAAK8nC,gBAAkB,OAI/BJ,EAAa5lC,UAAU4mC,kBAAoB,WACvC,IAAI1oC,KAAKuoC,cAAT,CACA,IAEIrmC,EACJ,QAH4D,IAA9BlC,KAAKmoC,WAAmB,OAalDnoC,KAAK+nC,SAASrQ,eACdx1B,EAASkyB,EAASp0B,KAAKmoC,WAAmB,QAAGnmC,KAAKhC,KAAKmoC,gBACLtqC,GAClDmC,KAAK+nC,SAASpQ,kBAbK,CACnB,IAAIsC,EAAS,IAAItM,EAAQwW,kBACrB,gCACJxW,EAAQgb,UAAUC,eAAiB3O,EACnCj6B,KAAK+nC,SAAS3R,kBAAkB6D,GAChCj6B,KAAK+nC,SAASrQ,eACdx1B,EAASkyB,EAASp0B,KAAKmoC,WAAkB,OAAGnmC,KAAKhC,KAAKmoC,WACLlO,GACjDj6B,KAAK+nC,SAASpQ,cAOlB33B,KAAKsoC,oBAAqB,EAC1BtoC,KAAKqoC,gBAAkB,KACvBroC,KAAK6oC,UAAU3mC,KAGnBwlC,EAAa5lC,UAAUgnC,kBAAoB,SAAStvB,GAChDxZ,KAAKqoC,gBAAkB,KACvBroC,KAAK+nC,SAASrQ,eACd,IAAIx1B,EAASkyB,EAASp0B,KAAKmoC,WAAWY,MAAM/mC,KAAKhC,KAAKmoC,WAAY3uB,GAClExZ,KAAK+nC,SAASpQ,cACd33B,KAAK6oC,UAAU3mC,IAGnBwlC,EAAa5lC,UAAUknC,iBAAmB,SAAS/O,GAC/Cj6B,KAAKqoC,gBAAkB,KACvBroC,KAAK+nC,SAAS3R,kBAAkB6D,GAChCj6B,KAAK+nC,SAASrQ,eACd,IAAIx1B,EAASkyB,EAASp0B,KAAKmoC,WAAkB,OACxCnmC,KAAKhC,KAAKmoC,WAAYlO,GAC3Bj6B,KAAK+nC,SAASpQ,cACd33B,KAAK6oC,UAAU3mC,IAGnBwlC,EAAa5lC,UAAUu0B,iBAAmB,WACtC,GAAIr2B,KAAKqoC,2BAA2B1a,EAAS,CACzC,IAAIM,EAAUjuB,KAAKqoC,gBACnBroC,KAAKqoC,gBAAkB,KACvBpa,EAAQ/U,WAIhBwuB,EAAa5lC,UAAUmsB,QAAU,WAC7B,OAAOjuB,KAAK+nC,UAGhBL,EAAa5lC,UAAUmnC,KAAO,WAC1BjpC,KAAKmoC,WAAanoC,KAAKioC,mBAAmBjmC,KAAKhC,KAAKkoC,WACpDloC,KAAKkoC,UACDloC,KAAKioC,wBAAqBpqC,EAC9BmC,KAAK8oC,uBAAkBjrC,IAG3B6pC,EAAa5lC,UAAU+mC,UAAY,SAAU3mC,GACzC,IAAI+rB,EAAUjuB,KAAK+nC,SACnB,GAAI7lC,IAAWmyB,EAEX,OADAr0B,KAAKwoC,WACDxoC,KAAKsoC,mBACEra,EAAQ/U,SAER+U,EAAQib,gBAAgBhnC,EAAOsF,GAAG,GAIjD,IAAIgS,EAAQtX,EAAOsX,MACnB,IAAoB,IAAhBtX,EAAOqM,KAEP,OADAvO,KAAKwoC,WACDxoC,KAAKsoC,mBACEra,EAAQ/U,SAER+U,EAAQ6D,iBAAiBtY,GAGpC,IAAI4Y,EAAenB,EAAoBzX,EAAOxZ,KAAK+nC,UACnD,GAAM3V,aAAwBzE,GAKL,QAJrByE,EA1IZ,SAAiC5Y,EAAOiuB,EAAe0B,GACnD,IAAK,IAAI3pC,EAAI,EAAGA,EAAIioC,EAAcrmC,SAAU5B,EAAG,CAC3C2pC,EAAYzR,eACZ,IAAIx1B,EAASkyB,EAASqT,EAAcjoC,GAAvB40B,CAA2B5a,GAExC,GADA2vB,EAAYxR,cACRz1B,IAAWmyB,EAAU,CACrB8U,EAAYzR,eACZ,IAAI1J,EAAML,EAAQuP,OAAO7I,EAAS7sB,GAElC,OADA2hC,EAAYxR,cACL3J,EAEX,IAAIoE,EAAenB,EAAoB/uB,EAAQinC,GAC/C,GAAI/W,aAAwBzE,EAAS,OAAOyE,EAEhD,OAAO,KA6HKgX,CAAwBhX,EACApyB,KAAKooC,eACLpoC,KAAK+nC,WAJrC,CAiBA,IAAIsB,GADJjX,EAAeA,EAAaC,WACAR,UAEG,IAAd,SAAXwX,IACFrpC,KAAKqoC,gBAAkBjW,EACvBA,EAAakX,OAAOtpC,KAAM,OACQ,IAAd,SAAXqpC,GACT1b,EAAQ4G,OAAO9D,OACXzwB,KAAK8oC,kBAAmB9oC,KAAMoyB,EAAa4Q,UAEb,IAAd,SAAXqG,GACT1b,EAAQ4G,OAAO9D,OACXzwB,KAAKgpC,iBAAkBhpC,KAAMoyB,EAAayQ,WAG9C7iC,KAAK0oC,yBAzBD1oC,KAAKgpC,iBACD,IAAIzV,EACA,oGAAoH10B,QAAQ,KAAMsL,OAAOqP,IACzI,oBACAxZ,KAAKgoC,OAAOhJ,MAAM,MAAMj9B,MAAM,GAAI,GAAG2K,KAAK,SA0BlEihB,EAAQgb,UAAY,SAAUhB,EAAmBzoC,GAC7C,GAAiC,mBAAtByoC,EACP,MAAM,IAAIpU,EAAU,0EAExB,IAAIqU,EAAe7a,OAAO7tB,GAAS0oC,aAC/B2B,EAAgB7B,EAChBrX,GAAQ,IAAI7C,OAAQ6C,MACxB,OAAO,WACH,IAAImZ,EAAY7B,EAAkBtlC,MAAMrC,KAAMiC,WAC1CwnC,EAAQ,IAAIF,OAAc1rC,OAAWA,EAAW+pC,EACtBvX,GAC1BrC,EAAMyb,EAAMxb,UAGhB,OAFAwb,EAAMtB,WAAaqB,EACnBC,EAAMX,uBAAkBjrC,GACjBmwB,IAIfL,EAAQgb,UAAUe,gBAAkB,SAASjoC,GACzC,GAAkB,mBAAPA,EACP,MAAM,IAAI8xB,EAAU,gCAAkC/E,EAAK8E,YAAY7xB,IAE3EgmC,EAAcl7B,KAAK9K,IAGvBksB,EAAQ8b,MAAQ,SAAU9B,GAEtB,GADAzW,EAAMmR,WAAW,kBAAmB,uBACH,mBAAtBsF,EACP,OAAOxT,EAAa,0EAExB,IAAIsV,EAAQ,IAAI/B,EAAaC,EAAmB3nC,MAC5CguB,EAAMyb,EAAMxb,UAEhB,OADAwb,EAAMR,KAAKtb,EAAQ8b,OACZzb,KAIT,CAAC,WAAW,GAAG,SAAS,KAAK2b,GAAG,CAAC,SAASpc,EAAQ7vB,EAAO2vB,GAC3D,aACA3vB,EAAO2vB,QACP,SAASM,EAASuG,EAAcjD,EAAqBD,EAAUsD,EACtDoE,GACT,IAAIlK,EAAOjB,EAAQ,UACDiB,EAAK0E,YACR1E,EAAK4F,SACL5F,EAAK6F,SAuGpB1G,EAAQjhB,KAAO,WACX,IACIjL,EADAgI,EAAOxH,UAAUb,OAAS,EAE1BqI,EAAO,GAAgC,mBAApBxH,UAAUwH,KAC7BhI,EAAKQ,UAAUwH,IA+CnB,IAAI7H,EAAO,GAAGG,MAAMC,KAAKC,WACrBR,GAAIG,EAAK6xB,MACb,IAAIzF,EAAM,IAAIkG,EAAatyB,GAAMqsB,UACjC,YAAcpwB,IAAP4D,EAAmBusB,EAAI4b,OAAOnoC,GAAMusB,KAK7C,CAAC,SAAS,KAAK6b,GAAG,CAAC,SAAStc,EAAQ7vB,EAAO2vB,GAC7C,aACA3vB,EAAO2vB,QAAU,SAASM,EACAuG,EACAC,EACAlD,EACAD,EACAE,GAC1B,IAAIwH,EAAY/K,EAAQgL,WACpBnK,EAAOjB,EAAQ,UACf6G,EAAW5F,EAAK4F,SAChBC,EAAW7F,EAAK6F,SAChBC,EAAQ3G,EAAQ4G,OAEpB,SAASuV,EAAoB/b,EAAUtsB,EAAIsoC,EAAOC,GAC9ChqC,KAAKiqC,aAAalc,GAClB/tB,KAAK+nC,SAAS9M,qBACd,IAAIP,EAAShC,IACb14B,KAAKkqC,UAAuB,OAAXxP,EAAkBj5B,EAAK+sB,EAAKmM,WAAWD,EAAQj5B,GAChEzB,KAAKmqC,iBAAmBH,IAAYhZ,EAC9B,IAAInvB,MAAM7B,KAAKoB,UACf,KACNpB,KAAKoqC,OAASL,EACd/pC,KAAKqqC,UAAY,EACjBrqC,KAAKsqC,OAAS,GACdhW,EAAM7D,OAAOzwB,KAAKuqC,WAAYvqC,UAAMnC,GA6GxC,SAAS4X,EAAIsY,EAAUtsB,EAAIvC,EAAS8qC,GAChC,GAAkB,mBAAPvoC,EACP,OAAO0yB,EAAa,gCAAkC3F,EAAK8E,YAAY7xB,IAG3E,IAAIsoC,EAAQ,EACZ,QAAgBlsC,IAAZqB,EAAuB,CACvB,GAAuB,iBAAZA,GAAoC,OAAZA,EAQ/B,OAAOyuB,EAAQuP,OAAO,IAAI3J,UACV,gDACC/E,EAAK8E,YAAYp0B,KATlC,GAAmC,iBAAxBA,EAAQsrC,YACf,OAAO7c,EAAQuP,OACX,IAAI3J,UAAU,4CACE/E,EAAK8E,YAAYp0B,EAAQsrC,eAEjDT,EAAQ7qC,EAAQsrC,YASxB,OAAO,IAAIV,EAAoB/b,EAAUtsB,EAFzCsoC,EAAyB,iBAAVA,GACXU,SAASV,IAAUA,GAAS,EAAIA,EAAQ,EACQC,GAAS/b,UAjIjEO,EAAKyR,SAAS6J,EAAqB5V,GAEnC4V,EAAoBhoC,UAAUyoC,WAAa,WACvCvqC,KAAK0qC,YAAO7sC,GAAY,IAG5BisC,EAAoBhoC,UAAU6oC,MAAQ,aAEtCb,EAAoBhoC,UAAUgnC,kBAAoB,SAAUtvB,EAAOjP,GAC/D,IAAIqgC,EAAS5qC,KAAK6qC,QACdzpC,EAASpB,KAAKoB,SACd0pC,EAAkB9qC,KAAKmqC,iBACvBJ,EAAQ/pC,KAAKoqC,OAEjB,GAAI7/B,EAAQ,GAGR,GADAqgC,EADArgC,GAAkB,EAATA,EAAc,GACPiP,EACZuwB,GAAS,IACT/pC,KAAKqqC,YACLrqC,KAAK4wB,cACD5wB,KAAKuoC,eAAe,OAAO,MAEhC,CACH,GAAIwB,GAAS,GAAK/pC,KAAKqqC,WAAaN,EAGhC,OAFAa,EAAOrgC,GAASiP,EAChBxZ,KAAKsqC,OAAO/9B,KAAKhC,IACV,EAEa,OAApBugC,IAA0BA,EAAgBvgC,GAASiP,GAEvD,IAAIyU,EAAUjuB,KAAK+nC,SACfx6B,EAAWvN,KAAKkqC,UAChB9a,EAAWnB,EAAQiE,cACvBjE,EAAQyJ,eACR,IAAI1J,EAAMoG,EAAS7mB,GAAUvL,KAAKotB,EAAU5V,EAAOjP,EAAOnJ,GACtD+6B,EAAiBlO,EAAQ0J,cAO7B,GANAzG,EAAMmQ,sBACFrT,EACAmO,EACoB,OAApB2O,EAA2B,iBAAmB,cAC9C7c,GAEAD,IAAQqG,EAER,OADAr0B,KAAKsxB,QAAQtD,EAAIxmB,IACV,EAGX,IAAI4qB,EAAenB,EAAoBjD,EAAKhuB,KAAK+nC,UACjD,GAAI3V,aAAwBzE,EAAS,CAEjC,IAAI0b,GADJjX,EAAeA,EAAaC,WACAR,UAE5B,GAA+B,IAAd,SAAXwX,GAIF,OAHIU,GAAS,GAAG/pC,KAAKqqC,YACrBO,EAAOrgC,GAAS6nB,EAChBA,EAAakX,OAAOtpC,MAAqB,GAAduK,EAAQ,KAC5B,EACJ,GAA+B,IAAd,SAAX8+B,GAEN,OAA+B,IAAd,SAAXA,IACTrpC,KAAKsxB,QAAQc,EAAayQ,YACnB,IAEP7iC,KAAKu1B,WACE,GANPvH,EAAMoE,EAAa4Q,SAS3B4H,EAAOrgC,GAASyjB,EAGpB,QADsBhuB,KAAK+qC,gBACN3pC,IACO,OAApB0pC,EACA9qC,KAAKgqC,QAAQY,EAAQE,GAErB9qC,KAAKgrC,SAASJ,IAEX,IAKfd,EAAoBhoC,UAAU8uB,YAAc,WAIxC,IAHA,IAAIC,EAAQ7wB,KAAKsqC,OACbP,EAAQ/pC,KAAKoqC,OACbQ,EAAS5qC,KAAK6qC,QACXha,EAAMzvB,OAAS,GAAKpB,KAAKqqC,UAAYN,GAAO,CAC/C,GAAI/pC,KAAKuoC,cAAe,OACxB,IAAIh+B,EAAQsmB,EAAM4C,MAClBzzB,KAAK8oC,kBAAkB8B,EAAOrgC,GAAQA,KAI9Cu/B,EAAoBhoC,UAAUkoC,QAAU,SAAUiB,EAAUL,GAIxD,IAHA,IAAIvD,EAAMuD,EAAOxpC,OACb4sB,EAAM,IAAInsB,MAAMwlC,GAChBx9B,EAAI,EACCrK,EAAI,EAAGA,EAAI6nC,IAAO7nC,EACnByrC,EAASzrC,KAAIwuB,EAAInkB,KAAO+gC,EAAOprC,IAEvCwuB,EAAI5sB,OAASyI,EACb7J,KAAKgrC,SAAShd,IAGlB8b,EAAoBhoC,UAAUgpC,gBAAkB,WAC5C,OAAO9qC,KAAKmqC,kBA4BhBxc,EAAQ7rB,UAAU2T,IAAM,SAAUhU,EAAIvC,GAClC,OAAOuW,EAAIzV,KAAMyB,EAAIvC,EAAS,OAGlCyuB,EAAQlY,IAAM,SAAUsY,EAAUtsB,EAAIvC,EAAS8qC,GAC3C,OAAOv0B,EAAIsY,EAAUtsB,EAAIvC,EAAS8qC,MAMpC,CAAC,SAAS,KAAKkB,GAAG,CAAC,SAAS3d,EAAQ7vB,EAAO2vB,GAC7C,aACA3vB,EAAO2vB,QACP,SAASM,EAASqD,EAAUC,EAAqBkD,EAAcjD,GAC/D,IAAI1C,EAAOjB,EAAQ,UACf6G,EAAW5F,EAAK4F,SAEpBzG,EAAQvrB,OAAS,SAAUX,GACvB,GAAkB,mBAAPA,EACP,MAAM,IAAIksB,EAAQ4F,UAAU,gCAAkC/E,EAAK8E,YAAY7xB,IAEnF,OAAO,WACH,IAAIusB,EAAM,IAAIL,EAAQqD,GACtBhD,EAAIiN,qBACJjN,EAAI0J,eACJ,IAAIle,EAAQ4a,EAAS3yB,GAAIY,MAAMrC,KAAMiC,WACjCk6B,EAAiBnO,EAAI2J,cAIzB,OAHAzG,EAAMmQ,sBACF7nB,EAAO2iB,EAAgB,iBAAkBnO,GAC7CA,EAAImd,sBAAsB3xB,GACnBwU,IAIfL,EAAQyd,QAAUzd,EAAa,IAAI,SAAUlsB,GACzC,GAAkB,mBAAPA,EACP,OAAO0yB,EAAa,gCAAkC3F,EAAK8E,YAAY7xB,IAE3E,IAGI+X,EAHAwU,EAAM,IAAIL,EAAQqD,GAItB,GAHAhD,EAAIiN,qBACJjN,EAAI0J,eAEAz1B,UAAUb,OAAS,EAAG,CACtB8vB,EAAMmR,WAAW,iDACjB,IAAI3gC,EAAMO,UAAU,GAChBo2B,EAAMp2B,UAAU,GACpBuX,EAAQgV,EAAK9gB,QAAQhM,GAAO0yB,EAAS3yB,GAAIY,MAAMg2B,EAAK32B,GACxB0yB,EAAS3yB,GAAIO,KAAKq2B,EAAK32B,QAEnD8X,EAAQ4a,EAAS3yB,EAAT2yB,GAEZ,IAAI+H,EAAiBnO,EAAI2J,cAIzB,OAHAzG,EAAMmQ,sBACF7nB,EAAO2iB,EAAgB,cAAenO,GAC1CA,EAAImd,sBAAsB3xB,GACnBwU,GAGXL,EAAQ7rB,UAAUqpC,sBAAwB,SAAU3xB,GAC5CA,IAAUgV,EAAK6F,SACfr0B,KAAKkpC,gBAAgB1vB,EAAMhS,GAAG,GAE9BxH,KAAK8xB,iBAAiBtY,GAAO,MAKnC,CAAC,SAAS,KAAK6xB,GAAG,CAAC,SAAS9d,EAAQ7vB,EAAO2vB,GAC7C,aACA,IAAImB,EAAOjB,EAAQ,UACf+d,EAAmB9c,EAAK8c,iBAExBzG,EADStX,EAAQ,YACSsX,iBAC1BlB,EAAMpW,EAAQ,SAOdge,EAAY,iCAChB,SAASC,EAAuBvqC,GAC5B,IAAI+sB,EACJ,GARJ,SAAwB/sB,GACpB,OAAOA,aAAeusB,OAClBmW,EAAI8B,eAAexkC,KAASusB,MAAM1rB,UAMlC2pC,CAAexqC,GAAM,EACrB+sB,EAAM,IAAI6W,EAAiB5jC,IACvBX,KAAOW,EAAIX,KACf0tB,EAAIqF,QAAUpyB,EAAIoyB,QAClBrF,EAAIqC,MAAQpvB,EAAIovB,MAEhB,IADA,IAAIsG,EAAOgN,EAAIhN,KAAK11B,GACXzB,EAAI,EAAGA,EAAIm3B,EAAKv1B,SAAU5B,EAAG,CAClC,IAAIiM,EAAMkrB,EAAKn3B,GACV+rC,EAAU7lC,KAAK+F,KAChBuiB,EAAIviB,GAAOxK,EAAIwK,IAGvB,OAAOuiB,EAGX,OADAQ,EAAKkd,+BAA+BzqC,GAC7BA,EAoBXvD,EAAO2vB,QAjBP,SAA4BY,EAAS0d,GACjC,OAAO,SAASzK,EAAK1nB,GACjB,GAAgB,OAAZyU,EAAJ,CACA,GAAIiT,EAAK,CACL,IAAI0K,EAAUJ,EAAuBF,EAAiBpK,IACtDjT,EAAQmI,kBAAkBwV,GAC1B3d,EAAQqD,QAAQsa,QACb,GAAKD,EAEL,CACH,IAAI/pC,EAAO,GAAGG,MAAMC,KAAKC,UAAW,GACpCgsB,EAAQwa,SAAS7mC,QAHjBqsB,EAAQwa,SAASjvB,GAKrByU,EAAU,SAMhB,CAAC,WAAW,GAAG,QAAQ,GAAG,SAAS,KAAK4d,GAAG,CAAC,SAASte,EAAQ7vB,EAAO2vB,GACtE,aACA3vB,EAAO2vB,QAAU,SAASM,GAC1B,IAAIa,EAAOjB,EAAQ,UACf+G,EAAQ3G,EAAQ4G,OAChBH,EAAW5F,EAAK4F,SAChBC,EAAW7F,EAAK6F,SAEpB,SAASyX,EAAcn1B,EAAKo1B,GAExB,IAAKvd,EAAK9gB,QAAQiJ,GAAM,OAAOq1B,EAAehqC,KADhChC,KAC8C2W,EAAKo1B,GACjE,IAAI/d,EACAoG,EAAS2X,GAAU1pC,MAHTrC,KAGuBkyB,cAAe,CAAC,MAAMpoB,OAAO6M,IAC9DqX,IAAQqG,GACRC,EAAM/D,WAAWvC,EAAIxmB,GAI7B,SAASwkC,EAAer1B,EAAKo1B,GACzB,IACI3c,EADUpvB,KACSkyB,cACnBlE,OAAcnwB,IAAR8Y,EACJyd,EAAS2X,GAAU/pC,KAAKotB,EAAU,MAClCgF,EAAS2X,GAAU/pC,KAAKotB,EAAU,KAAMzY,GAC1CqX,IAAQqG,GACRC,EAAM/D,WAAWvC,EAAIxmB,GAG7B,SAASykC,EAAahS,EAAQ8R,GAE1B,IAAK9R,EAAQ,CACT,IAAIiS,EAAY,IAAI1e,MAAMyM,EAAS,IACnCiS,EAAUpH,MAAQ7K,EAClBA,EAASiS,EAEb,IAAIle,EAAMoG,EAAS2X,GAAU/pC,KANfhC,KAM4BkyB,cAAe+H,GACrDjM,IAAQqG,GACRC,EAAM/D,WAAWvC,EAAIxmB,GAI7BmmB,EAAQ7rB,UAAUqqC,WAAaxe,EAAQ7rB,UAAUsqC,QAAU,SAAUL,EACA7sC,GACjE,GAAuB,mBAAZ6sC,EAAwB,CAC/B,IAAIM,EAAUL,OACEnuC,IAAZqB,GAAyB6tB,OAAO7tB,GAAS0qC,SACzCyC,EAAUP,GAEd9rC,KAAK0xB,MACD2a,EACAJ,OACApuC,EACAmC,KACA+rC,GAGR,OAAO/rC,QAIT,CAAC,SAAS,KAAKssC,GAAG,CAAC,SAAS/e,EAAQ7vB,EAAO2vB,GAC7C,aACA3vB,EAAO2vB,QAAU,WACjB,IAAIkf,EAA0B,WAC1B,OAAO,IAAIhZ,EAAU,wEAErBiZ,EAAiB,WACjB,OAAO,IAAI7e,EAAQ8e,kBAAkBzsC,KAAKqyB,YAE1C8B,EAAe,SAASyN,GACxB,OAAOjU,EAAQuP,OAAO,IAAI3J,EAAUqO,KAExC,SAAS4F,KACT,IAGI9O,EAHAgU,EAAoB,GACpBle,EAAOjB,EAAQ,UAIfmL,EADAlK,EAAKyB,OACO,WACR,IAAIjC,EAAMkC,EAAQwK,OAElB,YADY78B,IAARmwB,IAAmBA,EAAM,MACtBA,GAGC,WACR,OAAO,MAGfQ,EAAKiQ,kBAAkB9Q,EAAS,aAAc+K,GAE9C,IAAIiL,EAAMpW,EAAQ,SACdkB,EAAQlB,EAAQ,WAChB+G,EAAQ,IAAI7F,EAChBkV,EAAIa,eAAe7W,EAAS,SAAU,CAACnU,MAAO8a,IAC9C,IAAIqY,EAASpf,EAAQ,YACjBgG,EAAY5F,EAAQ4F,UAAYoZ,EAAOpZ,UAC3C5F,EAAQ2W,WAAaqI,EAAOrI,WAC5B,IAAIH,EAAoBxW,EAAQwW,kBAAoBwI,EAAOxI,kBAC3DxW,EAAQyW,aAAeuI,EAAOvI,aAC9BzW,EAAQkX,iBAAmB8H,EAAO9H,iBAClClX,EAAQuX,eAAiByH,EAAO9H,iBAChClX,EAAQ0W,eAAiBsI,EAAOtI,eAChC,IAAIrT,EAAW,aACX4b,EAAQ,GACRnW,EAAc,GACdxF,EAAsB1D,EAAQ,cAARA,CAAuBI,EAASqD,GACtDkD,EACA3G,EAAQ,kBAARA,CAA2BI,EAASqD,EACTC,EAAqBkD,EAAcqT,GAC9DpQ,EAAU7J,EAAQ,YAARA,CAAqBI,GAE/Bkf,EAAgBzV,EAAQp4B,OACxBkyB,EAAQ3D,EAAQ,kBAARA,CAA2BI,EAASyJ,GAE5CgP,GADgBlV,EAAMoG,cAEtB/J,EAAQ,YAARA,CAAqBI,EAASsD,EAAqBwF,IACnD0P,EAAc5Y,EAAQ,iBAARA,CAA0BkJ,GACxCqW,EAAqBvf,EAAQ,cAC7B8G,EAAW7F,EAAK6F,SAChBD,EAAW5F,EAAK4F,SAWpB,SAASzG,EAAQsP,GACTA,IAAajM,GAXrB,SAAe1S,EAAM2e,GACjB,GAAY,MAAR3e,GAAgBA,EAAK4lB,cAAgBvW,EACrC,MAAM,IAAI4F,EAAU,wFAExB,GAAwB,mBAAb0J,EACP,MAAM,IAAI1J,EAAU,gCAAkC/E,EAAK8E,YAAY2J,IAOvEzlB,CAAMxX,KAAMi9B,GAEhBj9B,KAAK6xB,UAAY,EACjB7xB,KAAK+sC,0BAAuBlvC,EAC5BmC,KAAKgtC,wBAAqBnvC,EAC1BmC,KAAKitC,eAAYpvC,EACjBmC,KAAKktC,gBAAarvC,EAClBmC,KAAKmtC,qBAAqBlQ,GAC1Bj9B,KAAKy3B,kBACLz3B,KAAKg+B,WAAW,iBAAkBh+B,MAqnBtC,SAASotC,EAAa3iC,GAAIzK,KAAKiuB,QAAQ6D,iBAAiBrnB,GACxD,SAAS4iC,EAAY5iC,GAAIzK,KAAKiuB,QAAQib,gBAAgBz+B,GAAG,GA4CrD,SAAS6iC,EAAU9zB,GACf,IAAIlN,EAAI,IAAIqhB,EAAQqD,GACpB1kB,EAAEygC,qBAAuBvzB,EACzBlN,EAAE0gC,mBAAqBxzB,EACvBlN,EAAE2gC,UAAYzzB,EACdlN,EAAE4gC,WAAa1zB,EAanB,OAjrBJmU,EAAQ7rB,UAAU+O,SAAW,WACzB,MAAO,oBAGX8c,EAAQ7rB,UAAUghC,OAASnV,EAAQ7rB,UAAiB,MAAI,SAAUL,GAC9D,IAAI4lC,EAAMplC,UAAUb,OACpB,GAAIimC,EAAM,EAAG,CACT,IACW7nC,EADP8nC,EAAiB,IAAIzlC,MAAMwlC,EAAM,GACjCx9B,EAAI,EACR,IAAKrK,EAAI,EAAGA,EAAI6nC,EAAM,IAAK7nC,EAAG,CAC1B,IAAIuc,EAAO9Z,UAAUzC,GACrB,IAAIgvB,EAAKwI,SAASjb,GAGd,OAAOoY,EAAa,0DACiB3F,EAAK8E,YAAYvX,IAHtDurB,EAAez9B,KAAOkS,EAQ9B,OAFAurB,EAAelmC,OAASyI,EACxBpI,EAAKQ,UAAUzC,GACRQ,KAAKgnC,UAAKnpC,EAAWsoC,EAAYmB,EAAgB7lC,EAAIzB,OAEhE,OAAOA,KAAKgnC,UAAKnpC,EAAW4D,IAGhCksB,EAAQ7rB,UAAUyrC,QAAU,WACxB,OAAOvtC,KAAK0xB,MAAM8a,EACdA,OAAgB3uC,EAAWmC,UAAMnC,IAGzC8vB,EAAQ7rB,UAAUklC,KAAO,SAAUwG,EAAYC,GAC3C,GAAIvc,EAAMoI,YAAcr3B,UAAUb,OAAS,GACjB,mBAAfosC,GACc,mBAAdC,EAA0B,CACjC,IAAI7L,EAAM,kDACFpT,EAAK8E,YAAYka,GACrBvrC,UAAUb,OAAS,IACnBwgC,GAAO,KAAOpT,EAAK8E,YAAYma,IAEnCztC,KAAKy0B,MAAMmN,GAEf,OAAO5hC,KAAK0xB,MAAM8b,EAAYC,OAAW5vC,OAAWA,OAAWA,IAGnE8vB,EAAQ7rB,UAAUyM,KAAO,SAAUi/B,EAAYC,GAEvCztC,KAAK0xB,MAAM8b,EAAYC,OAAW5vC,OAAWA,OAAWA,GACpD6vC,eAGZ/f,EAAQ7rB,UAAU8nC,OAAS,SAAUnoC,GACjC,MAAkB,mBAAPA,EACA0yB,EAAa,gCAAkC3F,EAAK8E,YAAY7xB,IAEpEzB,KAAKqjC,MAAM3R,MAAMjwB,OAAI5D,OAAWA,EAAW+uC,OAAO/uC,IAG7D8vB,EAAQ7rB,UAAU6rC,OAAS,WACvB,IAAI3f,EAAM,CACNkQ,aAAa,EACb2I,YAAY,EACZ+G,sBAAkB/vC,EAClBgwC,qBAAiBhwC,GASrB,OAPImC,KAAKk+B,eACLlQ,EAAI4f,iBAAmB5tC,KAAKwZ,QAC5BwU,EAAIkQ,aAAc,GACXl+B,KAAK6mC,eACZ7Y,EAAI6f,gBAAkB7tC,KAAKi6B,SAC3BjM,EAAI6Y,YAAa,GAEd7Y,GAGXL,EAAQ7rB,UAAUuhC,IAAM,WAIpB,OAHIphC,UAAUb,OAAS,GACnBpB,KAAKy0B,MAAM,wDAER,IAAIP,EAAal0B,MAAMiuB,WAGlCN,EAAQ7rB,UAAUiB,MAAQ,SAAUtB,GAChC,OAAOzB,KAAK8iC,OAAOtU,EAAKsf,wBAAyBrsC,IAGrDksB,EAAQogB,kBAAoBrwC,EAAO2vB,QAEnCM,EAAQje,GAAK,SAAUiH,GACnB,OAAOA,aAAegX,GAG1BA,EAAQqgB,SAAWrgB,EAAQsgB,aAAe,SAASxsC,GAC/C,IAAIusB,EAAM,IAAIL,EAAQqD,GACtBhD,EAAIiN,qBACJ,IAAI0Q,EAAY1pC,UAAUb,OAAS,KAAM2rB,OAAO9qB,UAAU,IAAI0pC,UAE1DzpC,EAASkyB,EAAS3yB,EAAT2yB,CAAa0Y,EAAmB9e,EAAK2d,IAKlD,OAJIzpC,IAAWmyB,GACXrG,EAAIkb,gBAAgBhnC,EAAOsF,GAAG,GAE7BwmB,EAAIkgB,iBAAiBlgB,EAAImgB,sBACvBngB,GAGXL,EAAQ0V,IAAM,SAAUtV,GACpB,OAAO,IAAImG,EAAanG,GAAUE,WAGtCN,EAAQygB,KAAO,SAAUntC,GACrB,IAAI+sB,EAAMiD,EAAoBhwB,GAO9B,OANM+sB,aAAeL,KACjBK,EAAM,IAAIL,EAAQqD,IACdiK,qBACJjN,EAAIqgB,gBACJrgB,EAAIgf,mBAAqB/rC,GAEtB+sB,GAGXL,EAAQ+E,QAAU/E,EAAQ2gB,UAAY3gB,EAAQygB,KAE9CzgB,EAAQuP,OAASvP,EAAQ4gB,SAAW,SAAUtU,GAC1C,IAAIjM,EAAM,IAAIL,EAAQqD,GAGtB,OAFAhD,EAAIiN,qBACJjN,EAAIkb,gBAAgBjP,GAAQ,GACrBjM,GAGXL,EAAQ8B,aAAe,SAAShuB,GAC5B,GAAkB,mBAAPA,EACP,MAAM,IAAI8xB,EAAU,gCAAkC/E,EAAK8E,YAAY7xB,IAE3E,OAAO6yB,EAAM7E,aAAahuB,IAG9BksB,EAAQ7rB,UAAU4vB,MAAQ,SACtB8b,EACAC,EACApc,EAAMjC,EACNof,GAEA,IAAIC,OAAoC5wC,IAAjB2wC,EACnBvgB,EAAUwgB,EAAmBD,EAAe,IAAI7gB,EAAQqD,GACxDvpB,EAASzH,KAAKqyB,UACdgX,EAAW5hC,EAAOoqB,UAEjB4c,IACDxgB,EAAQ+D,eAAehyB,KAAM,GAC7BiuB,EAAQgN,0BACSp9B,IAAbuxB,GACgC,IAAb,QAAjBpvB,KAAK6xB,aAEHzC,EAD4B,IAAd,SAAXia,GACQrpC,KAAKkyB,cAELzqB,IAAWzH,UAAOnC,EAAYmC,KAAKwyB,UAGtDxyB,KAAKg+B,WAAW,iBAAkBh+B,KAAMiuB,IAG5C,IAAIyM,EAAShC,IACb,GAAgC,IAAd,SAAX2Q,GAA6B,CAChC,IAAIpL,EAASzkB,EAAOk1B,EAAUjnC,EAAOknC,kBACN,IAAd,SAAXtF,IACF7vB,EAAQ/R,EAAOulC,mBACf/O,EAAUuP,GACwB,IAAd,SAAXnE,IACT7vB,EAAQ/R,EAAOslC,qBACf9O,EAAUwP,EACVhmC,EAAO6yB,+BAEPoU,EAAUjnC,EAAOmnC,uCACjBp1B,EAAQ,IAAI2qB,EAAkB,8BAC9B18B,EAAO2uB,kBAAkB5c,GACzBykB,EAAUwP,GAGdnZ,EAAM7D,OAAOie,EAASjnC,EAAQ,CAC1Bw2B,QAAoB,OAAXvD,EAAkBuD,EACD,mBAAZA,GACNzP,EAAKmM,WAAWD,EAAQuD,GAChChQ,QAASA,EACTmB,SAAUA,EACV5V,MAAOA,SAGX/R,EAAOonC,cAAcrB,EAAYC,EAAWxf,EAASmB,EAAUsL,GAGnE,OAAOzM,GAGXN,EAAQ7rB,UAAU4zB,QAAU,WACxB,OAAwB,MAAjB11B,KAAK6xB,WAGhBlE,EAAQ7rB,UAAUosC,cAAgB,WAC9B,OAAwC,IAAf,UAAjBluC,KAAK6xB,YAGjBlE,EAAQ7rB,UAAU+yB,aAAe,WAC7B,OAAuC,WAAd,SAAjB70B,KAAK6xB,YAGjBlE,EAAQ7rB,UAAUgtC,WAAa,SAAUzH,GACrCrnC,KAAK6xB,WAA+B,MAAlB7xB,KAAK6xB,UACZ,MAANwV,GAGT1Z,EAAQ7rB,UAAUusC,cAAgB,WAC9BruC,KAAK6xB,UAA6B,SAAjB7xB,KAAK6xB,UACtB7xB,KAAKg+B,WAAW,mBAAoBh+B,OAGxC2tB,EAAQ7rB,UAAUitC,aAAe,WAC7B/uC,KAAK6xB,UAA6B,SAAjB7xB,KAAK6xB,UACtB7xB,KAAKg+B,WAAW,kBAAmBh+B,OAGvC2tB,EAAQ7rB,UAAUktC,cAAgB,WAC9BhvC,KAAK6xB,UAA6B,SAAjB7xB,KAAK6xB,UACtB7xB,KAAKg+B,WAAW,kBAAmBh+B,OAGvC2tB,EAAQ7rB,UAAU4rC,YAAc,WAC5B1tC,KAAK6xB,UAA6B,QAAjB7xB,KAAK6xB,WAG1BlE,EAAQ7rB,UAAUmtC,SAAW,WACzB,OAAyB,QAAjBjvC,KAAK6xB,WAAuB,GAGxClE,EAAQ7rB,UAAUotC,gBAAkB,WAChClvC,KAAK6xB,WAA6B,MAAjB7xB,KAAK6xB,WAG1BlE,EAAQ7rB,UAAU0zB,cAAgB,WAC9Bx1B,KAAK6xB,UAA6B,MAAjB7xB,KAAK6xB,UACtB7xB,KAAKg+B,WAAW,mBAAoBh+B,OAGxC2tB,EAAQ7rB,UAAUmzB,oBAAsB,WACpCj1B,KAAK6xB,UAA6B,QAAjB7xB,KAAK6xB,WAG1BlE,EAAQ7rB,UAAUqsC,oBAAsB,WAChC7Z,EAAM3E,uBACV3vB,KAAK6xB,UAA6B,UAAjB7xB,KAAK6xB,YAG1BlE,EAAQ7rB,UAAUqtC,YAAc,SAAU5kC,GACtC,IAAIyjB,EAAgB,IAAVzjB,EAAcvK,KAAKktC,WAAaltC,KAC1B,EAARuK,EAAY,EAAI,GACxB,GAAIyjB,IAAQ0e,EAEL,YAAY7uC,IAARmwB,GAAqBhuB,KAAKyyB,WAC1BzyB,KAAKkyB,cAETlE,GAGXL,EAAQ7rB,UAAUstC,WAAa,SAAU7kC,GACrC,OAAOvK,KACS,EAARuK,EAAY,EAAI,IAG5BojB,EAAQ7rB,UAAUutC,sBAAwB,SAAU9kC,GAChD,OAAOvK,KACS,EAARuK,EAAY,EAAI,IAG5BojB,EAAQ7rB,UAAUwtC,oBAAsB,SAAU/kC,GAC9C,OAAOvK,KACS,EAARuK,EAAY,EAAI,IAG5BojB,EAAQ7rB,UAAUowB,YAAc,aAEhCvE,EAAQ7rB,UAAUytC,kBAAoB,SAAUC,GAC7BA,EAAS3d,UAAxB,IACI4d,EAAUD,EAASzC,qBACnB7P,EAASsS,EAASxC,mBAClB/e,EAAUuhB,EAASvC,UACnB7d,EAAWogB,EAASL,YAAY,QACnBtxC,IAAbuxB,IAAwBA,EAAWsd,GACvC1sC,KAAK6uC,cAAcY,EAASvS,EAAQjP,EAASmB,EAAU,OAG3DzB,EAAQ7rB,UAAU4tC,mBAAqB,SAAUF,EAAUjlC,GACvD,IAAIklC,EAAUD,EAASH,sBAAsB9kC,GACzC2yB,EAASsS,EAASF,oBAAoB/kC,GACtC0jB,EAAUuhB,EAASJ,WAAW7kC,GAC9B6kB,EAAWogB,EAASL,YAAY5kC,QACnB1M,IAAbuxB,IAAwBA,EAAWsd,GACvC1sC,KAAK6uC,cAAcY,EAASvS,EAAQjP,EAASmB,EAAU,OAG3DzB,EAAQ7rB,UAAU+sC,cAAgB,SAC9BY,EACAvS,EACAjP,EACAmB,EACAsL,GAEA,IAAInwB,EAAQvK,KAAK01B,UAOjB,GALInrB,GAAS,QACTA,EAAQ,EACRvK,KAAK8uC,WAAW,IAGN,IAAVvkC,EACAvK,KAAKitC,UAAYhf,EACjBjuB,KAAKktC,WAAa9d,EACK,mBAAZqgB,IACPzvC,KAAK+sC,qBACU,OAAXrS,EAAkB+U,EAAUjhB,EAAKmM,WAAWD,EAAQ+U,IAEtC,mBAAXvS,IACPl9B,KAAKgtC,mBACU,OAAXtS,EAAkBwC,EAAS1O,EAAKmM,WAAWD,EAAQwC,QAExD,CACH,IAAIyS,EAAe,EAARplC,EAAY,EACvBvK,KAAK2vC,EAAO,GAAK1hB,EACjBjuB,KAAK2vC,EAAO,GAAKvgB,EACM,mBAAZqgB,IACPzvC,KAAK2vC,EAAO,GACG,OAAXjV,EAAkB+U,EAAUjhB,EAAKmM,WAAWD,EAAQ+U,IAEtC,mBAAXvS,IACPl9B,KAAK2vC,EAAO,GACG,OAAXjV,EAAkBwC,EAAS1O,EAAKmM,WAAWD,EAAQwC,IAI/D,OADAl9B,KAAK8uC,WAAWvkC,EAAQ,GACjBA,GAGXojB,EAAQ7rB,UAAUwnC,OAAS,SAAUsG,EAAWluC,GAC5C1B,KAAK6uC,mBAAchxC,OAAWA,EAAW6D,EAAKkuC,EAAW,OAG7DjiB,EAAQ7rB,UAAUgwB,iBAAmB,SAAStY,EAAOq2B,GACjD,GAAsC,IAAf,UAAjB7vC,KAAK6xB,WAAX,CACA,GAAIrY,IAAUxZ,KACV,OAAOA,KAAKkpC,gBAAgBqD,KAA2B,GAC3D,IAAIna,EAAenB,EAAoBzX,EAAOxZ,MAC9C,KAAMoyB,aAAwBzE,GAAU,OAAO3tB,KAAKyoC,SAASjvB,GAEzDq2B,GAAY7vC,KAAKgyB,eAAeI,EAAc,GAElD,IAAInE,EAAUmE,EAAaC,UAE3B,GAAIpE,IAAYjuB,KAAhB,CAKA,IAAIqpC,EAAWpb,EAAQ4D,UACvB,GAA+B,IAAd,SAAXwX,GAA6B,CAC/B,IAAIhC,EAAMrnC,KAAK01B,UACX2R,EAAM,GAAGpZ,EAAQshB,kBAAkBvvC,MACvC,IAAK,IAAIR,EAAI,EAAGA,EAAI6nC,IAAO7nC,EACvByuB,EAAQyhB,mBAAmB1vC,KAAMR,GAErCQ,KAAKgvC,gBACLhvC,KAAK8uC,WAAW,GAChB9uC,KAAK8vC,aAAa7hB,QACf,GAA+B,IAAd,SAAXob,GACTrpC,KAAKyoC,SAASxa,EAAQ+U,eACnB,GAA+B,IAAd,SAAXqG,GACTrpC,KAAKsxB,QAAQrD,EAAQ4U,eAClB,CACH,IAAI5I,EAAS,IAAIkK,EAAkB,8BACnClW,EAAQmI,kBAAkB6D,GAC1Bj6B,KAAKsxB,QAAQ2I,SArBbj6B,KAAKsxB,QAAQib,OAyBrB5e,EAAQ7rB,UAAUonC,gBAClB,SAASjP,EAAQ8V,EAAaC,GAC1B,IAAInY,EAAQrJ,EAAKyhB,kBAAkBhW,GAC/BiW,EAAWrY,IAAUoC,EACzB,IAAKiW,IAAaF,GAA0B9e,EAAMoI,WAAY,CAC1D,IAAIjG,EAAU,4CACV7E,EAAK8E,YAAY2G,GACrBj6B,KAAKy0B,MAAMpB,GAAS,GAExBrzB,KAAKo2B,kBAAkByB,IAAOkY,GAAcG,GAC5ClwC,KAAKsxB,QAAQ2I,IAGjBtM,EAAQ7rB,UAAUqrC,qBAAuB,SAAUlQ,GAC/C,GAAIA,IAAajM,EAAjB,CACA,IAAI/C,EAAUjuB,KACdA,KAAKi7B,qBACLj7B,KAAK03B,eACL,IAAIqY,GAAc,EACdzhC,EAAItO,KAAKihB,SAASgc,GAAU,SAASzjB,GACrCyU,EAAQ6D,iBAAiBtY,MAC1B,SAAUygB,GACThM,EAAQib,gBAAgBjP,EAAQ8V,MAEpCA,GAAc,EACd/vC,KAAK23B,mBAEK95B,IAANyQ,GACA2f,EAAQib,gBAAgB56B,GAAG,KAInCqf,EAAQ7rB,UAAUquC,0BAA4B,SAC1ClS,EAAS7O,EAAU5V,EAAOyU,GAE1B,IAAIob,EAAWpb,EAAQ4D,UACvB,GAA4B,IAAX,MAAXwX,GAAN,CAEA,IAAIt6B,EADJkf,EAAQyJ,eAEJtI,IAAawd,EACRpzB,GAAiC,iBAAjBA,EAAMpY,OAKvB2N,EAAIqlB,EAAS6J,GAAS57B,MAAMrC,KAAKkyB,cAAe1Y,IAJhDzK,EAAIslB,GACF7sB,EAAI,IAAI+rB,EAAU,iCACI/E,EAAK8E,YAAY9Z,IAK7CzK,EAAIqlB,EAAS6J,GAASj8B,KAAKotB,EAAU5V,GAEzC,IAAI2iB,EAAiBlO,EAAQ0J,cAED,IAAX,OADjB0R,EAAWpb,EAAQ4D,cAGf9iB,IAAM0nB,EACNxI,EAAQqD,QAAQ9X,GACTzK,IAAMslB,EACbpG,EAAQib,gBAAgBn6B,EAAEvH,GAAG,IAE7B0pB,EAAMmQ,sBAAsBtyB,EAAGotB,EAAgB,GAAKlO,EAASjuB,MAC7DiuB,EAAQ6D,iBAAiB/iB,OAIjC4e,EAAQ7rB,UAAUuwB,QAAU,WAExB,IADA,IAAIrE,EAAMhuB,KACHguB,EAAI6G,gBAAgB7G,EAAMA,EAAI8G,YACrC,OAAO9G,GAGXL,EAAQ7rB,UAAUgzB,UAAY,WAC1B,OAAO90B,KAAKgtC,oBAGhBrf,EAAQ7rB,UAAUguC,aAAe,SAAS7hB,GACtCjuB,KAAKgtC,mBAAqB/e,GAG9BN,EAAQ7rB,UAAUsuC,eAAiB,SAASniB,EAASgQ,EAAS7O,EAAU5V,GACpE,IAAI62B,EAAYpiB,aAAmBN,EAC/B0b,EAAWrpC,KAAK6xB,UAChBye,EAA8C,IAAf,UAAXjH,GACI,IAAX,MAAXA,IACEgH,GAAWpiB,EAAQsI,0BAEnBnH,aAAoBgX,GACpBhX,EAASwX,oBACTxX,EAASkX,cAAgBrY,EACrBmG,EAAS6J,GAASj8B,KAAKotB,EAAU5V,KAAW6a,GAC5CpG,EAAQqD,QAAQ+C,EAAS7sB,IAEtBy2B,IAAYuO,EACnBve,EAAQwa,SAAS+D,EAAexqC,KAAKotB,IAC9BA,aAAoBoY,EAC3BpY,EAASsZ,kBAAkBza,GACpBoiB,GAAapiB,aAAmBiG,EACvCjG,EAAQsH,UAERnG,EAASlW,UAEa,mBAAZ+kB,EACToS,GAGGC,GAAiBriB,EAAQkgB,sBAC7BnuC,KAAKmwC,0BAA0BlS,EAAS7O,EAAU5V,EAAOyU,IAHzDgQ,EAAQj8B,KAAKotB,EAAU5V,EAAOyU,GAK3BmB,aAAoBoY,EACtBpY,EAASmZ,gBACqB,IAAd,SAAXc,GACFja,EAAS0Z,kBAAkBtvB,EAAOyU,GAElCmB,EAAS4Z,iBAAiBxvB,EAAOyU,IAGlCoiB,IACHC,GAAiBriB,EAAQkgB,sBACE,IAAd,SAAX9E,GACFpb,EAAQwa,SAASjvB,GAEjByU,EAAQqD,QAAQ9X,KAK5BmU,EAAQ7rB,UAAU8sC,uCAAyC,SAASvW,GAChE,IAAI4F,EAAU5F,EAAI4F,QACdhQ,EAAUoK,EAAIpK,QACdmB,EAAWiJ,EAAIjJ,SACf5V,EAAQ6e,EAAI7e,MACO,mBAAZykB,EACDhQ,aAAmBN,EAGrB3tB,KAAKmwC,0BAA0BlS,EAAS7O,EAAU5V,EAAOyU,GAFzDgQ,EAAQj8B,KAAKotB,EAAU5V,EAAOyU,GAI3BA,aAAmBN,GAC1BM,EAAQqD,QAAQ9X,IAIxBmU,EAAQ7rB,UAAU6sC,kBAAoB,SAAStW,GAC3Cr4B,KAAKowC,eAAe/X,EAAIpK,QAASoK,EAAI4F,QAAS5F,EAAIjJ,SAAUiJ,EAAI7e,QAGpEmU,EAAQ7rB,UAAUyuC,gBAAkB,SAAStS,EAASzkB,EAAO6vB,GACzD,IAAIpb,EAAUjuB,KAAKitC,UACf7d,EAAWpvB,KAAKmvC,YAAY,GAChCnvC,KAAKitC,eAAYpvC,EACjBmC,KAAKktC,gBAAarvC,EAClBmC,KAAKowC,eAAeniB,EAASgQ,EAAS7O,EAAU5V,IAGpDmU,EAAQ7rB,UAAU0uC,0BAA4B,SAASjmC,GACnD,IAAIolC,EAAe,EAARplC,EAAY,EACvBvK,KAAK2vC,EAAO,GACZ3vC,KAAK2vC,EAAO,GACZ3vC,KAAK2vC,EAAO,GACZ3vC,KAAK2vC,EAAO,QAAK9xC,GAGrB8vB,EAAQ7rB,UAAU2mC,SAAW,SAAUjvB,GACnC,IAAI6vB,EAAWrpC,KAAK6xB,UACpB,MAAiB,UAAXwX,KAA0B,IAAhC,CACA,GAAI7vB,IAAUxZ,KAAM,CAChB,IAAIkhC,EAAMqL,IAEV,OADAvsC,KAAKo2B,kBAAkB8K,GAChBlhC,KAAKsxB,QAAQ4P,GAExBlhC,KAAKquC,gBACLruC,KAAKgtC,mBAAqBxzB,GAEV,MAAX6vB,GAAoB,IACW,IAAf,UAAXA,GACFrpC,KAAK2wB,kBAEL2D,EAAM5D,eAAe1wB,SAKjC2tB,EAAQ7rB,UAAUwvB,QAAU,SAAU2I,GAClC,IAAIoP,EAAWrpC,KAAK6xB,UACpB,MAAiB,UAAXwX,KAA0B,IAAhC,CAIA,GAHArpC,KAAK+uC,eACL/uC,KAAK+sC,qBAAuB9S,EAExBj6B,KAAKivC,WACL,OAAO3a,EAAMtE,WAAWiK,EAAQzL,EAAKyB,SAGzB,MAAXoZ,GAAoB,EACrB/U,EAAM5D,eAAe1wB,MAErBA,KAAKy5B,oCAIb9L,EAAQ7rB,UAAU2uC,iBAAmB,SAAUpJ,EAAK7tB,GAChD,IAAK,IAAIha,EAAI,EAAGA,EAAI6nC,EAAK7nC,IAAK,CAC1B,IAAIy+B,EAAUj+B,KAAKqvC,sBAAsB7vC,GACrCyuB,EAAUjuB,KAAKovC,WAAW5vC,GAC1B4vB,EAAWpvB,KAAKmvC,YAAY3vC,GAChCQ,KAAKwwC,0BAA0BhxC,GAC/BQ,KAAKowC,eAAeniB,EAASgQ,EAAS7O,EAAU5V,KAIxDmU,EAAQ7rB,UAAU4uC,gBAAkB,SAAUrJ,EAAKpN,GAC/C,IAAK,IAAIz6B,EAAI,EAAGA,EAAI6nC,EAAK7nC,IAAK,CAC1B,IAAIy+B,EAAUj+B,KAAKsvC,oBAAoB9vC,GACnCyuB,EAAUjuB,KAAKovC,WAAW5vC,GAC1B4vB,EAAWpvB,KAAKmvC,YAAY3vC,GAChCQ,KAAKwwC,0BAA0BhxC,GAC/BQ,KAAKowC,eAAeniB,EAASgQ,EAAS7O,EAAU6K,KAIxDtM,EAAQ7rB,UAAU6uB,gBAAkB,WAChC,IAAI0Y,EAAWrpC,KAAK6xB,UAChBwV,EAAkB,MAAXgC,EAEX,GAAIhC,EAAM,EAAG,CACT,GAA+B,IAAd,SAAXgC,GAA6B,CAC/B,IAAIpP,EAASj6B,KAAK+sC,qBAClB/sC,KAAKuwC,gBAAgBvwC,KAAKgtC,mBAAoB/S,EAAQoP,GACtDrpC,KAAK0wC,gBAAgBrJ,EAAKpN,OACvB,CACH,IAAIzgB,EAAQxZ,KAAKgtC,mBACjBhtC,KAAKuwC,gBAAgBvwC,KAAK+sC,qBAAsBvzB,EAAO6vB,GACvDrpC,KAAKywC,iBAAiBpJ,EAAK7tB,GAE/BxZ,KAAK8uC,WAAW,GAEpB9uC,KAAK89B,0BAGTnQ,EAAQ7rB,UAAUo4B,cAAgB,WAC9B,IAAImP,EAAWrpC,KAAK6xB,UACpB,OAA+B,IAAd,SAAXwX,GACKrpC,KAAKgtC,mBACsB,IAAd,SAAX3D,GACFrpC,KAAK+sC,0BADT,GAQXpf,EAAQgjB,MAAQhjB,EAAQijB,QAAU,WAG9B,OAFA1f,EAAMmR,WAAW,gBAAiB,eAE3B,CACHpU,QAFU,IAAIN,EAAQqD,GAGtB0B,QAAS0a,EACTlQ,OAAQmQ,IAIhB7e,EAAKiQ,kBAAkB9Q,EACA,2BACA4e,GAEvBhf,EAAQ,WAARA,CAAoBI,EAASqD,EAAUC,EAAqBkD,EACxDjD,GACJ3D,EAAQ,SAARA,CAAkBI,EAASqD,EAAUC,EAAqBC,GAC1D3D,EAAQ,WAARA,CAAoBI,EAASuG,EAAcC,EAAcjD,GACzD3D,EAAQ,mBAARA,CAA4BI,GAC5BJ,EAAQ,2BAARA,CAAoCI,GACpCJ,EAAQ,SAARA,CACII,EAASuG,EAAcjD,EAAqBD,EAAUsD,EAAOoE,GACjE/K,EAAQA,QAAUA,EAClBA,EAAQnvB,QAAU,QAClB+uB,EAAQ,WAARA,CAAoBI,EAASuG,EAAcC,EAAclD,EAAqBD,EAAUE,GACxF3D,EAAQ,gBAARA,CAAyBI,GACzBJ,EAAQ,aAARA,CAAsBI,EAASwG,EAAclD,EAAqB4b,EAAe7b,EAAUE,GAC3F3D,EAAQ,cAARA,CAAuBI,EAASqD,EAAUE,GAC1C3D,EAAQ,kBAARA,CAA2BI,EAASwG,EAAcnD,EAAUC,EAAqBuW,EAAWtW,GAC5F3D,EAAQ,eAARA,CAAwBI,GACxBJ,EAAQ,iBAARA,CAA0BI,EAASqD,GACnCzD,EAAQ,aAARA,CAAsBI,EAASuG,EAAcjD,EAAqBkD,GAClE5G,EAAQ,YAARA,CAAqBI,EAASqD,EAAUC,EAAqBkD,GAC7D5G,EAAQ,cAARA,CAAuBI,EAASuG,EAAcC,EAAclD,EAAqBD,EAAUE,GAC3F3D,EAAQ,cAARA,CAAuBI,EAASuG,EAAchD,GAC9C3D,EAAQ,YAARA,CAAqBI,EAASuG,EAAcC,GAC5C5G,EAAQ,cAARA,CAAuBI,EAASqD,GAChCzD,EAAQ,YAARA,CAAqBI,EAASqD,GAC9BzD,EAAQ,WAARA,CAAoBI,GAEhBa,EAAKqiB,iBAAiBljB,GACtBa,EAAKqiB,iBAAiBljB,EAAQ7rB,WAU9BwrC,EAAU,CAAC3qC,EAAG,IACd2qC,EAAU,CAACtxB,EAAG,IACdsxB,EAAU,CAAC7/B,EAAG,IACd6/B,EAAU,GACVA,GAAU,eACVA,OAAUzvC,GACVyvC,GAAU,GACVA,EAAU,IAAI3f,EAAQqD,IACtBE,EAAM2Q,UAAUpT,EAAMJ,eAAgBG,EAAKsT,eACpCnU,IAIT,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,GAAG,kBAAkB,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,cAAc,GAAG,YAAY,GAAG,2BAA2B,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,KAAKmjB,GAAG,CAAC,SAASvjB,EAAQ7vB,EAAO2vB,GAC3iB,aACA3vB,EAAO2vB,QAAU,SAASM,EAASqD,EAAUC,EACzCkD,EAAcqT,GAClB,IAAIhZ,EAAOjB,EAAQ,UAWnB,SAAS2G,EAAa0W,GAClB,IAAI3c,EAAUjuB,KAAK+nC,SAAW,IAAIpa,EAAQqD,GACtC4Z,aAAkBjd,GAClBM,EAAQ+D,eAAe4Y,EAAQ,GAEnC3c,EAAQsE,aAAavyB,MACrBA,KAAK6qC,QAAUD,EACf5qC,KAAK01B,QAAU,EACf11B,KAAK+qC,eAAiB,EACtB/qC,KAAK2qC,WAAM9sC,GAAY,GAgK3B,OAnLc2wB,EAAK9gB,QAqBnB8gB,EAAKyR,SAAS/L,EAAcsT,GAE5BtT,EAAapyB,UAAUV,OAAS,WAC5B,OAAOpB,KAAK01B,SAGhBxB,EAAapyB,UAAUmsB,QAAU,WAC7B,OAAOjuB,KAAK+nC,UAGhB7T,EAAapyB,UAAU6oC,MAAQ,SAAS/qC,EAAKyxB,EAAG0f,GAC5C,IAAInG,EAAS3Z,EAAoBjxB,KAAK6qC,QAAS7qC,KAAK+nC,UACpD,GAAI6C,aAAkBjd,EAAS,CAE3B,IAAI0b,GADJuB,EAASA,EAAOvY,WACMR,UAItB,GAFA7xB,KAAK6qC,QAAUD,EAEgB,IAAd,SAAXvB,GAEF,OADArpC,KAAK+nC,SAASoG,sBACPvD,EAAOlZ,MACV9xB,EACAI,KAAKsxB,aACLzzB,EACAmC,KACA+wC,GAED,GAA+B,IAAd,SAAX1H,GAEN,OAA+B,IAAd,SAAXA,GACFrpC,KAAKsxB,QAAQsZ,EAAO/H,WAEpB7iC,KAAKu1B,UAJZqV,EAASA,EAAO5H,SAQxB,GAAe,QADf4H,EAASpc,EAAKwiB,QAAQpG,IAQA,IAAlBA,EAAOxpC,OASXpB,KAAKixC,SAASrG,IARmB,IAAzBmG,EACA/wC,KAAKkxC,qBAGLlxC,KAAKgrC,SAnEjB,SAA2Br0B,GACvB,OAAOA,GACP,KAAM,EAAG,MAAO,GAChB,KAAM,EAAG,MAAO,GAChB,KAAM,EAAG,OAAO,IAAIw6B,KA+DEC,CAAkBL,QAZxC,CACI,IAAI7P,EAAM/M,EACN,oDAAsD3F,EAAK8E,YAAYsX,IAAS3Q,SACpFj6B,KAAK+nC,SAASmB,gBAAgBhI,GAAK,KAgB3ChN,EAAapyB,UAAUmvC,SAAW,SAASrG,GACvC,IAAIvD,EAAMrnC,KAAKqxC,gBAAgBzG,EAAOxpC,QACtCpB,KAAK01B,QAAU2R,EACfrnC,KAAK6qC,QAAU7qC,KAAKsxC,mBAAqB,IAAIzvC,MAAMwlC,GAAOrnC,KAAK6qC,QAI/D,IAHA,IAAI3oC,EAASlC,KAAK+nC,SACdwJ,GAAa,EACblI,EAAW,KACN7pC,EAAI,EAAGA,EAAI6nC,IAAO7nC,EAAG,CAC1B,IAAI4yB,EAAenB,EAAoB2Z,EAAOprC,GAAI0C,GAI9CmnC,EAFAjX,aAAwBzE,GACxByE,EAAeA,EAAaC,WACJR,UAEb,KAGX0f,EACiB,OAAblI,GACAjX,EAAaoH,8BAEG,OAAb6P,EACwB,IAAd,SAAXA,IACFjX,EAAakX,OAAOtpC,KAAMR,GAC1BQ,KAAK6qC,QAAQrrC,GAAK4yB,GAElBmf,EADkC,IAAd,SAAXlI,GACIrpC,KAAK8oC,kBAAkB1W,EAAa4Q,SAAUxjC,GACzB,IAAd,SAAX6pC,GACIrpC,KAAKgpC,iBAAiB5W,EAAayQ,UAAWrjC,GAE9CQ,KAAK0oC,kBAAkBlpC,GAGxC+xC,EAAavxC,KAAK8oC,kBAAkB1W,EAAc5yB,GAGrD+xC,GAAYrvC,EAAOisC,uBAG5Bja,EAAapyB,UAAUymC,YAAc,WACjC,OAAwB,OAAjBvoC,KAAK6qC,SAGhB3W,EAAapyB,UAAUkpC,SAAW,SAAUxxB,GACxCxZ,KAAK6qC,QAAU,KACf7qC,KAAK+nC,SAASU,SAASjvB,IAG3B0a,EAAapyB,UAAUyzB,QAAU,YACzBv1B,KAAKuoC,eAAkBvoC,KAAK+nC,SAASpT,mBACzC30B,KAAK6qC,QAAU,KACf7qC,KAAK+nC,SAASxS,YAGlBrB,EAAapyB,UAAUwvB,QAAU,SAAU2I,GACvCj6B,KAAK6qC,QAAU,KACf7qC,KAAK+nC,SAASmB,gBAAgBjP,GAAQ,IAG1C/F,EAAapyB,UAAUgnC,kBAAoB,SAAUtvB,EAAOjP,GAGxD,OAFAvK,KAAK6qC,QAAQtgC,GAASiP,IACAxZ,KAAK+qC,gBACN/qC,KAAK01B,UACtB11B,KAAKgrC,SAAShrC,KAAK6qC,UACZ,IAKf3W,EAAapyB,UAAU4mC,kBAAoB,WAEvC,OADA1oC,KAAKu1B,WACE,GAGXrB,EAAapyB,UAAUknC,iBAAmB,SAAU/O,GAGhD,OAFAj6B,KAAK+qC,iBACL/qC,KAAKsxB,QAAQ2I,IACN,GAGX/F,EAAapyB,UAAUu0B,iBAAmB,WACtC,IAAIr2B,KAAKuoC,cAAT,CACA,IAAIqC,EAAS5qC,KAAK6qC,QAElB,GADA7qC,KAAKu1B,UACDqV,aAAkBjd,EAClBid,EAAO1xB,cAEP,IAAK,IAAI1Z,EAAI,EAAGA,EAAIorC,EAAOxpC,SAAU5B,EAC7BorC,EAAOprC,aAAcmuB,GACrBid,EAAOprC,GAAG0Z,WAM1Bgb,EAAapyB,UAAUwvC,iBAAmB,WACtC,OAAO,GAGXpd,EAAapyB,UAAUuvC,gBAAkB,SAAUhK,GAC/C,OAAOA,GAGJnT,IAGL,CAAC,SAAS,KAAKsd,GAAG,CAAC,SAASjkB,EAAQ7vB,EAAO2vB,GAC7C,aACA3vB,EAAO2vB,QAAU,SAASM,EAASqD,GACnC,IAAIygB,EAAO,GACPjjB,EAAOjB,EAAQ,UACfuf,EAAqBvf,EAAQ,cAC7BmkB,EAAeljB,EAAKkjB,aACpBpG,EAAmB9c,EAAK8c,iBACxBpY,EAAc1E,EAAK0E,YACnBK,EAAYhG,EAAQ,YAAYgG,UAEhCoe,EAAqB,CAACC,mBAAmB,GAUzCC,EAAqB,IAAIlnC,OAAO,OATlB,CACd,QAAY,SACZ,OACA,YACA,SACA,SACA,YACA,qBAEqD+B,KAAK,KAAO,MAEjEolC,EAAgB,SAASxxC,GACzB,OAAOkuB,EAAKoF,aAAatzB,IACF,MAAnBA,EAAKsK,OAAO,IACH,gBAATtK,GAGR,SAASyxC,EAAYtmC,GACjB,OAAQomC,EAAmBnsC,KAAK+F,GAGpC,SAASumC,EAAcvwC,GACnB,IACI,OAAgC,IAAzBA,EAAGmwC,kBAEd,MAAOpqC,GACH,OAAO,GAIf,SAASyqC,EAAehxC,EAAKwK,EAAKymC,GAC9B,IAAIv7B,EAAM6X,EAAK2jB,yBAAyBlxC,EAAKwK,EAAMymC,EACXP,GACxC,QAAOh7B,GAAMq7B,EAAcr7B,GAiB/B,SAASy7B,EAAqBnxC,EAAKixC,EAAQG,EAAc7sC,GAGrD,IAFA,IAAImxB,EAAOnI,EAAK8jB,kBAAkBrxC,GAC9B+sB,EAAM,GACDxuB,EAAI,EAAGA,EAAIm3B,EAAKv1B,SAAU5B,EAAG,CAClC,IAAIiM,EAAMkrB,EAAKn3B,GACXga,EAAQvY,EAAIwK,GACZ8mC,EAAsB/sC,IAAWssC,GACxBA,EAAcrmC,GACN,mBAAV+N,GACNw4B,EAAcx4B,IACdy4B,EAAehxC,EAAKwK,EAAKymC,KAC1B1sC,EAAOiG,EAAK+N,EAAOvY,EAAKsxC,IACxBvkB,EAAIzhB,KAAKd,EAAK+N,GAItB,OA/BJ,SAAoBwU,EAAKkkB,EAAQG,GAC7B,IAAK,IAAI7yC,EAAI,EAAGA,EAAIwuB,EAAI5sB,OAAQ5B,GAAK,EAAG,CACpC,IAAIiM,EAAMuiB,EAAIxuB,GACd,GAAI6yC,EAAa3sC,KAAK+F,GAElB,IADA,IAAI+mC,EAAwB/mC,EAAI5M,QAAQwzC,EAAc,IAC7CxoC,EAAI,EAAGA,EAAImkB,EAAI5sB,OAAQyI,GAAK,EACjC,GAAImkB,EAAInkB,KAAO2oC,EACX,MAAM,IAAIjf,EAAU,qGACf10B,QAAQ,KAAMqzC,KAsBnCO,CAAWzkB,EAAKkkB,EAAQG,GACjBrkB,EA4JX,IAAI0kB,EAAsBxf,OArJtByf,EA2HJ,SAAoCplC,EAAU6hB,EAAUiC,EAAG5vB,EAAImxC,EAAIjH,GAC/D,IAAIkH,EAAc,WAAa,OAAO7yC,KAApB,GACdoC,EAASmL,EAIb,SAASulC,IACL,IAAI5K,EAAY9Y,EACZA,IAAaqiB,IAAMvJ,EAAYloC,MACnC,IAAIiuB,EAAU,IAAIN,EAAQqD,GAC1B/C,EAAQgN,qBACR,IAAIzrB,EAAuB,iBAAXpN,GAAuBpC,OAAS6yC,EAC1C7yC,KAAKoC,GAAUmL,EACjB9L,EAAKqrC,EAAmB7e,EAAS0d,GACrC,IACIn8B,EAAGnN,MAAM6lC,EAAWwJ,EAAazvC,UAAWR,IAC9C,MAAM+F,GACJymB,EAAQib,gBAAgBoC,EAAiB9jC,IAAI,GAAM,GAGvD,OADKymB,EAAQigB,iBAAiBjgB,EAAQkgB,sBAC/BlgB,EAGX,MApBsB,iBAAX7rB,IACPmL,EAAW9L,GAkBf+sB,EAAKiQ,kBAAkBqU,EAAa,qBAAqB,GAClDA,GAOX,SAASC,EAAa9xC,EAAKixC,EAAQ1sC,EAAQwtC,EAAarH,GAKpD,IAJA,IAAI0G,EAAe,IAAI1nC,OAAwBunC,EA7JpCrzC,QAAQ,QAAS,OA6J6B,KACrD0lC,EACA6N,EAAqBnxC,EAAKixC,EAAQG,EAAc7sC,GAE3ChG,EAAI,EAAG6nC,EAAM9C,EAAQnjC,OAAQ5B,EAAI6nC,EAAK7nC,GAAI,EAAG,CAClD,IAAIiM,EAAM84B,EAAQ/kC,GACdiC,EAAK8iC,EAAQ/kC,EAAE,GACfyzC,EAAiBxnC,EAAMymC,EAC3B,GAAIc,IAAgBN,EAChBzxC,EAAIgyC,GACAP,EAAoBjnC,EAAKgmC,EAAMhmC,EAAKhK,EAAIywC,EAAQvG,OACjD,CACH,IAAImH,EAAcE,EAAYvxC,GAAI,WAC9B,OAAOixC,EAAoBjnC,EAAKgmC,EAAMhmC,EACXhK,EAAIywC,EAAQvG,MAE3Cnd,EAAKiQ,kBAAkBqU,EAAa,qBAAqB,GACzD7xC,EAAIgyC,GAAkBH,GAI9B,OADAtkB,EAAKqiB,iBAAiB5vC,GACfA,EAQX0sB,EAAQulB,UAAY,SAAUzxC,EAAIvC,GAC9B,GAAkB,mBAAPuC,EACP,MAAM,IAAI8xB,EAAU,gCAAkC/E,EAAK8E,YAAY7xB,IAE3E,GAAIuwC,EAAcvwC,GACd,OAAOA,EAGX,IAEIusB,EAfR,SAAmBzgB,EAAU6hB,EAAUuc,GACnC,OAAO+G,EAAoBnlC,EAAU6hB,OAAUvxB,EACnB0P,EAAU,KAAMo+B,GAalCuH,CAAUzxC,OAFe5D,KADnCqB,EAAU6tB,OAAO7tB,IACM2gB,QAAwB4xB,EAAOvyC,EAAQ2gB,UAC5C3gB,EAAQysC,WAG1B,OADAnd,EAAK2kB,gBAAgB1xC,EAAIusB,EAAK+jB,GACvB/jB,GAGXL,EAAQolB,aAAe,SAAUtrC,EAAQvI,GACrC,GAAsB,mBAAXuI,GAA2C,iBAAXA,EACvC,MAAM,IAAI8rB,EAAU,gGAGxB,IAAIoY,KADJzsC,EAAU6tB,OAAO7tB,IACSysC,UACtBuG,EAAShzC,EAAQgzC,OACC,iBAAXA,IAAqBA,EAxRhB,SAyRhB,IAAI1sC,EAAStG,EAAQsG,OACC,mBAAXA,IAAuBA,EAASssC,GAC3C,IAAIkB,EAAc9zC,EAAQ8zC,YAG1B,GAF2B,mBAAhBA,IAA4BA,EAAcN,IAEhDlkB,EAAKoF,aAAase,GACnB,MAAM,IAAI5N,WAAW,uEAIzB,IADA,IAAI3N,EAAOnI,EAAK8jB,kBAAkB7qC,GACzBjI,EAAI,EAAGA,EAAIm3B,EAAKv1B,SAAU5B,EAAG,CAClC,IAAIga,EAAQ/R,EAAOkvB,EAAKn3B,IACR,gBAAZm3B,EAAKn3B,IACLgvB,EAAK4kB,QAAQ55B,KACbu5B,EAAav5B,EAAM1X,UAAWowC,EAAQ1sC,EAAQwtC,EAC1CrH,GACJoH,EAAav5B,EAAO04B,EAAQ1sC,EAAQwtC,EAAarH,IAIzD,OAAOoH,EAAatrC,EAAQyqC,EAAQ1sC,EAAQwtC,EAAarH,MAK3D,CAAC,WAAW,GAAG,aAAa,GAAG,SAAS,KAAK0H,GAAG,CAAC,SAAS9lB,EAAQ7vB,EAAO2vB,GAC3E,aACA3vB,EAAO2vB,QAAU,SACbM,EAASuG,EAAcjD,EAAqBkD,GAChD,IAGImf,EAHA9kB,EAAOjB,EAAQ,UACfyJ,EAAWxI,EAAKwI,SAChB2M,EAAMpW,EAAQ,SAEC,mBAAR4jB,MAAoBmC,EAASnC,KAExC,IAAIoC,EAAe,WACf,IAAIhpC,EAAQ,EACRipC,EAAO,EAEX,SAASC,EAAaj6B,EAAO/N,GACzBzL,KAAKuK,GAASiP,EACdxZ,KAAKuK,EAAQipC,GAAQ/nC,EACrBlB,IAGJ,OAAO,SAAsBkL,GACzB+9B,EAAO/9B,EAAI+9B,KACXjpC,EAAQ,EACR,IAAIyjB,EAAM,IAAInsB,MAAiB,EAAX4T,EAAI+9B,MAExB,OADA/9B,EAAI2H,QAAQq2B,EAAczlB,GACnBA,GAfI,GA8BnB,SAAS0lB,EAAuBzyC,GAC5B,IACI0yC,EADAC,GAAQ,EAEZ,QAAe/1C,IAAXy1C,GAAwBryC,aAAeqyC,EACvCK,EAAUJ,EAAatyC,GACvB2yC,GAAQ,MACL,CACH,IAAIjd,EAAOgN,EAAIhN,KAAK11B,GAChBomC,EAAM1Q,EAAKv1B,OACfuyC,EAAU,IAAI9xC,MAAY,EAANwlC,GACpB,IAAK,IAAI7nC,EAAI,EAAGA,EAAI6nC,IAAO7nC,EAAG,CAC1B,IAAIiM,EAAMkrB,EAAKn3B,GACfm0C,EAAQn0C,GAAKyB,EAAIwK,GACjBkoC,EAAQn0C,EAAI6nC,GAAO57B,GAG3BzL,KAAKiqC,aAAa0J,GAClB3zC,KAAK6zC,OAASD,EACd5zC,KAAK0qC,YAAO7sC,EAAW+1C,GAAS,GAAK,GAkCzC,SAASE,EAAM/lB,GACX,IAAIC,EACA+lB,EAAY9iB,EAAoBlD,GAEpC,OAAKiJ,EAAS+c,IAGV/lB,EADO+lB,aAAqBpmB,EACtBomB,EAAUriB,MACZ/D,EAAQmmB,WAAOj2C,OAAWA,OAAWA,OAAWA,GAE9C,IAAI61C,EAAuBK,GAAW9lB,UAG5C8lB,aAAqBpmB,GACrBK,EAAIgE,eAAe+hB,EAAW,GAE3B/lB,GAXImG,EAAa,6EArC5B3F,EAAKyR,SAASyT,EAAwBxf,GAEtCwf,EAAuB5xC,UAAU6oC,MAAQ,aAEzC+I,EAAuB5xC,UAAUgnC,kBAAoB,SAAUtvB,EAAOjP,GAGlE,GAFAvK,KAAK6qC,QAAQtgC,GAASiP,IACAxZ,KAAK+qC,gBACN/qC,KAAK01B,QAAS,CAC/B,IAAI/e,EACJ,GAAI3W,KAAK6zC,OACLl9B,EAzCO,SAASg9B,GAGxB,IAFA,IAAI3lB,EAAM,IAAIslB,EACVlyC,EAASuyC,EAAQvyC,OAAS,EAAI,EACzB5B,EAAI,EAAGA,EAAI4B,IAAU5B,EAAG,CAC7B,IAAIiM,EAAMkoC,EAAQvyC,EAAS5B,GACvBga,EAAQm6B,EAAQn0C,GACpBwuB,EAAI3C,IAAI5f,EAAK+N,GAEjB,OAAOwU,EAiCOgmB,CAAah0C,KAAK6qC,aACrB,CACHl0B,EAAM,GAEN,IADA,IAAIs9B,EAAYj0C,KAAKoB,SACZ5B,EAAI,EAAG6nC,EAAMrnC,KAAKoB,SAAU5B,EAAI6nC,IAAO7nC,EAC5CmX,EAAI3W,KAAK6qC,QAAQrrC,EAAIy0C,IAAcj0C,KAAK6qC,QAAQrrC,GAIxD,OADAQ,KAAKgrC,SAASr0B,IACP,EAEX,OAAO,GAGX+8B,EAAuB5xC,UAAUwvC,iBAAmB,WAChD,OAAO,GAGXoC,EAAuB5xC,UAAUuvC,gBAAkB,SAAUhK,GACzD,OAAOA,GAAO,GAsBlB1Z,EAAQ7rB,UAAUgyC,MAAQ,WACtB,OAAOA,EAAM9zC,OAGjB2tB,EAAQmmB,MAAQ,SAAU/lB,GACtB,OAAO+lB,EAAM/lB,MAIf,CAAC,QAAQ,GAAG,SAAS,KAAKmmB,GAAG,CAAC,SAAS3mB,EAAQ7vB,EAAO2vB,GACxD,aAQA,SAASkB,EAAM4lB,GACXn0C,KAAKo0C,UAAYD,EACjBn0C,KAAK01B,QAAU,EACf11B,KAAKq0C,OAAS,EAGlB9lB,EAAMzsB,UAAUwyC,oBAAsB,SAAUd,GAC5C,OAAOxzC,KAAKo0C,UAAYZ,GAG5BjlB,EAAMzsB,UAAU0tB,SAAW,SAAU9tB,GACjC,IAAIN,EAASpB,KAAKoB,SAClBpB,KAAKu0C,eAAenzC,EAAS,GAE7BpB,KADSA,KAAKq0C,OAASjzC,EAAWpB,KAAKo0C,UAAY,GACzC1yC,EACV1B,KAAK01B,QAAUt0B,EAAS,GAG5BmtB,EAAMzsB,UAAUyK,KAAO,SAAU9K,EAAI2tB,EAAU1tB,GAC3C,IAAIN,EAASpB,KAAKoB,SAAW,EAC7B,GAAIpB,KAAKs0C,oBAAoBlzC,GAIzB,OAHApB,KAAKwvB,SAAS/tB,GACdzB,KAAKwvB,SAASJ,QACdpvB,KAAKwvB,SAAS9tB,GAGlB,IAAImI,EAAI7J,KAAKq0C,OAASjzC,EAAS,EAC/BpB,KAAKu0C,eAAenzC,GACpB,IAAIozC,EAAWx0C,KAAKo0C,UAAY,EAChCp0C,KAAM6J,EAAI,EAAK2qC,GAAY/yC,EAC3BzB,KAAM6J,EAAI,EAAK2qC,GAAYplB,EAC3BpvB,KAAM6J,EAAI,EAAK2qC,GAAY9yC,EAC3B1B,KAAK01B,QAAUt0B,GAGnBmtB,EAAMzsB,UAAU+P,MAAQ,WACpB,IAAI4iC,EAAQz0C,KAAKq0C,OACbrmB,EAAMhuB,KAAKy0C,GAKf,OAHAz0C,KAAKy0C,QAAS52C,EACdmC,KAAKq0C,OAAUI,EAAQ,EAAMz0C,KAAKo0C,UAAY,EAC9Cp0C,KAAK01B,UACE1H,GAGXO,EAAMzsB,UAAUV,OAAS,WACrB,OAAOpB,KAAK01B,SAGhBnH,EAAMzsB,UAAUyyC,eAAiB,SAAUf,GACnCxzC,KAAKo0C,UAAYZ,GACjBxzC,KAAK00C,UAAU10C,KAAKo0C,WAAa,IAIzC7lB,EAAMzsB,UAAU4yC,UAAY,SAAUP,GAClC,IAAIQ,EAAc30C,KAAKo0C,UACvBp0C,KAAKo0C,UAAYD,EAhErB,SAAmB/1C,EAAKw2C,EAAUC,EAAKC,EAAUzN,GAC7C,IAAK,IAAIx9B,EAAI,EAAGA,EAAIw9B,IAAOx9B,EACvBgrC,EAAIhrC,EAAIirC,GAAY12C,EAAIyL,EAAI+qC,GAC5Bx2C,EAAIyL,EAAI+qC,QAAY,EAiExBG,CAAU/0C,KAAM,EAAGA,KAAM20C,EAHb30C,KAAKq0C,OACJr0C,KAAK01B,QACuBif,EAAc,IAI3Dj3C,EAAO2vB,QAAUkB,GAEf,IAAIymB,GAAG,CAAC,SAASznB,EAAQ7vB,EAAO2vB,GAClC,aACA3vB,EAAO2vB,QAAU,SACbM,EAASqD,EAAUC,EAAqBkD,GAC5C,IAAI3F,EAAOjB,EAAQ,UAQnB,SAAS0nB,EAAKlnB,EAAUzpB,GACpB,IAPsB2pB,EAOlBmE,EAAenB,EAAoBlD,GAEvC,GAAIqE,aAAwBzE,EACxB,OAVkBM,EAUDmE,GATN4U,MAAK,SAASprB,GACzB,OAAOq5B,EAAKr5B,EAAOqS,MAWnB,GAAiB,QADjBF,EAAWS,EAAKwiB,QAAQjjB,IAEpB,OAAOoG,EAAa,oDAAsD3F,EAAK8E,YAAYvF,IAGnG,IAAIC,EAAM,IAAIL,EAAQqD,QACPnzB,IAAXyG,GACA0pB,EAAIgE,eAAe1tB,EAAQ,GAI/B,IAFA,IAAImrC,EAAUzhB,EAAIya,SACdvL,EAASlP,EAAIsD,QACR9xB,EAAI,EAAG6nC,EAAMtZ,EAAS3sB,OAAQ5B,EAAI6nC,IAAO7nC,EAAG,CACjD,IAAImX,EAAMoX,EAASvuB,SAEP3B,IAAR8Y,GAAuBnX,KAAKuuB,IAIhCJ,EAAQygB,KAAKz3B,GAAK+a,MAAM+d,EAASvS,OAAQr/B,EAAWmwB,EAAK,MAE7D,OAAOA,EAGXL,EAAQsnB,KAAO,SAAUlnB,GACrB,OAAOknB,EAAKlnB,OAAUlwB,IAG1B8vB,EAAQ7rB,UAAUmzC,KAAO,WACrB,OAAOA,EAAKj1C,UAAMnC,MAKpB,CAAC,SAAS,KAAKq3C,GAAG,CAAC,SAAS3nB,EAAQ7vB,EAAO2vB,GAC7C,aACA3vB,EAAO2vB,QAAU,SAASM,EACAuG,EACAC,EACAlD,EACAD,EACAE,GAC1B,IAAIwH,EAAY/K,EAAQgL,WACpBnK,EAAOjB,EAAQ,UACf6G,EAAW5F,EAAK4F,SAEpB,SAAS+gB,EAAsBpnB,EAAUtsB,EAAI2zC,EAAcC,GACvDr1C,KAAKiqC,aAAalc,GAClB,IAAI2M,EAAShC,IACb14B,KAAKs1C,IAAiB,OAAX5a,EAAkBj5B,EAAK+sB,EAAKmM,WAAWD,EAAQj5B,QACrC5D,IAAjBu3C,IACAA,EAAeznB,EAAQ+E,QAAQ0iB,IAClBhY,4BAA4Bp9B,MAE7CA,KAAKu1C,cAAgBH,EACrBp1C,KAAKw1C,oBAAsB,KAEvBx1C,KAAKy1C,YADNJ,IAAUrkB,EACUnvB,MAAM7B,KAAK01B,SACb,IAAV2f,EACY,UAEAx3C,EAEvBmC,KAAK+nC,SAAS9M,qBACdj7B,KAAK0qC,YAAO7sC,GAAY,GA0F5B,SAAS63C,EAAUC,EAAe/5B,GAC1B5b,KAAKk+B,cACLtiB,EAAMovB,SAAS2K,GAEf/5B,EAAM0V,QAAQqkB,GAItB,SAASxS,EAAOpV,EAAUtsB,EAAI2zC,EAAcC,GACxC,MAAkB,mBAAP5zC,EACA0yB,EAAa,gCAAkC3F,EAAK8E,YAAY7xB,IAE/D,IAAI0zC,EAAsBpnB,EAAUtsB,EAAI2zC,EAAcC,GACrDpnB,UAGjB,SAAS2nB,EAASC,GACd71C,KAAK61C,MAAQA,EACb71C,KAAK4b,MAAMk6B,UAAUD,GACrB,IAAIr8B,EAAQyX,EAAoBjxB,KAAKwZ,MAAOxZ,KAAK4b,MAAMmsB,UACvD,OAAIvuB,aAAiBmU,GACjB3tB,KAAK4b,MAAM45B,oBAAsBh8B,EAC1BA,EAAMkY,MAAMqkB,OAAUl4C,OAAWA,EAAWmC,UAAMnC,IAElDk4C,EAAS/zC,KAAKhC,KAAMwZ,GAInC,SAASu8B,EAASv8B,GACd,IAIIwU,EAJApS,EAAQ5b,KAAK4b,MACbqS,EAAUrS,EAAMmsB,SAChBtmC,EAAK2yB,EAASxY,EAAM05B,KACxBrnB,EAAQyJ,gBAGJ1J,OADsBnwB,IAAtB+d,EAAM65B,YACAh0C,EAAGO,KAAKisB,EAAQiE,cAAe1Y,EAAOxZ,KAAKuK,MAAOvK,KAAKoB,QAEvDK,EAAGO,KAAKisB,EAAQiE,cACAlyB,KAAK61C,MAAOr8B,EAAOxZ,KAAKuK,MAAOvK,KAAKoB,mBAE3CusB,IACf/R,EAAM45B,oBAAsBxnB,GAEhC,IAAImO,EAAiBlO,EAAQ0J,cAO7B,OANAzG,EAAMmQ,sBACFrT,EACAmO,OACsBt+B,IAAtB+d,EAAM65B,YAA4B,eAAiB,iBACnDxnB,GAEGD,EA1IXQ,EAAKyR,SAASkV,EAAuBjhB,GAErCihB,EAAsBrzC,UAAUg0C,UAAY,SAASD,QACxBh4C,IAArBmC,KAAKy1C,aACgB,OAArBz1C,KAAKy1C,aACLI,IAAU7kB,GACVhxB,KAAKy1C,YAAYlpC,KAAKspC,IAI9BV,EAAsBrzC,UAAUk0C,cAAgB,SAASx8B,GAIrD,OAHyB,OAArBxZ,KAAKy1C,aACLz1C,KAAKy1C,YAAYlpC,KAAKiN,GAEnBxZ,KAAKy1C,aAGhBN,EAAsBrzC,UAAU6oC,MAAQ,aAExCwK,EAAsBrzC,UAAUovC,mBAAqB,WACjDlxC,KAAKgrC,cAA8BntC,IAArBmC,KAAKy1C,YAA4Bz1C,KAAKy1C,YACLz1C,KAAKu1C,gBAGxDJ,EAAsBrzC,UAAUwvC,iBAAmB,WAC/C,OAAO,GAGX6D,EAAsBrzC,UAAUkpC,SAAW,SAASxxB,GAChDxZ,KAAK+nC,SAASjW,iBAAiBtY,GAC/BxZ,KAAK6qC,QAAU,MAGnBsK,EAAsBrzC,UAAUu0B,iBAAmB,SAAS4f,GACxD,GAAIA,IAAWj2C,KAAKu1C,cAAe,OAAOv1C,KAAKu1B,UAC3Cv1B,KAAKuoC,gBACTvoC,KAAKk2C,oBACDl2C,KAAKw1C,+BAA+B7nB,GACpC3tB,KAAKw1C,oBAAoBt8B,SAEzBlZ,KAAKu1C,yBAAyB5nB,GAC9B3tB,KAAKu1C,cAAcr8B,WAI3Bi8B,EAAsBrzC,UAAUmvC,SAAW,SAAUrG,GAEjD,IAAIpxB,EACAha,EAFJQ,KAAK6qC,QAAUD,EAGf,IAAIxpC,EAASwpC,EAAOxpC,OAWpB,QAV2BvD,IAAvBmC,KAAKu1C,eACL/7B,EAAQxZ,KAAKu1C,cACb/1C,EAAI,IAEJga,EAAQmU,EAAQ+E,QAAQkY,EAAO,IAC/BprC,EAAI,GAGRQ,KAAKw1C,oBAAsBh8B,GAEtBA,EAAMqtB,aACP,KAAOrnC,EAAI4B,IAAU5B,EAAG,CACpB,IAAI64B,EAAM,CACNwd,MAAO,KACPr8B,MAAOoxB,EAAOprC,GACd+K,MAAO/K,EACP4B,OAAQA,EACRwa,MAAO5b,MAEXwZ,EAAQA,EAAMkY,MAAMkkB,OAAU/3C,OAAWA,EAAWw6B,OAAKx6B,QAIxCA,IAArBmC,KAAKy1C,cACLj8B,EAAQA,EACHkY,MAAM1xB,KAAKg2C,mBAAen4C,OAAWA,EAAWmC,UAAMnC,IAE/D2b,EAAMkY,MAAMgkB,EAAWA,OAAW73C,EAAW2b,EAAOxZ,OAGxD2tB,EAAQ7rB,UAAUqhC,OAAS,SAAU1hC,EAAI2zC,GACrC,OAAOjS,EAAOnjC,KAAMyB,EAAI2zC,EAAc,OAG1CznB,EAAQwV,OAAS,SAAUpV,EAAUtsB,EAAI2zC,EAAcC,GACnD,OAAOlS,EAAOpV,EAAUtsB,EAAI2zC,EAAcC,MAyD5C,CAAC,SAAS,KAAKc,GAAG,CAAC,SAAS5oB,EAAQ7vB,EAAO2vB,GAC7C,aACA,IACIiB,EAsBQnJ,EACAthB,EACAuyC,EACAC,EA1BR7nB,EAAOjB,EAAQ,UAKf+oB,EAAgB9nB,EAAK+nB,mBACzB,GAAI/nB,EAAKyB,QAAsC,oBAArBumB,iBAAkC,CACxD,IAAIC,EAAqBjb,EAAOkb,aAC5BC,EAAkBzmB,EAAQ0mB,SAC9BtoB,EAAWE,EAAKqoB,aACF,SAASp1C,GAAMg1C,EAAmBz0C,KAAKw5B,EAAQ/5B,IAC/C,SAASA,GAAMk1C,EAAgB30C,KAAKkuB,EAASzuB,SACxD,GAA6B,mBAAlB60C,GAC0B,mBAA1BA,EAAc5jB,QAAwB,CACpD,IAAIokB,EAAgBR,EAAc5jB,UAClCpE,EAAW,SAAS7sB,GAChBq1C,EAAc9P,KAAKvlC,SAiCvB6sB,EA/BoC,oBAArBkoB,kBACW,oBAAXj4C,QACPA,OAAOw4C,YACNx4C,OAAOw4C,UAAUC,YAAcz4C,OAAO04C,cA2BhB,IAAjBP,EACH,SAAUj1C,GACjBi1C,EAAaj1C,IAEY,oBAAfmI,WACH,SAAUnI,GACjBmI,WAAWnI,EAAI,IApDA,WACnB,MAAM,IAAI+rB,MAAM,oEAoBRrI,EAAM7mB,SAASuI,cAAc,OAC7BhD,EAAO,CAACiO,YAAY,GACpBskC,GAAkB,EAClBC,EAAO/3C,SAASuI,cAAc,OACzB,IAAI2vC,kBAAiB,WAC1BrxB,EAAI+xB,UAAUC,OAAO,OACrBf,GAAkB,KAEnBgB,QAAQf,EAAMxyC,GAQV,SAAkBpC,GACrB,IAAIoH,EAAI,IAAI2tC,kBAAiB,WACzB3tC,EAAEwuC,aACF51C,OAEJoH,EAAEuuC,QAAQjyB,EAAKthB,GAVXuyC,IACJA,GAAkB,EAClBC,EAAKa,UAAUC,OAAO,UAuBlCz5C,EAAO2vB,QAAUiB,GAEf,CAAC,SAAS,KAAKgpB,GAAG,CAAC,SAAS/pB,EAAQ7vB,EAAO2vB,GAC7C,aACA3vB,EAAO2vB,QACH,SAASM,EAASuG,EAAchD,GACpC,IAAIub,EAAoB9e,EAAQ8e,kBAGhC,SAAS8K,EAAoB3M,GACzB5qC,KAAKiqC,aAAaW,GAHXrd,EAAQ,UAKd0S,SAASsX,EAAqBrjB,GAEnCqjB,EAAoBz1C,UAAU01C,iBAAmB,SAAUjtC,EAAOktC,GAG9D,OAFAz3C,KAAK6qC,QAAQtgC,GAASktC,IACAz3C,KAAK+qC,gBACN/qC,KAAK01B,UACtB11B,KAAKgrC,SAAShrC,KAAK6qC,UACZ,IAKf0M,EAAoBz1C,UAAUgnC,kBAAoB,SAAUtvB,EAAOjP,GAC/D,IAAIyjB,EAAM,IAAIye,EAGd,OAFAze,EAAI6D,UAAY,SAChB7D,EAAI0pB,mBAAqBl+B,EAClBxZ,KAAKw3C,iBAAiBjtC,EAAOyjB,IAExCupB,EAAoBz1C,UAAUknC,iBAAmB,SAAU/O,EAAQ1vB,GAC/D,IAAIyjB,EAAM,IAAIye,EAGd,OAFAze,EAAI6D,UAAY,SAChB7D,EAAI0pB,mBAAqBzd,EAClBj6B,KAAKw3C,iBAAiBjtC,EAAOyjB,IAGxCL,EAAQgqB,OAAS,SAAU5pB,GAEvB,OADAmD,EAAMmR,WAAW,YAAa,cACvB,IAAIkV,EAAoBxpB,GAAUE,WAG7CN,EAAQ7rB,UAAU61C,OAAS,WACvB,OAAOhqB,EAAQgqB,OAAO33C,SAIxB,CAAC,SAAS,KAAK43C,GAAG,CAAC,SAASrqB,EAAQ7vB,EAAO2vB,GAC7C,aACA3vB,EAAO2vB,QACP,SAASM,EAASuG,EAAcC,GAChC,IAAI3F,EAAOjB,EAAQ,UACf+W,EAAa/W,EAAQ,YAAY+W,WACjCD,EAAiB9W,EAAQ,YAAY8W,eACrC32B,EAAU8gB,EAAK9gB,QACfmqC,EAAe,GAGnB,SAASjqB,EAAiBgd,GACtB5qC,KAAKiqC,aAAaW,GAClB5qC,KAAK83C,SAAW,EAChB93C,KAAK+3C,SAAU,EACf/3C,KAAKg4C,cAAe,EAiHxB,SAASC,EAAKlqB,EAAUmqB,GACpB,IAAe,EAAVA,KAAiBA,GAAWA,EAAU,EACvC,OAAO/jB,EAAa,kEAExB,IAAInG,EAAM,IAAIJ,EAAiBG,GAC3BE,EAAUD,EAAIC,UAGlB,OAFAD,EAAIE,WAAWgqB,GACflqB,EAAIpuB,OACGquB,EAvHXO,EAAKyR,SAASrS,EAAkBsG,GAEhCtG,EAAiB9rB,UAAU6oC,MAAQ,WAC/B,GAAK3qC,KAAKg4C,aAGV,GAAsB,IAAlBh4C,KAAK83C,SAAT,CAIA93C,KAAK0qC,YAAO7sC,GAAY,GACxB,IAAIs6C,EAAkBzqC,EAAQ1N,KAAK6qC,UAC9B7qC,KAAKuoC,eACN4P,GACAn4C,KAAK83C,SAAW93C,KAAKo4C,uBACrBp4C,KAAKsxB,QAAQtxB,KAAKq4C,eAAer4C,KAAKoB,gBARtCpB,KAAKgrC,SAAS,KAYtBpd,EAAiB9rB,UAAUlC,KAAO,WAC9BI,KAAKg4C,cAAe,EACpBh4C,KAAK2qC,SAGT/c,EAAiB9rB,UAAUqsB,UAAY,WACnCnuB,KAAK+3C,SAAU,GAGnBnqB,EAAiB9rB,UAAUo2C,QAAU,WACjC,OAAOl4C,KAAK83C,UAGhBlqB,EAAiB9rB,UAAUosB,WAAa,SAAUoqB,GAC9Ct4C,KAAK83C,SAAWQ,GAGpB1qB,EAAiB9rB,UAAUgnC,kBAAoB,SAAUtvB,GAErD,OADAxZ,KAAKu4C,cAAc/+B,GACfxZ,KAAKw4C,eAAiBx4C,KAAKk4C,YAC3Bl4C,KAAK6qC,QAAQzpC,OAASpB,KAAKk4C,UACJ,IAAnBl4C,KAAKk4C,WAAmBl4C,KAAK+3C,QAC7B/3C,KAAKgrC,SAAShrC,KAAK6qC,QAAQ,IAE3B7qC,KAAKgrC,SAAShrC,KAAK6qC,UAEhB,IAKfjd,EAAiB9rB,UAAUknC,iBAAmB,SAAU/O,GAEpD,OADAj6B,KAAKy4C,aAAaxe,GACXj6B,KAAK04C,iBAGhB9qB,EAAiB9rB,UAAU4mC,kBAAoB,WAC3C,OAAI1oC,KAAK6qC,mBAAmBld,GAA2B,MAAhB3tB,KAAK6qC,QACjC7qC,KAAKu1B,WAEhBv1B,KAAKy4C,aAAaZ,GACX73C,KAAK04C,kBAGhB9qB,EAAiB9rB,UAAU42C,cAAgB,WACvC,GAAI14C,KAAKk4C,UAAYl4C,KAAKo4C,sBAAuB,CAE7C,IADA,IAAI5wC,EAAI,IAAI68B,EACH7kC,EAAIQ,KAAKoB,SAAU5B,EAAIQ,KAAK6qC,QAAQzpC,SAAU5B,EAC/CQ,KAAK6qC,QAAQrrC,KAAOq4C,GACpBrwC,EAAE+E,KAAKvM,KAAK6qC,QAAQrrC,IAQ5B,OALIgI,EAAEpG,OAAS,EACXpB,KAAKsxB,QAAQ9pB,GAEbxH,KAAKu1B,WAEF,EAEX,OAAO,GAGX3H,EAAiB9rB,UAAU02C,WAAa,WACpC,OAAOx4C,KAAK+qC,gBAGhBnd,EAAiB9rB,UAAU62C,UAAY,WACnC,OAAO34C,KAAK6qC,QAAQzpC,OAASpB,KAAKoB,UAGtCwsB,EAAiB9rB,UAAU22C,aAAe,SAAUxe,GAChDj6B,KAAK6qC,QAAQt+B,KAAK0tB,IAGtBrM,EAAiB9rB,UAAUy2C,cAAgB,SAAU/+B,GACjDxZ,KAAK6qC,QAAQ7qC,KAAK+qC,kBAAoBvxB,GAG1CoU,EAAiB9rB,UAAUs2C,oBAAsB,WAC7C,OAAOp4C,KAAKoB,SAAWpB,KAAK24C,aAGhC/qB,EAAiB9rB,UAAUu2C,eAAiB,SAAUC,GAClD,IAAIjlB,EAAU,qCACNrzB,KAAK83C,SAAW,4BAA8BQ,EAAQ,SAC9D,OAAO,IAAIhU,EAAWjR,IAG1BzF,EAAiB9rB,UAAUovC,mBAAqB,WAC5ClxC,KAAKsxB,QAAQtxB,KAAKq4C,eAAe,KAcrC1qB,EAAQsqB,KAAO,SAAUlqB,EAAUmqB,GAC/B,OAAOD,EAAKlqB,EAAUmqB,IAG1BvqB,EAAQ7rB,UAAUm2C,KAAO,SAAUC,GAC/B,OAAOD,EAAKj4C,KAAMk4C,IAGtBvqB,EAAQE,kBAAoBD,IAG1B,CAAC,WAAW,GAAG,SAAS,KAAKgrB,GAAG,CAAC,SAASrrB,EAAQ7vB,EAAO2vB,GAC3D,aACA3vB,EAAO2vB,QAAU,SAASM,GAC1B,SAAS8e,EAAkBxe,QACPpwB,IAAZowB,GACAA,EAAUA,EAAQoE,UAClBryB,KAAK6xB,UAAY5D,EAAQ4D,UACzB7xB,KAAK03C,mBAAqBzpB,EAAQigB,gBAC5BjgB,EAAQiM,qBAAkBr8B,IAGhCmC,KAAK6xB,UAAY,EACjB7xB,KAAK03C,wBAAqB75C,GAIlC4uC,EAAkB3qC,UAAUo4B,cAAgB,WACxC,OAAOl6B,KAAK03C,oBAGhB,IAAIl+B,EAAQizB,EAAkB3qC,UAAU0X,MAAQ,WAC5C,IAAKxZ,KAAKk+B,cACN,MAAM,IAAI3K,UAAU,6FAExB,OAAOvzB,KAAKk6B,iBAGZD,EAASwS,EAAkB3qC,UAAUiB,MACzC0pC,EAAkB3qC,UAAUm4B,OAAS,WACjC,IAAKj6B,KAAK6mC,aACN,MAAM,IAAItT,UAAU,2FAExB,OAAOvzB,KAAKk6B,iBAGZgE,EAAcuO,EAAkB3qC,UAAUo8B,YAAc,WACxD,OAAuC,IAAd,SAAjBl+B,KAAK6xB,YAGbgV,EAAa4F,EAAkB3qC,UAAU+kC,WAAa,WACtD,OAAuC,IAAd,SAAjB7mC,KAAK6xB,YAGbgE,EAAY4W,EAAkB3qC,UAAU+zB,UAAY,WACpD,OAAuC,IAAd,SAAjB71B,KAAK6xB,YAGb0f,EAAa9E,EAAkB3qC,UAAUyvC,WAAa,WACtD,OAAuC,IAAd,SAAjBvxC,KAAK6xB,YAGjB4a,EAAkB3qC,UAAUk0B,YAAc,WACtC,OAAsC,IAAb,QAAjBh2B,KAAK6xB,YAGjBlE,EAAQ7rB,UAAU+2C,cAAgB,WAC9B,OAAoC,QAAX,MAAjB74C,KAAK6xB,YAGjBlE,EAAQ7rB,UAAUg0B,aAAe,WAC7B,OAAO91B,KAAKqyB,UAAUwmB,iBAG1BlrB,EAAQ7rB,UAAUk0B,YAAc,WAC5B,OAAgD,IAAb,QAA3Bh2B,KAAKqyB,UAAUR,YAG3BlE,EAAQ7rB,UAAU+zB,UAAY,WAC1B,OAAOA,EAAU7zB,KAAKhC,KAAKqyB,YAG/B1E,EAAQ7rB,UAAU+kC,WAAa,WAC3B,OAAOA,EAAW7kC,KAAKhC,KAAKqyB,YAGhC1E,EAAQ7rB,UAAUo8B,YAAc,WAC5B,OAAOA,EAAYl8B,KAAKhC,KAAKqyB,YAGjC1E,EAAQ7rB,UAAUyvC,WAAa,WAC3B,OAAOA,EAAWvvC,KAAKhC,KAAKqyB,YAGhC1E,EAAQ7rB,UAAU0X,MAAQ,WACtB,OAAOA,EAAMxX,KAAKhC,KAAKqyB,YAG3B1E,EAAQ7rB,UAAUm4B,OAAS,WACvB,IAAIxyB,EAASzH,KAAKqyB,UAElB,OADA5qB,EAAO6yB,6BACAL,EAAOj4B,KAAKyF,IAGvBkmB,EAAQ7rB,UAAUkhC,OAAS,WACvB,OAAOhjC,KAAKk6B,iBAGhBvM,EAAQ7rB,UAAU+gC,QAAU,WAExB,OADA7iC,KAAKs6B,6BACEt6B,KAAKk6B,iBAGhBvM,EAAQ8e,kBAAoBA,IAG1B,IAAIqM,GAAG,CAAC,SAASvrB,EAAQ7vB,EAAO2vB,GAClC,aACA3vB,EAAO2vB,QAAU,SAASM,EAASqD,GACnC,IAAIxC,EAAOjB,EAAQ,UACf8G,EAAW7F,EAAK6F,SAChB2C,EAAWxI,EAAKwI,SA0ChB+hB,EAAU,GAAG5nC,eAsCjB,OA9EA,SAA6BlQ,EAAK4e,GAC9B,GAAImX,EAAS/1B,GAAM,CACf,GAAIA,aAAe0sB,EAAS,OAAO1sB,EACnC,IAAI+lC,EA4BZ,SAAiB/lC,GACb,IACI,OANR,SAAmBA,GACf,OAAOA,EAAI+lC,KAKAgS,CAAU/3C,GACnB,MAAOuG,GAEL,OADA6sB,EAAS7sB,EAAIA,EACN6sB,GAjCI4kB,CAAQh4C,GACnB,GAAI+lC,IAAS3S,EAAU,CACfxU,GAASA,EAAQ6X,eACrB,IAAI1J,EAAML,EAAQuP,OAAO8J,EAAKx/B,GAE9B,OADIqY,GAASA,EAAQ8X,cACd3J,EACJ,GAAoB,mBAATgZ,EACd,OA+BZ,SAA8B/lC,GAC1B,IACI,OAAO83C,EAAQ/2C,KAAKf,EAAK,aAC3B,MAAOuG,GACL,OAAO,GAnCC0xC,CAAqBj4C,IACjB+sB,EAAM,IAAIL,EAAQqD,GACtB/vB,EAAIywB,MACA1D,EAAIya,SACJza,EAAIsD,aACJzzB,EACAmwB,EACA,MAEGA,GA8BvB,SAAoBjf,EAAGi4B,EAAMnnB,GACzB,IAAIoO,EAAU,IAAIN,EAAQqD,GACtBhD,EAAMC,EACNpO,GAASA,EAAQ6X,eACrBzJ,EAAQgN,qBACJpb,GAASA,EAAQ8X,cACrB,IACIz1B,EAASssB,EAAK4F,SAAS4S,GAAMhlC,KAAK+M,GAQtC,SAAiByK,GACRyU,IACLA,EAAQ6D,iBAAiBtY,GACzByU,EAAU,SAGd,SAAgBgM,GACPhM,IACLA,EAAQib,gBAAgBjP,GAfd,GAemC,GAC7ChM,EAAU,SAEd,OAhBIA,GAAW/rB,IAAWmyB,IACtBpG,EAAQib,gBAAgBhnC,EAAOsF,GAAG,GAAM,GACxCymB,EAAU,MAcPD,EAtDQmrB,CAAWl4C,EAAK+lC,EAAMnnB,GAGrC,OAAO5e,KAyDT,CAAC,SAAS,KAAKm4C,GAAG,CAAC,SAAS7rB,EAAQ7vB,EAAO2vB,GAC7C,aACA3vB,EAAO2vB,QAAU,SAASM,EAASqD,EAAUE,GAC7C,IAAI1C,EAAOjB,EAAQ,UACf6W,EAAezW,EAAQyW,aAE3B,SAASiV,EAAcC,GACnBt5C,KAAKs5C,OAASA,EAGlBD,EAAcv3C,UAAUu0B,iBAAmB,WACvCpsB,aAAajK,KAAKs5C,SAGtB,IAAIC,EAAa,SAAS//B,GAAS,OAAOggC,GAAOx5C,MAAM0iC,WAAWlpB,IAC9DggC,EAAQ7rB,EAAQ6rB,MAAQ,SAAUC,EAAIjgC,GACtC,IAAIwU,EACAsrB,EAgBJ,YAfcz7C,IAAV2b,GACAwU,EAAML,EAAQ+E,QAAQlZ,GACbkY,MAAM6nB,EAAY,KAAM,KAAME,OAAI57C,GACvCqzB,EAAMsD,gBAAkBhb,aAAiBmU,GACzCK,EAAIuE,aAAa/Y,KAGrBwU,EAAM,IAAIL,EAAQqD,GAClBsoB,EAAS1vC,YAAW,WAAaokB,EAAIya,cAAgBgR,GACjDvoB,EAAMsD,gBACNxG,EAAIuE,aAAa,IAAI8mB,EAAcC,IAEvCtrB,EAAIiN,sBAERjN,EAAImgB,sBACGngB,GA2BX,SAAS0rB,EAAalgC,GAElB,OADAvP,aAAajK,KAAKs5C,QACX9/B,EAGX,SAASmgC,EAAa1f,GAElB,MADAhwB,aAAajK,KAAKs5C,QACZrf,EA/BVtM,EAAQ7rB,UAAU03C,MAAQ,SAAUC,GAChC,OAAOD,EAAMC,EAAIz5C,OAiCrB2tB,EAAQ7rB,UAAU83C,QAAU,SAAUH,EAAIpmB,GAEtC,IAAIrF,EAAK1pB,EADTm1C,GAAMA,EAGN,IAAII,EAAgB,IAAIR,EAAczvC,YAAW,WACzCokB,EAAI6H,aAnCG,SAAU5H,EAASoF,EAAS/uB,GAC3C,IAAI48B,EAGIA,EAFe,iBAAZ7N,EACHA,aAAmB7F,MACb6F,EAEA,IAAI+Q,EAAa,uBAGrB,IAAIA,EAAa/Q,GAE3B7E,EAAKkd,+BAA+BxK,GACpCjT,EAAQmI,kBAAkB8K,GAC1BjT,EAAQqD,QAAQ4P,GAEF,MAAV58B,GACAA,EAAO4U,SAoBH4gC,CAAa9rB,EAAKqF,EAAS/uB,KAEhCm1C,IAYH,OAVIvoB,EAAMsD,gBACNlwB,EAAStE,KAAKgnC,QACdhZ,EAAM1pB,EAAOotB,MAAMgoB,EAAcC,OACb97C,EAAWg8C,OAAeh8C,IAC1C00B,aAAasnB,IAEjB7rB,EAAMhuB,KAAK0xB,MAAMgoB,EAAcC,OACX97C,EAAWg8C,OAAeh8C,GAG3CmwB,KAKT,CAAC,SAAS,KAAK+rB,GAAG,CAAC,SAASxsB,EAAQ7vB,EAAO2vB,GAC7C,aACA3vB,EAAO2vB,QAAU,SAAUM,EAASwG,EAAclD,EAC9C4b,EAAe7b,EAAUE,GACzB,IAAI1C,EAAOjB,EAAQ,UACfgG,EAAYhG,EAAQ,YAAYgG,UAChC0M,EAAW1S,EAAQ,UAAU0S,SAC7B5L,EAAW7F,EAAK6F,SAChBD,EAAW5F,EAAK4F,SAChB4lB,EAAO,GAEX,SAASvX,EAAQj7B,GACboC,YAAW,WAAW,MAAMpC,IAAK,GAarC,SAASyyC,EAAQC,EAAWzC,GACxB,IAAIj4C,EAAI,EACJ6nC,EAAM6S,EAAU94C,OAChB4sB,EAAM,IAAIL,EAAQqD,GAqBtB,OApBA,SAASmpB,IACL,GAAI36C,GAAK6nC,EAAK,OAAOrZ,EAAIya,WACzB,IAAIrW,EAhBZ,SAAkCgoB,GAC9B,IAAIhoB,EAAenB,EAAoBmpB,GAOvC,OANIhoB,IAAiBgoB,GACiB,mBAA3BA,EAASC,eACiB,mBAA1BD,EAASE,cAChBF,EAASC,iBACTjoB,EAAamoB,eAAeH,EAASE,gBAElCloB,EAQgBooB,CAAyBN,EAAU16C,MACtD,GAAI4yB,aAAwBzE,GACxByE,EAAaioB,gBAAiB,CAC9B,IACIjoB,EAAenB,EACXmB,EAAakoB,eAAeG,WAAWhD,GACvCyC,EAAUjsB,SAChB,MAAOzmB,GACL,OAAOi7B,EAAQj7B,GAEnB,GAAI4qB,aAAwBzE,EACxB,OAAOyE,EAAaV,MAAMyoB,EAAU1X,EACV,KAAM,KAAM,MAG9C0X,IAEJA,GACOnsB,EAGX,SAAS0sB,EAAS/6C,EAAMsuB,EAASpO,GAC7B7f,KAAKI,MAAQT,EACbK,KAAK+nC,SAAW9Z,EAChBjuB,KAAK26C,SAAW96B,EAoCpB,SAAS+6B,EAAiBn5C,EAAIwsB,EAASpO,GACnC7f,KAAKiqC,aAAaxoC,EAAIwsB,EAASpO,GASnC,SAASg7B,EAAoBrhC,GACzB,OAAIkhC,EAASI,WAAWthC,IACpBxZ,KAAKk6C,UAAUl6C,KAAKuK,OAAOgwC,eAAe/gC,GACnCA,EAAMyU,WAEVzU,EAGX,SAASuhC,EAAa35C,GAClBpB,KAAKoB,OAASA,EACdpB,KAAKiuB,QAAU,KACfjuB,KAAKoB,EAAO,GAAK,KAtDrBs5C,EAAS54C,UAAUnC,KAAO,WACtB,OAAOK,KAAKI,OAGhBs6C,EAAS54C,UAAUmsB,QAAU,WACzB,OAAOjuB,KAAK+nC,UAGhB2S,EAAS54C,UAAUk5C,SAAW,WAC1B,OAAIh7C,KAAKiuB,UAAUiQ,cACRl+B,KAAKiuB,UAAUzU,QAEnBwgC,GAGXU,EAAS54C,UAAU24C,WAAa,SAAShD,GACrC,IAAIuD,EAAWh7C,KAAKg7C,WAChBn7B,EAAU7f,KAAK26C,cACH98C,IAAZgiB,GAAuBA,EAAQ6X,eACnC,IAAI1J,EAAMgtB,IAAahB,EACjBh6C,KAAKi7C,UAAUD,EAAUvD,GAAc,KAI7C,YAHgB55C,IAAZgiB,GAAuBA,EAAQ8X,cACnC33B,KAAK+nC,SAASmT,mBACdl7C,KAAKI,MAAQ,KACN4tB,GAGX0sB,EAASI,WAAa,SAAUlsC,GAC5B,OAAa,MAALA,GACsB,mBAAfA,EAAEosC,UACe,mBAAjBpsC,EAAE6rC,YAMrBxa,EAAS2a,EAAkBF,GAE3BE,EAAiB94C,UAAUm5C,UAAY,SAAUD,EAAUvD,GAEvD,OADSz3C,KAAKL,OACJqC,KAAKg5C,EAAUA,EAAUvD,IAiBvCsD,EAAaj5C,UAAUu0B,iBAAmB,WAEtC,IADA,IAAIgR,EAAMrnC,KAAKoB,OACN5B,EAAI,EAAGA,EAAI6nC,IAAO7nC,EAAG,CAC1B,IAAIuc,EAAO/b,KAAKR,GACZuc,aAAgB4R,GAChB5R,EAAK7C,WAKjByU,EAAQwtB,MAAQ,WACZ,IAAI9T,EAAMplC,UAAUb,OACpB,GAAIimC,EAAM,EAAG,OAAOlT,EACJ,uDAChB,IAIIinB,EAJA35C,EAAKQ,UAAUolC,EAAM,GACzB,GAAkB,mBAAP5lC,EACP,OAAO0yB,EAAa,gCAAkC3F,EAAK8E,YAAY7xB,IAG3E,IAAI45C,GAAa,EACL,IAARhU,GAAaxlC,MAAM6L,QAAQzL,UAAU,KAErColC,GADA+T,EAAQn5C,UAAU,IACNb,OACZi6C,GAAa,IAEbD,EAAQn5C,UACRolC,KAGJ,IADA,IAAI6S,EAAY,IAAIa,EAAa1T,GACxB7nC,EAAI,EAAGA,EAAI6nC,IAAO7nC,EAAG,CAC1B,IAAIw7C,EAAWI,EAAM57C,GACrB,GAAIk7C,EAASI,WAAWE,GAAW,CAC/B,IAAIM,EAAWN,GACfA,EAAWA,EAAS/sB,WACXssB,eAAee,OACrB,CACH,IAAIlpB,EAAenB,EAAoB+pB,GACnC5oB,aAAwBzE,IACxBqtB,EACI5oB,EAAaV,MAAMmpB,EAAqB,KAAM,KAAM,CAChDX,UAAWA,EACX3vC,MAAO/K,QACZ3B,IAGXq8C,EAAU16C,GAAKw7C,EAGnB,IAAIO,EAAqB,IAAI15C,MAAMq4C,EAAU94C,QAC7C,IAAS5B,EAAI,EAAGA,EAAI+7C,EAAmBn6C,SAAU5B,EAC7C+7C,EAAmB/7C,GAAKmuB,EAAQ+E,QAAQwnB,EAAU16C,IAAI+tC,UAG1D,IAAIiO,EAAgB7tB,EAAQ0V,IAAIkY,GAC3BvU,MAAK,SAASyU,GACX,IAAK,IAAIj8C,EAAI,EAAGA,EAAIi8C,EAAYr6C,SAAU5B,EAAG,CACzC,IAAIi4C,EAAagE,EAAYj8C,GAC7B,GAAIi4C,EAAW5Q,aAEX,OADAxS,EAAS7sB,EAAIiwC,EAAW10C,QACjBsxB,EACJ,IAAKojB,EAAWvZ,cAEnB,YADAsd,EAActiC,SAGlBuiC,EAAYj8C,GAAKi4C,EAAWj+B,QAEhCyU,EAAQyJ,eAERj2B,EAAK2yB,EAAS3yB,GACd,IAAIusB,EAAMqtB,EACJ55C,EAAGY,WAAMxE,EAAW49C,GAAeh6C,EAAGg6C,GACxCtf,EAAiBlO,EAAQ0J,cAG7B,OAFAzG,EAAMmQ,sBACFrT,EAAKmO,EAAgB,gBAAiBlO,GACnCD,KAGXC,EAAUutB,EAAcvU,QAAO,WAC/B,IAAIwQ,EAAa,IAAI9pB,EAAQ8e,kBAAkB+O,GAC/C,OAAOvB,EAAQC,EAAWzC,MAI9B,OAFAyC,EAAUjsB,QAAUA,EACpBA,EAAQsE,aAAa2nB,GACdjsB,GAGXN,EAAQ7rB,UAAUy4C,eAAiB,SAAUe,GACzCt7C,KAAK6xB,UAA6B,OAAjB7xB,KAAK6xB,UACtB7xB,KAAK07C,UAAYJ,GAGrB3tB,EAAQ7rB,UAAUu4C,cAAgB,WAC9B,OAAyB,OAAjBr6C,KAAK6xB,WAAsB,GAGvClE,EAAQ7rB,UAAUw4C,aAAe,WAC7B,OAAOt6C,KAAK07C,WAGhB/tB,EAAQ7rB,UAAUo5C,iBAAmB,WACjCl7C,KAAK6xB,WAA6B,OAAjB7xB,KAAK6xB,UACtB7xB,KAAK07C,eAAY79C,GAGrB8vB,EAAQ7rB,UAAUw5C,SAAW,SAAU75C,GACnC,GAAkB,mBAAPA,EACP,OAAO,IAAIm5C,EAAiBn5C,EAAIzB,KAAM6sC,KAE1C,MAAM,IAAItZ,KAKhB,CAAC,WAAW,GAAG,SAAS,KAAKooB,GAAG,CAAC,SAASpuB,EAAQ7vB,EAAO2vB,GAC3D,aACA,IAAIsW,EAAMpW,EAAQ,SACd2F,EAAkC,oBAAb6jB,UAErB1iB,EAAW,CAAC7sB,EAAG,IACfo0C,EACAC,EAA+B,oBAATv9B,KAAuBA,KAC3B,oBAAX/f,OAAyBA,YACd,IAAXi9B,EAAyBA,OACvB39B,IAATmC,KAAqBA,KAAO,KAEhC,SAAS87C,IACL,IACI,IAAIr0C,EAASm0C,EAEb,OADAA,EAAiB,KACVn0C,EAAOpF,MAAMrC,KAAMiC,WAC5B,MAAOuF,GAEL,OADA6sB,EAAS7sB,EAAIA,EACN6sB,GAGf,SAASD,EAAS3yB,GAEd,OADAm6C,EAAiBn6C,EACVq6C,EAGX,IAAI7b,EAAW,SAASn8B,EAAOi4C,GAC3B,IAAIhD,EAAU,GAAG5nC,eAEjB,SAAS6qC,IAGL,IAAK,IAAInoB,KAFT7zB,KAAKkkC,YAAcpgC,EACnB9D,KAAKiqC,aAAe8R,EACKA,EAAOj6C,UACxBi3C,EAAQ/2C,KAAK+5C,EAAOj6C,UAAW+xB,IACgB,MAA/CA,EAAajpB,OAAOipB,EAAazyB,OAAO,KAExCpB,KAAK6zB,EAAe,KAAOkoB,EAAOj6C,UAAU+xB,IAMxD,OAFAmoB,EAAEl6C,UAAYi6C,EAAOj6C,UACrBgC,EAAMhC,UAAY,IAAIk6C,EACfl4C,EAAMhC,WAIjB,SAASm6C,EAAYtlC,GACjB,OAAc,MAAPA,IAAuB,IAARA,IAAwB,IAARA,GACnB,iBAARA,GAAmC,iBAARA,EAI1C,SAASqgB,EAASxd,GACd,MAAwB,mBAAVA,GACU,iBAAVA,GAAgC,OAAVA,EAGxC,SAAS8xB,EAAiB4Q,GACtB,OAAKD,EAAYC,GAEV,IAAI1uB,MAAM2uB,EAAaD,IAFOA,EAKzC,SAASxK,EAAajqC,EAAQ20C,GAC1B,IAEI58C,EAFA6nC,EAAM5/B,EAAOrG,OACb4sB,EAAM,IAAInsB,MAAMwlC,EAAM,GAE1B,IAAK7nC,EAAI,EAAGA,EAAI6nC,IAAO7nC,EACnBwuB,EAAIxuB,GAAKiI,EAAOjI,GAGpB,OADAwuB,EAAIxuB,GAAK48C,EACFpuB,EAGX,SAASmkB,EAAyBlxC,EAAKwK,EAAK4wC,GACxC,IAAI1Y,EAAIyB,MASJ,MAAO,GAAGj0B,eAAenP,KAAKf,EAAKwK,GAAOxK,EAAIwK,QAAO5N,EARrD,IAAIkoC,EAAOhZ,OAAOuY,yBAAyBrkC,EAAKwK,GAEhD,OAAY,MAARs6B,EACmB,MAAZA,EAAK1xB,KAA2B,MAAZ0xB,EAAK1a,IACtB0a,EAAKvsB,MACL6iC,OAHd,EAUR,SAAS5d,EAAkBx9B,EAAKX,EAAMkZ,GAClC,GAAIyiC,EAAYh7C,GAAM,OAAOA,EAC7B,IAAI2kC,EAAa,CACbpsB,MAAOA,EACPirB,cAAc,EACdE,YAAY,EACZD,UAAU,GAGd,OADAf,EAAIa,eAAevjC,EAAKX,EAAMslC,GACvB3kC,EAGX,SAASwhC,EAAQn0B,GACb,MAAMA,EAGV,IAAIgkC,EAAoB,WACpB,IAAIgK,EAAqB,CACrBz6C,MAAMC,UACNirB,OAAOjrB,UACPy6C,SAASz6C,WAGT06C,EAAkB,SAAS7lC,GAC3B,IAAK,IAAInX,EAAI,EAAGA,EAAI88C,EAAmBl7C,SAAU5B,EAC7C,GAAI88C,EAAmB98C,KAAOmX,EAC1B,OAAO,EAGf,OAAO,GAGX,GAAIgtB,EAAIyB,MAAO,CACX,IAAI1O,EAAU3J,OAAOyY,oBACrB,OAAO,SAASvkC,GAGZ,IAFA,IAAI+sB,EAAM,GACNyuB,EAAc1vB,OAAO/tB,OAAO,MAClB,MAAPiC,IAAgBu7C,EAAgBv7C,IAAM,CACzC,IAAI01B,EACJ,IACIA,EAAOD,EAAQz1B,GACjB,MAAOuG,GACL,OAAOwmB,EAEX,IAAK,IAAIxuB,EAAI,EAAGA,EAAIm3B,EAAKv1B,SAAU5B,EAAG,CAClC,IAAIiM,EAAMkrB,EAAKn3B,GACf,IAAIi9C,EAAYhxC,GAAhB,CACAgxC,EAAYhxC,IAAO,EACnB,IAAIs6B,EAAOhZ,OAAOuY,yBAAyBrkC,EAAKwK,GACpC,MAARs6B,GAA4B,MAAZA,EAAK1xB,KAA2B,MAAZ0xB,EAAK1a,KACzC2C,EAAIzhB,KAAKd,IAGjBxK,EAAM0iC,EAAI8B,eAAexkC,GAE7B,OAAO+sB,GAGX,IAAI+qB,EAAU,GAAG5nC,eACjB,OAAO,SAASlQ,GACZ,GAAIu7C,EAAgBv7C,GAAM,MAAO,GACjC,IAAI+sB,EAAM,GAGV0uB,EAAa,IAAK,IAAIjxC,KAAOxK,EACzB,GAAI83C,EAAQ/2C,KAAKf,EAAKwK,GAClBuiB,EAAIzhB,KAAKd,OACN,CACH,IAAK,IAAIjM,EAAI,EAAGA,EAAI88C,EAAmBl7C,SAAU5B,EAC7C,GAAIu5C,EAAQ/2C,KAAKs6C,EAAmB98C,GAAIiM,GACpC,SAASixC,EAGjB1uB,EAAIzhB,KAAKd,GAGjB,OAAOuiB,GA5DK,GAkEpB2uB,EAAwB,sBAC5B,SAASvJ,EAAQ3xC,GACb,IACI,GAAkB,mBAAPA,EAAmB,CAC1B,IAAIk1B,EAAOgN,EAAI4B,MAAM9jC,EAAGK,WAEpB86C,EAAajZ,EAAIyB,OAASzO,EAAKv1B,OAAS,EACxCy7C,EAAiClmB,EAAKv1B,OAAS,KAC7B,IAAhBu1B,EAAKv1B,QAA4B,gBAAZu1B,EAAK,IAC5BmmB,EACAH,EAAsBj3C,KAAKjE,EAAK,KAAOkiC,EAAI4B,MAAM9jC,GAAIL,OAAS,EAElE,GAAIw7C,GAAcC,GACdC,EACA,OAAO,EAGf,OAAO,EACT,MAAOt1C,GACL,OAAO,GAIf,SAASqpC,EAAiB5vC,GAEtB,SAAS87C,KACTA,EAAgBj7C,UAAYb,EAE5B,IADA,IAAIuM,EAAI,EACDA,KAAK,IAAIuvC,EAChB,OAAO97C,EAIX,IAAI+7C,EAAS,wBACb,SAASppB,EAAavS,GAClB,OAAO27B,EAAOt3C,KAAK2b,GAGvB,SAAS47B,EAAY3E,EAAO4E,EAAQhL,GAEhC,IADA,IAAIlkB,EAAM,IAAInsB,MAAMy2C,GACZ94C,EAAI,EAAGA,EAAI84C,IAAS94C,EACxBwuB,EAAIxuB,GAAK09C,EAAS19C,EAAI0yC,EAE1B,OAAOlkB,EAGX,SAASmuB,EAAal7C,GAClB,IACI,OAAOA,EAAM,GACf,MAAOuG,GACL,MAAO,8BAIf,SAAS21C,EAAQl8C,GACb,OAAe,OAARA,GACe,iBAARA,GACgB,iBAAhBA,EAAIoyB,SACS,iBAAbpyB,EAAIX,KAGtB,SAASorC,EAA+BlkC,GACpC,IACIi3B,EAAkBj3B,EAAG,iBAAiB,GAE1C,MAAMnG,KAGV,SAASysC,EAAwBtmC,GAC7B,OAAS,MAALA,IACKA,aAAagmB,MAA8B,uBAAEqX,mBAC3B,IAAvBr9B,EAAiB,eAGzB,SAASqxB,EAAe53B,GACpB,OAAOk8C,EAAQl8C,IAAQ0iC,EAAI+B,mBAAmBzkC,EAAK,SAGvD,IAAIgvC,EACM,UAAW,IAAIziB,MAOV,SAAShU,GACZ,OAAIqf,EAAerf,GAAeA,EAC3B,IAAIgU,MAAM2uB,EAAa3iC,KAR3B,SAASA,GACZ,GAAIqf,EAAerf,GAAQ,OAAOA,EAClC,IAAK,MAAM,IAAIgU,MAAM2uB,EAAa3iC,IAClC,MAAM0nB,GAAM,OAAOA,IAU/B,SAAS5N,EAAYryB,GACjB,MAAO,GAAG4P,SAAS7O,KAAKf,GAG5B,SAASkyC,EAAgBt3B,EAAM2G,EAAIhd,GAE/B,IADA,IAAImxB,EAAOgN,EAAI4B,MAAM1pB,GACZrc,EAAI,EAAGA,EAAIm3B,EAAKv1B,SAAU5B,EAAG,CAClC,IAAIiM,EAAMkrB,EAAKn3B,GACf,GAAIgG,EAAOiG,GACP,IACIk4B,EAAIa,eAAehiB,EAAI/W,EAAKk4B,EAAI0B,cAAcxpB,EAAMpQ,IACtD,MAAOpK,MAKrB,IAAI2vC,EAAU,SAASvmC,GACnB,OAAIk5B,EAAIj2B,QAAQjD,GACLA,EAEJ,MAGX,GAAsB,oBAAX2yC,QAA0BA,OAAOjD,SAAU,CAClD,IAAIkD,EAAkC,mBAAfx7C,MAAMga,KAAsB,SAASpR,GACxD,OAAO5I,MAAMga,KAAKpR,IAClB,SAASA,GAIT,IAHA,IAEI6yC,EAFAtvB,EAAM,GACNuvB,EAAK9yC,EAAE2yC,OAAOjD,cAERmD,EAAWC,EAAGxU,QAAY,MAChC/a,EAAIzhB,KAAK+wC,EAAS9jC,OAEtB,OAAOwU,GAGXgjB,EAAU,SAASvmC,GACf,OAAIk5B,EAAIj2B,QAAQjD,GACLA,EACK,MAALA,GAA2C,mBAAvBA,EAAE2yC,OAAOjD,UAC7BkD,EAAU5yC,GAEd,MAIf,IAAIwlB,OAA4B,IAAZC,GAC2B,qBAAvCoD,EAAYpD,GAASxoB,cAEzB81C,OAAqC,IAAZttB,IACzB,EAEJ,SAASmJ,EAAI5tB,GACT,OAAO+xC,EAAkB,gGAAY/xC,QAAO5N,EAGhD,SAAS04C,IACL,GAAuB,mBAAZ5oB,EACP,IACI,IAAIM,EAAU,IAAIN,GAAQ,eAC1B,GAAkC,qBAA9B,GAAG9c,SAAS7O,KAAKisB,GACjB,OAAON,EAEb,MAAOnmB,KAIjB,SAASmzB,EAAWrc,EAAM9O,GACtB,OAAO8O,EAAKrZ,KAAKuK,GAGrB,IAAIwe,EAAM,CACNolB,QAASA,EACTxf,aAAcA,EACd0e,kBAAmBA,EACnBH,yBAA0BA,EAC1B1P,QAASA,EACT/0B,QAASi2B,EAAIj2B,QACbsjC,QAASA,EACTvS,kBAAmBA,EACnBwd,YAAaA,EACbjlB,SAAUA,EACVmmB,QAASA,EACTjqB,YAAaA,EACbmB,SAAUA,EACVD,SAAUA,EACV6L,SAAUA,EACVyR,aAAcA,EACdpG,iBAAkBA,EAClBuF,iBAAkBA,EAClBoM,YAAaA,EACbpsC,SAAUsrC,EACVtjB,eAAgBA,EAChBoX,kBAAmBA,EACnBnC,wBAAyBA,EACzBpC,+BAAgCA,EAChCpY,YAAaA,EACb6f,gBAAiBA,EACjBrjB,YAA+B,oBAAX2tB,QAA0BA,QACL,mBAArBA,OAAOC,UAC3BztB,OAAQA,EACRutB,gBAAiBA,EACjBnkB,IAAKA,EACLmC,OAAQqgB,EACRtF,iBAAkBA,EAClB5b,WAAYA,GAGRn8B,EADRwvB,EAAI6oB,aAAe7oB,EAAIiC,SACfzxB,EAAU0xB,EAAQytB,SAASz3C,KAAK84B,MAAM,KAAKvpB,IAAImoC,QAC5B,IAAfp/C,EAAQ,IAAYA,EAAQ,GAAK,IAAQA,EAAQ,GAAK,GAG9DwvB,EAAIiC,QAAQjC,EAAI6iB,iBAAiB3gB,GAErC,IAAK,MAAM,IAAI1C,MAAW,MAAOhmB,GAAIwmB,EAAI8T,cAAgBt6B,EACzD9J,EAAO2vB,QAAUW,GAEf,CAAC,QAAQ,MAAM,GAAG,CAAC,GAr9KgT,CAq9K5S,IAr9K4CtwB,EAAO2vB,QAAQ7lB,IAs9KtC,oBAAXjJ,QAAqC,OAAXA,OAAiDA,OAAOs/C,EAAIt/C,OAAOovB,QAAwF,oBAATrP,MAAiC,OAATA,OAA6CA,KAAKu/B,EAAIv/B,KAAKqP,W,sECl/KlS,6BACI,aAEA,IAAI6N,EAAOkb,aAAX,CAIA,IAIIoH,EA6HIl4C,EAZAm4C,EArBAC,EACAC,EAjGJC,EAAa,EACbC,EAAgB,GAChBC,GAAwB,EACxBC,EAAM7iB,EAAOl9B,SAoJbggD,EAAWvxB,OAAO0Y,gBAAkB1Y,OAAO0Y,eAAejK,GAC9D8iB,EAAWA,GAAYA,EAAS10C,WAAa00C,EAAW9iB,EAGf,qBAArC,GAAG3qB,SAAS7O,KAAKw5B,EAAOtL,SApFxB4tB,EAAoB,SAASxE,GACzBppB,EAAQ0mB,UAAS,WAAc2H,EAAajF,QAIpD,WAGI,GAAI9d,EAAOnqB,cAAgBmqB,EAAOgjB,cAAe,CAC7C,IAAIC,GAA4B,EAC5BC,EAAeljB,EAAO7pB,UAM1B,OALA6pB,EAAO7pB,UAAY,WACf8sC,GAA4B,GAEhCjjB,EAAOnqB,YAAY,GAAI,KACvBmqB,EAAO7pB,UAAY+sC,EACZD,GAwEJE,GAIAnjB,EAAOojB,iBA9CVb,EAAU,IAAIa,gBACVC,MAAMltC,UAAY,SAASwS,GAE/Bo6B,EADap6B,EAAMxkB,OAIvBm+C,EAAoB,SAASxE,GACzByE,EAAQe,MAAMztC,YAAYioC,KA2CvB+E,GAAO,uBAAwBA,EAAIx3C,cAAc,WAtCpDjB,EAAOy4C,EAAIU,gBACfjB,EAAoB,SAASxE,GAGzB,IAAI0F,EAASX,EAAIx3C,cAAc,UAC/Bm4C,EAAOC,mBAAqB,WACxBV,EAAajF,GACb0F,EAAOC,mBAAqB,KAC5Br5C,EAAKs5C,YAAYF,GACjBA,EAAS,MAEbp5C,EAAKoB,YAAYg4C,KAKrBlB,EAAoB,SAASxE,GACzB1vC,WAAW20C,EAAc,EAAGjF,KAlD5B0E,EAAgB,gBAAkBtkC,KAAKylC,SAAW,IAClDlB,EAAkB,SAAS95B,GACvBA,EAAMi7B,SAAW5jB,GACK,iBAAfrX,EAAMxkB,MACyB,IAAtCwkB,EAAMxkB,KAAKf,QAAQo/C,IACnBO,GAAcp6B,EAAMxkB,KAAKoC,MAAMi8C,EAAc58C,UAIjDo6B,EAAO6jB,iBACP7jB,EAAO6jB,iBAAiB,UAAWpB,GAAiB,GAEpDziB,EAAO8jB,YAAY,YAAarB,GAGpCH,EAAoB,SAASxE,GACzB9d,EAAOnqB,YAAY2sC,EAAgB1E,EAAQ,OAgEnDgF,EAAS5H,aA1KT,SAAsBnpC,GAEI,mBAAbA,IACTA,EAAW,IAAIgvC,SAAS,GAAKhvC,IAI/B,IADA,IAAI3L,EAAO,IAAIC,MAAMI,UAAUb,OAAS,GAC/B5B,EAAI,EAAGA,EAAIoC,EAAKR,OAAQ5B,IAC7BoC,EAAKpC,GAAKyC,UAAUzC,EAAI,GAG5B,IAAI+/C,EAAO,CAAEhyC,SAAUA,EAAU3L,KAAMA,GAGvC,OAFAu8C,EAAcD,GAAcqB,EAC5BzB,EAAkBI,GACXA,KA6JTI,EAASkB,eAAiBA,EA1J1B,SAASA,EAAelG,UACb6E,EAAc7E,GAyBzB,SAASiF,EAAajF,GAGlB,GAAI8E,EAGAx0C,WAAW20C,EAAc,EAAGjF,OACzB,CACH,IAAIiG,EAAOpB,EAAc7E,GACzB,GAAIiG,EAAM,CACNnB,GAAwB,EACxB,KAjCZ,SAAamB,GACT,IAAIhyC,EAAWgyC,EAAKhyC,SAChB3L,EAAO29C,EAAK39C,KAChB,OAAQA,EAAKR,QACb,KAAK,EACDmM,IACA,MACJ,KAAK,EACDA,EAAS3L,EAAK,IACd,MACJ,KAAK,EACD2L,EAAS3L,EAAK,GAAIA,EAAK,IACvB,MACJ,KAAK,EACD2L,EAAS3L,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAChC,MACJ,QACI2L,EAASlL,WAnDrB,EAmDsCT,IAiBlB69C,CAAIF,GACN,QACEC,EAAelG,GACf8E,GAAwB,MAvE5C,CAyLkB,oBAAT9/B,UAAyC,IAAXkd,EAAyBx7B,KAAOw7B,EAASld,Q,6CCzLhF,YAAA5gB,EAAA,iBAAoC,EAAQ,O,sCCA5C;;;;;;;;;;;;;IAaA,SAAY89B,EAAQ79B,GAEnB,aAE6D,iBAAnBD,EAAO2vB,QAShD3vB,EAAO2vB,QAAUmO,EAAOl9B,SACvBX,EAAS69B,GAAQ,GACjB,SAAUtrB,GACT,IAAMA,EAAE5R,SACP,MAAM,IAAIkvB,MAAO,4CAElB,OAAO7vB,EAASuS,IAGlBvS,EAAS69B,GAtBX,CA0BuB,oBAAXj9B,OAAyBA,OAASyB,MAAM,SAAUzB,EAAQmhD,GAMtE,aAEA,IAAIC,EAAM,GAENC,EAAW7yB,OAAO0Y,eAElB1jC,EAAQ49C,EAAI59C,MAEZ8U,EAAO8oC,EAAI9oC,KAAO,SAAU+E,GAC/B,OAAO+jC,EAAI9oC,KAAK7U,KAAM4Z,IACnB,SAAUA,GACb,OAAO+jC,EAAI71C,OAAOzH,MAAO,GAAIuZ,IAI1BrP,EAAOozC,EAAIpzC,KAEX3N,EAAU+gD,EAAI/gD,QAEdihD,EAAa,GAEbhvC,EAAWgvC,EAAWhvC,SAEtBivC,EAASD,EAAW1uC,eAEpB4uC,EAAaD,EAAOjvC,SAEpBmvC,EAAuBD,EAAW/9C,KAAM+qB,QAExCkzB,EAAU,GAEVv0C,EAAa,SAAqBzK,GASpC,MAAsB,mBAARA,GAA8C,iBAAjBA,EAAIE,UAC1B,mBAAbF,EAAI8a,MAIVmkC,EAAW,SAAmBj/C,GAChC,OAAc,MAAPA,GAAeA,IAAQA,EAAI1C,QAIhCD,EAAWC,EAAOD,SAIjB6hD,EAA4B,CAC/Br3C,MAAM,EACN1K,KAAK,EACLgiD,OAAO,EACPC,UAAU,GAGX,SAASC,EAAS7yB,EAAMvnB,EAAMm4C,GAG7B,IAAI7+C,EAAGmX,EACNqoC,GAHDX,EAAMA,GAAO//C,GAGCuI,cAAe,UAG7B,GADAm4C,EAAOt0C,KAAO+iB,EACTvnB,EACJ,IAAM1G,KAAK2gD,GAYVxpC,EAAMzQ,EAAM1G,IAAO0G,EAAKinB,cAAgBjnB,EAAKinB,aAAc3tB,KAE1Dw/C,EAAOl4C,aAActH,EAAGmX,GAI3B0nC,EAAIkC,KAAKv5C,YAAag4C,GAAShyC,WAAWkyC,YAAaF,GAIzD,SAASwB,EAAQv/C,GAChB,OAAY,MAAPA,EACGA,EAAM,GAIQ,iBAARA,GAAmC,mBAARA,EACxC4+C,EAAYhvC,EAAS7O,KAAMf,KAAW,gBAC/BA,EAQT,IAICw/C,EAAS,SAAUC,EAAU7gC,GAI5B,OAAO,IAAI4gC,EAAOh/C,GAAG7B,KAAM8gD,EAAU7gC,IA0VvC,SAAS8gC,EAAa1/C,GAMrB,IAAIG,IAAWH,GAAO,WAAYA,GAAOA,EAAIG,OAC5C0H,EAAO03C,EAAQv/C,GAEhB,OAAKyK,EAAYzK,KAASi/C,EAAUj/C,KAIpB,UAAT6H,GAA+B,IAAX1H,GACR,iBAAXA,GAAuBA,EAAS,GAAOA,EAAS,KAAOH,GArWhEw/C,EAAOh/C,GAAKg/C,EAAO3+C,UAAY,CAG9B8+C,OAbU,QAeV1c,YAAauc,EAGbr/C,OAAQ,EAERy/C,QAAS,WACR,OAAO9+C,EAAMC,KAAMhC,OAKpBqU,IAAK,SAAUysC,GAGd,OAAY,MAAPA,EACG/+C,EAAMC,KAAMhC,MAIb8gD,EAAM,EAAI9gD,KAAM8gD,EAAM9gD,KAAKoB,QAAWpB,KAAM8gD,IAKpDC,UAAW,SAAUC,GAGpB,IAAIhzB,EAAMyyB,EAAOQ,MAAOjhD,KAAKkkC,cAAe8c,GAM5C,OAHAhzB,EAAIkzB,WAAalhD,KAGVguB,GAIRzuB,KAAM,SAAUgO,GACf,OAAOkzC,EAAOlhD,KAAMS,KAAMuN,IAG3BkI,IAAK,SAAUlI,GACd,OAAOvN,KAAK+gD,UAAWN,EAAOhrC,IAAKzV,MAAM,SAAUmhD,EAAM3hD,GACxD,OAAO+N,EAASvL,KAAMm/C,EAAM3hD,EAAG2hD,QAIjCp/C,MAAO,WACN,OAAO/B,KAAK+gD,UAAWh/C,EAAMM,MAAOrC,KAAMiC,aAG3C+D,MAAO,WACN,OAAOhG,KAAKohD,GAAI,IAGjB33C,KAAM,WACL,OAAOzJ,KAAKohD,IAAK,IAGlBC,KAAM,WACL,OAAOrhD,KAAK+gD,UAAWN,EAAOa,KAAMthD,MAAM,SAAUuhD,EAAO/hD,GAC1D,OAASA,EAAI,GAAM,OAIrBgiD,IAAK,WACJ,OAAOxhD,KAAK+gD,UAAWN,EAAOa,KAAMthD,MAAM,SAAUuhD,EAAO/hD,GAC1D,OAAOA,EAAI,OAIb4hD,GAAI,SAAU5hD,GACb,IAAI6nC,EAAMrnC,KAAKoB,OACdyI,GAAKrK,GAAMA,EAAI,EAAI6nC,EAAM,GAC1B,OAAOrnC,KAAK+gD,UAAWl3C,GAAK,GAAKA,EAAIw9B,EAAM,CAAErnC,KAAM6J,IAAQ,KAG5DW,IAAK,WACJ,OAAOxK,KAAKkhD,YAAclhD,KAAKkkC,eAKhC33B,KAAMA,EACNyJ,KAAM2pC,EAAI3pC,KACV8F,OAAQ6jC,EAAI7jC,QAGb2kC,EAAOnhD,OAASmhD,EAAOh/C,GAAGnC,OAAS,WAClC,IAAIJ,EAASoB,EAAMlC,EAAKsa,EAAM+oC,EAAap8C,EAC1CoC,EAASxF,UAAW,IAAO,GAC3BzC,EAAI,EACJ4B,EAASa,UAAUb,OACnBoR,GAAO,EAsBR,IAnBuB,kBAAX/K,IACX+K,EAAO/K,EAGPA,EAASxF,UAAWzC,IAAO,GAC3BA,KAIsB,iBAAXiI,GAAwBiE,EAAYjE,KAC/CA,EAAS,IAILjI,IAAM4B,IACVqG,EAASzH,KACTR,KAGOA,EAAI4B,EAAQ5B,IAGnB,GAAqC,OAA9BN,EAAU+C,UAAWzC,IAG3B,IAAMc,KAAQpB,EACbwZ,EAAOxZ,EAASoB,GAIF,cAATA,GAAwBmH,IAAWiR,IAKnClG,GAAQkG,IAAU+nC,EAAOn+C,cAAeoW,KAC1C+oC,EAAc5/C,MAAM6L,QAASgL,MAC/Bta,EAAMqJ,EAAQnH,GAIb+E,EADIo8C,IAAgB5/C,MAAM6L,QAAStP,GAC3B,GACIqjD,GAAgBhB,EAAOn+C,cAAelE,GAG1CA,EAFA,GAITqjD,GAAc,EAGdh6C,EAAQnH,GAASmgD,EAAOnhD,OAAQkT,EAAMnN,EAAOqT,SAGzB7a,IAAT6a,IACXjR,EAAQnH,GAASoY,IAOrB,OAAOjR,GAGRg5C,EAAOnhD,OAAQ,CAGdoiD,QAAS,UAlLC,QAkLsBhoC,KAAKylC,UAAWtgD,QAAS,MAAO,IAGhE8iD,SAAS,EAET5+C,MAAO,SAAU6+B,GAChB,MAAM,IAAIpU,MAAOoU,IAGlB5+B,KAAM,aAENV,cAAe,SAAUrB,GACxB,IAAI+rB,EAAO40B,EAIX,SAAM3gD,GAAgC,oBAAzB4P,EAAS7O,KAAMf,QAI5B+rB,EAAQ4yB,EAAU3+C,KASK,mBADvB2gD,EAAO9B,EAAO99C,KAAMgrB,EAAO,gBAAmBA,EAAMkX,cACf6b,EAAW/9C,KAAM4/C,KAAW5B,IAGlE5pC,cAAe,SAAUnV,GACxB,IAAIX,EAEJ,IAAMA,KAAQW,EACb,OAAO,EAER,OAAO,GAKR4gD,WAAY,SAAUp0B,EAAMvuB,EAASm/C,GACpCiC,EAAS7yB,EAAM,CAAE2yB,MAAOlhD,GAAWA,EAAQkhD,OAAS/B,IAGrD9+C,KAAM,SAAU0B,EAAKsM,GACpB,IAAInM,EAAQ5B,EAAI,EAEhB,GAAKmhD,EAAa1/C,GAEjB,IADAG,EAASH,EAAIG,OACL5B,EAAI4B,IACqC,IAA3CmM,EAASvL,KAAMf,EAAKzB,GAAKA,EAAGyB,EAAKzB,IADnBA,UAMpB,IAAMA,KAAKyB,EACV,IAAgD,IAA3CsM,EAASvL,KAAMf,EAAKzB,GAAKA,EAAGyB,EAAKzB,IACrC,MAKH,OAAOyB,GAIR6gD,UAAW,SAAUnC,EAAKoC,GACzB,IAAI/zB,EAAM+zB,GAAW,GAarB,OAXY,MAAPpC,IACCgB,EAAa5zB,OAAQ4yB,IACzBc,EAAOQ,MAAOjzB,EACE,iBAAR2xB,EACN,CAAEA,GAAQA,GAGZpzC,EAAKvK,KAAMgsB,EAAK2xB,IAIX3xB,GAGRngB,QAAS,SAAUszC,EAAMxB,EAAKngD,GAC7B,OAAc,MAAPmgD,GAAe,EAAI/gD,EAAQoD,KAAM29C,EAAKwB,EAAM3hD,IAKpDyhD,MAAO,SAAUj7C,EAAOg8C,GAKvB,IAJA,IAAI3a,GAAO2a,EAAO5gD,OACjByI,EAAI,EACJrK,EAAIwG,EAAM5E,OAEHyI,EAAIw9B,EAAKx9B,IAChB7D,EAAOxG,KAAQwiD,EAAQn4C,GAKxB,OAFA7D,EAAM5E,OAAS5B,EAERwG,GAGRs7C,KAAM,SAAUN,EAAOzzC,EAAU00C,GAShC,IARA,IACCpiB,EAAU,GACVrgC,EAAI,EACJ4B,EAAS4/C,EAAM5/C,OACf8gD,GAAkBD,EAIXziD,EAAI4B,EAAQ5B,KACA+N,EAAUyzC,EAAOxhD,GAAKA,KAChB0iD,GACxBriB,EAAQtzB,KAAMy0C,EAAOxhD,IAIvB,OAAOqgC,GAIRpqB,IAAK,SAAUurC,EAAOzzC,EAAU7L,GAC/B,IAAIN,EAAQoY,EACXha,EAAI,EACJwuB,EAAM,GAGP,GAAK2yB,EAAaK,GAEjB,IADA5/C,EAAS4/C,EAAM5/C,OACP5B,EAAI4B,EAAQ5B,IAGL,OAFdga,EAAQjM,EAAUyzC,EAAOxhD,GAAKA,EAAGkC,KAGhCssB,EAAIzhB,KAAMiN,QAMZ,IAAMha,KAAKwhD,EAGI,OAFdxnC,EAAQjM,EAAUyzC,EAAOxhD,GAAKA,EAAGkC,KAGhCssB,EAAIzhB,KAAMiN,GAMb,OAAO3C,EAAMmX,IAIdm0B,KAAM,EAINlC,QAASA,IAGa,mBAAX7C,SACXqD,EAAOh/C,GAAI27C,OAAOjD,UAAawF,EAAKvC,OAAOjD,WAI5CsG,EAAOlhD,KAAM,uEAAuEy/B,MAAO,MAC1F,SAAU5iB,EAAI9b,GACbu/C,EAAY,WAAav/C,EAAO,KAAQA,EAAKoH,iBAmB/C,IAAI06C;;;;;;;;;;;AAWJ,SAAY7jD,GACZ,IAAIiB,EACHygD,EACAoC,EACAC,EACAC,EACAC,EACAC,EACAroC,EACAsoC,EACAC,EACAC,EAGAC,EACAvkD,EACAwkD,EACAC,EACAC,EACAC,EACApjB,EACApd,EAGAi/B,EAAU,SAAW,EAAI,IAAIx5C,KAC7Bg7C,EAAe3kD,EAAOD,SACtB6kD,EAAU,EACV50C,EAAO,EACP60C,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAyBH,KACzBI,EAAY,SAAU9gD,EAAGqZ,GAIxB,OAHKrZ,IAAMqZ,IACV4mC,GAAe,GAET,GAIR9C,EAAS,GAAO3uC,eAChBwuC,EAAM,GACNlsB,EAAMksB,EAAIlsB,IACViwB,EAAa/D,EAAIpzC,KACjBA,EAAOozC,EAAIpzC,KACXxK,EAAQ49C,EAAI59C,MAIZnD,EAAU,SAAU+kD,EAAMxC,GAGzB,IAFA,IAAI3hD,EAAI,EACP6nC,EAAMsc,EAAKviD,OACJ5B,EAAI6nC,EAAK7nC,IAChB,GAAKmkD,EAAMnkD,KAAQ2hD,EAClB,OAAO3hD,EAGT,OAAQ,GAGTyrC,EAAW,6HAMX2Y,EAAa,sBAGbC,EAAa,0BAA4BD,EACxC,0CAGD9xC,EAAa,MAAQ8xC,EAAa,KAAOC,EAAa,OAASD,EAG9D,gBAAkBA,EAIlB,2DAA6DC,EAAa,OAC1ED,EAAa,OAEdphD,EAAU,KAAOqhD,EAAP,wFAOoB/xC,EAPpB,eAcVgyC,EAAc,IAAIn5C,OAAQi5C,EAAa,IAAK,KAC5CG,EAAQ,IAAIp5C,OAAQ,IAAMi5C,EAAa,8BACtCA,EAAa,KAAM,KAEpBI,EAAS,IAAIr5C,OAAQ,IAAMi5C,EAAa,KAAOA,EAAa,KAC5DK,EAAe,IAAIt5C,OAAQ,IAAMi5C,EAAa,WAAaA,EAAa,IAAMA,EAC7E,KACDM,EAAW,IAAIv5C,OAAQi5C,EAAa,MAEpCO,EAAU,IAAIx5C,OAAQnI,GACtB4hD,EAAc,IAAIz5C,OAAQ,IAAMk5C,EAAa,KAE7CQ,EAAY,CACX,GAAM,IAAI15C,OAAQ,MAAQk5C,EAAa,KACvC,MAAS,IAAIl5C,OAAQ,QAAUk5C,EAAa,KAC5C,IAAO,IAAIl5C,OAAQ,KAAOk5C,EAAa,SACvC,KAAQ,IAAIl5C,OAAQ,IAAMmH,GAC1B,OAAU,IAAInH,OAAQ,IAAMnI,GAC5B,MAAS,IAAImI,OAAQ,yDACpBi5C,EAAa,+BAAiCA,EAAa,cAC3DA,EAAa,aAAeA,EAAa,SAAU,KACpD,KAAQ,IAAIj5C,OAAQ,OAASsgC,EAAW,KAAM,KAI9C,aAAgB,IAAItgC,OAAQ,IAAMi5C,EACjC,mDAAqDA,EACrD,mBAAqBA,EAAa,mBAAoB,MAGxDU,EAAQ,SACRC,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,GAAW,OAIXC,GAAY,IAAIj6C,OAAQ,uBAAyBi5C,EAAa,uBAAwB,KACtFiB,GAAY,SAAUlhC,EAAQmhC,GAC7B,IAAIC,EAAO,KAAOphC,EAAO5hB,MAAO,GAAM,MAEtC,OAAO+iD,IASNC,EAAO,EACN56C,OAAOC,aAAc26C,EAAO,OAC5B56C,OAAOC,aAAc26C,GAAQ,GAAK,MAAe,KAAPA,EAAe,SAK5DC,GAAa,sDACbC,GAAa,SAAUC,EAAIC,GAC1B,OAAKA,EAGQ,OAAPD,EACG,IAIDA,EAAGnjD,MAAO,GAAI,GAAM,KAC1BmjD,EAAGE,WAAYF,EAAG9jD,OAAS,GAAIyP,SAAU,IAAO,IAI3C,KAAOq0C,GAOfG,GAAgB,WACfxC,KAGDyC,GAAqBC,IACpB,SAAUpE,GACT,OAAyB,IAAlBA,EAAK98C,UAAqD,aAAhC88C,EAAKqE,SAAS99C,gBAEhD,CAAEtE,IAAK,aAAc2lC,KAAM,WAI7B,IACCx8B,EAAKlK,MACFs9C,EAAM59C,EAAMC,KAAMkhD,EAAalwC,YACjCkwC,EAAalwC,YAMd2sC,EAAKuD,EAAalwC,WAAW5R,QAASD,SACrC,MAAQqG,GACT+E,EAAO,CAAElK,MAAOs9C,EAAIv+C,OAGnB,SAAUqG,EAAQg+C,GACjB/B,EAAWrhD,MAAOoF,EAAQ1F,EAAMC,KAAMyjD,KAKvC,SAAUh+C,EAAQg+C,GAKjB,IAJA,IAAI57C,EAAIpC,EAAOrG,OACd5B,EAAI,EAGKiI,EAAQoC,KAAQ47C,EAAKjmD,OAC/BiI,EAAOrG,OAASyI,EAAI,IAKvB,SAASu4C,GAAQ1B,EAAU7gC,EAASkiC,EAAS2D,GAC5C,IAAI13C,EAAGxO,EAAG2hD,EAAMwE,EAAKpuC,EAAOquC,EAAQC,EACnCC,EAAajmC,GAAWA,EAAQkmC,cAGhC5kD,EAAW0e,EAAUA,EAAQ1e,SAAW,EAKzC,GAHA4gD,EAAUA,GAAW,GAGI,iBAAbrB,IAA0BA,GACxB,IAAbv/C,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAO4gD,EAIR,IAAM2D,IACL7C,EAAahjC,GACbA,EAAUA,GAAWvhB,EAEhBykD,GAAiB,CAIrB,GAAkB,KAAb5hD,IAAqBoW,EAAQmtC,EAAWsB,KAAMtF,IAGlD,GAAO1yC,EAAIuJ,EAAO,IAGjB,GAAkB,IAAbpW,EAAiB,CACrB,KAAOggD,EAAOthC,EAAQ/M,eAAgB9E,IAUrC,OAAO+zC,EALP,GAAKZ,EAAKphD,KAAOiO,EAEhB,OADA+zC,EAAQx1C,KAAM40C,GACPY,OAYT,GAAK+D,IAAgB3E,EAAO2E,EAAWhzC,eAAgB9E,KACtDyU,EAAU5C,EAASshC,IACnBA,EAAKphD,KAAOiO,EAGZ,OADA+zC,EAAQx1C,KAAM40C,GACPY,MAKH,IAAKxqC,EAAO,GAElB,OADAhL,EAAKlK,MAAO0/C,EAASliC,EAAQomC,qBAAsBvF,IAC5CqB,EAGD,IAAO/zC,EAAIuJ,EAAO,KAAS0oC,EAAQiG,wBACzCrmC,EAAQqmC,uBAGR,OADA35C,EAAKlK,MAAO0/C,EAASliC,EAAQqmC,uBAAwBl4C,IAC9C+zC,EAKT,GAAK9B,EAAQkG,MACX3C,EAAwB9C,EAAW,QACjCsC,IAAcA,EAAUt9C,KAAMg7C,MAIlB,IAAbv/C,GAAqD,WAAnC0e,EAAQ2lC,SAAS99C,eAA+B,CAYpE,GAVAm+C,EAAcnF,EACdoF,EAAajmC,EASK,IAAb1e,IACF+iD,EAASx+C,KAAMg7C,IAAcuD,EAAav+C,KAAMg7C,IAAe,CAqBjE,KAlBAoF,EAAanB,GAASj/C,KAAMg7C,IAAc0F,GAAavmC,EAAQ7S,aAC9D6S,KAImBA,GAAYogC,EAAQoG,SAGhCV,EAAM9lC,EAAQsN,aAAc,OAClCw4B,EAAMA,EAAI9mD,QAASmmD,GAAYC,IAE/BplC,EAAQ/Y,aAAc,KAAQ6+C,EAAMjE,IAMtCliD,GADAomD,EAASpD,EAAU9B,IACRt/C,OACH5B,KACPomD,EAAQpmD,IAAQmmD,EAAM,IAAMA,EAAM,UAAa,IAC9CW,GAAYV,EAAQpmD,IAEtBqmD,EAAcD,EAAOl5C,KAAM,KAG5B,IASC,GAAKuzC,EAAQsG,sBAGXC,IAAIC,SAAU,gBAAkBZ,EAAc,MAO/C,MAAM,IAAIr4B,MAMX,OAHAjhB,EAAKlK,MAAO0/C,EACX+D,EAAW58B,iBAAkB28B,IAEvB9D,EACN,MAAQ2E,GACTlD,EAAwB9C,GAAU,GACjC,QACIiF,IAAQjE,GACZ7hC,EAAQ8mC,gBAAiB,QAQ9B,OAAOvsC,EAAQsmC,EAAS7hD,QAASklD,EAAO,MAAQlkC,EAASkiC,EAAS2D,GASnE,SAASrC,KACR,IAAI1sB,EAAO,GAYX,OAVA,SAASiwB,EAAOn7C,EAAK+N,GAQpB,OALKmd,EAAKpqB,KAAMd,EAAM,KAAQ42C,EAAKwE,oBAG3BD,EAAOjwB,EAAK9kB,SAEX+0C,EAAOn7C,EAAM,KAAQ+N,GAShC,SAASstC,GAAcrlD,GAEtB,OADAA,EAAIigD,IAAY,EACTjgD,EAOR,SAASslD,GAAQtlD,GAChB,IAAIxC,EAAKX,EAASuI,cAAe,YAEjC,IACC,QAASpF,EAAIxC,GACZ,MAAQuI,GACT,OAAO,EACN,QAGIvI,EAAG+N,YACP/N,EAAG+N,WAAWkyC,YAAajgD,GAI5BA,EAAK,MASP,SAAS+nD,GAAWC,EAAOhpB,GAI1B,IAHA,IAAI0hB,EAAMsH,EAAMjoB,MAAO,KACtBx/B,EAAImgD,EAAIv+C,OAED5B,KACP6iD,EAAK6E,WAAYvH,EAAKngD,IAAQy+B,EAUhC,SAASkpB,GAAcxkD,EAAGqZ,GACzB,IAAIiB,EAAMjB,GAAKrZ,EACdykD,EAAOnqC,GAAsB,IAAfta,EAAExB,UAAiC,IAAf6a,EAAE7a,UACnCwB,EAAE0kD,YAAcrrC,EAAEqrC,YAGpB,GAAKD,EACJ,OAAOA,EAIR,GAAKnqC,EACJ,KAAUA,EAAMA,EAAIpR,aACnB,GAAKoR,IAAQjB,EACZ,OAAQ,EAKX,OAAOrZ,EAAI,GAAK,EAOjB,SAAS2kD,GAAmBx+C,GAC3B,OAAO,SAAUq4C,GAEhB,MAAgB,UADLA,EAAKqE,SAAS99C,eACEy5C,EAAKr4C,OAASA,GAQ3C,SAASy+C,GAAoBz+C,GAC5B,OAAO,SAAUq4C,GAChB,IAAI7gD,EAAO6gD,EAAKqE,SAAS99C,cACzB,OAAkB,UAATpH,GAA6B,WAATA,IAAuB6gD,EAAKr4C,OAASA,GAQpE,SAAS0+C,GAAsBnjD,GAG9B,OAAO,SAAU88C,GAKhB,MAAK,SAAUA,EASTA,EAAKn0C,aAAgC,IAAlBm0C,EAAK98C,SAGvB,UAAW88C,EACV,UAAWA,EAAKn0C,WACbm0C,EAAKn0C,WAAW3I,WAAaA,EAE7B88C,EAAK98C,WAAaA,EAMpB88C,EAAKsG,aAAepjD,GAI1B88C,EAAKsG,cAAgBpjD,GACrBihD,GAAoBnE,KAAW98C,EAG1B88C,EAAK98C,WAAaA,EAKd,UAAW88C,GACfA,EAAK98C,WAAaA,GAY5B,SAASqjD,GAAwBjmD,GAChC,OAAOqlD,IAAc,SAAUa,GAE9B,OADAA,GAAYA,EACLb,IAAc,SAAUpB,EAAM7lB,GAMpC,IALA,IAAIh2B,EACH+9C,EAAenmD,EAAI,GAAIikD,EAAKtkD,OAAQumD,GACpCnoD,EAAIooD,EAAaxmD,OAGV5B,KACFkmD,EAAQ77C,EAAI+9C,EAAcpoD,MAC9BkmD,EAAM77C,KAASg2B,EAASh2B,GAAM67C,EAAM77C,WAYzC,SAASu8C,GAAavmC,GACrB,OAAOA,QAAmD,IAAjCA,EAAQomC,sBAAwCpmC,EA6tC1E,IAAMrgB,KAztCNygD,EAAUmC,GAAOnC,QAAU,GAO3BsC,EAAQH,GAAOG,MAAQ,SAAUpB,GAChC,IAAI0G,EAAY1G,GAAQA,EAAK2G,aAC5BhF,EAAU3B,IAAUA,EAAK4E,eAAiB5E,GAAOpC,gBAKlD,OAAQuF,EAAM5+C,KAAMmiD,GAAa/E,GAAWA,EAAQ0C,UAAY,SAQjE3C,EAAcT,GAAOS,YAAc,SAAU38C,GAC5C,IAAI6hD,EAAYC,EACf3J,EAAMn4C,EAAOA,EAAK6/C,eAAiB7/C,EAAOg9C,EAO3C,OAAK7E,GAAO//C,GAA6B,IAAjB+/C,EAAIl9C,UAAmBk9C,EAAIU,iBAMnD+D,GADAxkD,EAAW+/C,GACQU,gBACnBgE,GAAkBR,EAAOjkD,GAQpB4kD,GAAgB5kD,IAClB0pD,EAAY1pD,EAAS2pD,cAAiBD,EAAU7xC,MAAQ6xC,IAGrDA,EAAU3I,iBACd2I,EAAU3I,iBAAkB,SAAUgG,IAAe,GAG1C2C,EAAU1I,aACrB0I,EAAU1I,YAAa,WAAY+F,KASrCpF,EAAQoG,MAAQU,IAAQ,SAAU9nD,GAEjC,OADA6jD,EAAQ97C,YAAa/H,GAAK+H,YAAa1I,EAASuI,cAAe,aACzB,IAAxB5H,EAAGiqB,mBACfjqB,EAAGiqB,iBAAkB,uBAAwB9nB,UAQhD6+C,EAAQsG,oBAAsBQ,IAAQ,WAGrC,OAAOP,IAAIC,SAAU,gBAMpBnoD,EAAS4qB,iBAAkB,kBAM1Bs9B,IAAIC,SAAU,+BAWjBxG,EAAQnuC,WAAai1C,IAAQ,SAAU9nD,GAEtC,OADAA,EAAG8H,UAAY,KACP9H,EAAGkuB,aAAc,gBAO1B8yB,EAAQgG,qBAAuBc,IAAQ,SAAU9nD,GAEhD,OADAA,EAAG+H,YAAa1I,EAAS4pD,cAAe,MAChCjpD,EAAGgnD,qBAAsB,KAAM7kD,UAIxC6+C,EAAQiG,uBAAyBzB,EAAQ/+C,KAAMpH,EAAS4nD,wBAMxDjG,EAAQkI,QAAUpB,IAAQ,SAAU9nD,GAEnC,OADA6jD,EAAQ97C,YAAa/H,GAAKc,GAAK2hD,GACvBpjD,EAAS8pD,oBAAsB9pD,EAAS8pD,kBAAmB1G,GAAUtgD,UAIzE6+C,EAAQkI,SACZ9F,EAAK78C,OAAa,GAAI,SAAUzF,GAC/B,IAAIsoD,EAAStoD,EAAGlB,QAAS+lD,GAAWC,IACpC,OAAO,SAAU1D,GAChB,OAAOA,EAAKh0B,aAAc,QAAWk7B,IAGvChG,EAAKj9C,KAAW,GAAI,SAAUrF,EAAI8f,GACjC,QAAuC,IAA3BA,EAAQ/M,gBAAkCiwC,EAAiB,CACtE,IAAI5B,EAAOthC,EAAQ/M,eAAgB/S,GACnC,OAAOohD,EAAO,CAAEA,GAAS,OAI3BkB,EAAK78C,OAAa,GAAK,SAAUzF,GAChC,IAAIsoD,EAAStoD,EAAGlB,QAAS+lD,GAAWC,IACpC,OAAO,SAAU1D,GAChB,IAAIj7C,OAAwC,IAA1Bi7C,EAAKmH,kBACtBnH,EAAKmH,iBAAkB,MACxB,OAAOpiD,GAAQA,EAAKsT,QAAU6uC,IAMhChG,EAAKj9C,KAAW,GAAI,SAAUrF,EAAI8f,GACjC,QAAuC,IAA3BA,EAAQ/M,gBAAkCiwC,EAAiB,CACtE,IAAI78C,EAAM1G,EAAGwhD,EACZG,EAAOthC,EAAQ/M,eAAgB/S,GAEhC,GAAKohD,EAAO,CAIX,IADAj7C,EAAOi7C,EAAKmH,iBAAkB,QACjBpiD,EAAKsT,QAAUzZ,EAC3B,MAAO,CAAEohD,GAMV,IAFAH,EAAQnhC,EAAQuoC,kBAAmBroD,GACnCP,EAAI,EACM2hD,EAAOH,EAAOxhD,MAEvB,IADA0G,EAAOi7C,EAAKmH,iBAAkB,QACjBpiD,EAAKsT,QAAUzZ,EAC3B,MAAO,CAAEohD,GAKZ,MAAO,MAMVkB,EAAKj9C,KAAY,IAAI66C,EAAQgG,qBAC5B,SAAUsC,EAAK1oC,GACd,YAA6C,IAAjCA,EAAQomC,qBACZpmC,EAAQomC,qBAAsBsC,GAG1BtI,EAAQkG,IACZtmC,EAAQqJ,iBAAkBq/B,QAD3B,GAKR,SAAUA,EAAK1oC,GACd,IAAIshC,EACHhiD,EAAM,GACNK,EAAI,EAGJuiD,EAAUliC,EAAQomC,qBAAsBsC,GAGzC,GAAa,MAARA,EAAc,CAClB,KAAUpH,EAAOY,EAASviD,MACF,IAAlB2hD,EAAKhgD,UACThC,EAAIoN,KAAM40C,GAIZ,OAAOhiD,EAER,OAAO4iD,GAITM,EAAKj9C,KAAc,MAAI66C,EAAQiG,wBAA0B,SAAUn/C,EAAW8Y,GAC7E,QAA+C,IAAnCA,EAAQqmC,wBAA0CnD,EAC7D,OAAOljC,EAAQqmC,uBAAwBn/C,IAUzCk8C,EAAgB,GAOhBD,EAAY,IAEL/C,EAAQkG,IAAM1B,EAAQ/+C,KAAMpH,EAAS4qB,qBAI3C69B,IAAQ,SAAU9nD,GAEjB,IAAIm8C,EAOJ0H,EAAQ97C,YAAa/H,GAAKqU,UAAY,UAAYouC,EAAZ,qBACpBA,EADoB,kEAQjCziD,EAAGiqB,iBAAkB,wBAAyB9nB,QAClD4hD,EAAUz2C,KAAM,SAAWq3C,EAAa,gBAKnC3kD,EAAGiqB,iBAAkB,cAAe9nB,QACzC4hD,EAAUz2C,KAAM,MAAQq3C,EAAa,aAAe3Y,EAAW,KAI1DhsC,EAAGiqB,iBAAkB,QAAUw4B,EAAU,MAAOtgD,QACrD4hD,EAAUz2C,KAAM,OAQjB6uC,EAAQ98C,EAASuI,cAAe,UAC1BC,aAAc,OAAQ,IAC5B7H,EAAG+H,YAAao0C,GACVn8C,EAAGiqB,iBAAkB,aAAc9nB,QACxC4hD,EAAUz2C,KAAM,MAAQq3C,EAAa,QAAUA,EAAa,KAC3DA,EAAa,gBAMT3kD,EAAGiqB,iBAAkB,YAAa9nB,QACvC4hD,EAAUz2C,KAAM,YAMXtN,EAAGiqB,iBAAkB,KAAOw4B,EAAU,MAAOtgD,QAClD4hD,EAAUz2C,KAAM,YAKjBtN,EAAGiqB,iBAAkB,QACrB85B,EAAUz2C,KAAM,kBAGjBw6C,IAAQ,SAAU9nD,GACjBA,EAAGqU,UAAY,oFAKf,IAAI8nC,EAAQ98C,EAASuI,cAAe,SACpCu0C,EAAMt0C,aAAc,OAAQ,UAC5B7H,EAAG+H,YAAao0C,GAAQt0C,aAAc,OAAQ,KAIzC7H,EAAGiqB,iBAAkB,YAAa9nB,QACtC4hD,EAAUz2C,KAAM,OAASq3C,EAAa,eAKW,IAA7C3kD,EAAGiqB,iBAAkB,YAAa9nB,QACtC4hD,EAAUz2C,KAAM,WAAY,aAK7Bu2C,EAAQ97C,YAAa/H,GAAKoF,UAAW,EACc,IAA9CpF,EAAGiqB,iBAAkB,aAAc9nB,QACvC4hD,EAAUz2C,KAAM,WAAY,aAK7BtN,EAAGiqB,iBAAkB,QACrB85B,EAAUz2C,KAAM,aAIX0zC,EAAQuI,gBAAkB/D,EAAQ/+C,KAAQm6B,EAAUijB,EAAQjjB,SAClEijB,EAAQ2F,uBACR3F,EAAQ4F,oBACR5F,EAAQ6F,kBACR7F,EAAQ8F,qBAER7B,IAAQ,SAAU9nD,GAIjBghD,EAAQ4I,kBAAoBhpB,EAAQ79B,KAAM/C,EAAI,KAI9C4gC,EAAQ79B,KAAM/C,EAAI,aAClBgkD,EAAc12C,KAAM,KAAM/J,MAItBy9C,EAAQsG,qBAQbvD,EAAUz2C,KAAM,QAGjBy2C,EAAYA,EAAU5hD,QAAU,IAAIuJ,OAAQq4C,EAAUt2C,KAAM,MAC5Du2C,EAAgBA,EAAc7hD,QAAU,IAAIuJ,OAAQs4C,EAAcv2C,KAAM,MAIxEq7C,EAAatD,EAAQ/+C,KAAMo9C,EAAQgG,yBAKnCrmC,EAAWslC,GAActD,EAAQ/+C,KAAMo9C,EAAQrgC,UAC9C,SAAU9f,EAAGqZ,GAQZ,IAAI+sC,EAAuB,IAAfpmD,EAAExB,UAAkBwB,EAAEo8C,iBAAmBp8C,EACpDqmD,EAAMhtC,GAAKA,EAAEhP,WACd,OAAOrK,IAAMqmD,MAAWA,GAAwB,IAAjBA,EAAI7nD,YAClC4nD,EAAMtmC,SACLsmC,EAAMtmC,SAAUumC,GAChBrmD,EAAEmmD,yBAA8D,GAAnCnmD,EAAEmmD,wBAAyBE,MAG3D,SAAUrmD,EAAGqZ,GACZ,GAAKA,EACJ,KAAUA,EAAIA,EAAEhP,YACf,GAAKgP,IAAMrZ,EACV,OAAO,EAIV,OAAO,GAOT8gD,EAAYsE,EACZ,SAAUplD,EAAGqZ,GAGZ,GAAKrZ,IAAMqZ,EAEV,OADA4mC,GAAe,EACR,EAIR,IAAIqG,GAAWtmD,EAAEmmD,yBAA2B9sC,EAAE8sC,wBAC9C,OAAKG,IAgBU,GAPfA,GAAYtmD,EAAEojD,eAAiBpjD,KAASqZ,EAAE+pC,eAAiB/pC,GAC1DrZ,EAAEmmD,wBAAyB9sC,GAG3B,KAIGikC,EAAQiJ,cAAgBltC,EAAE8sC,wBAAyBnmD,KAAQsmD,EAOzDtmD,GAAKrE,GAAYqE,EAAEojD,eAAiB7C,GACxCzgC,EAAUygC,EAAcvgD,IAChB,EAOJqZ,GAAK1d,GAAY0d,EAAE+pC,eAAiB7C,GACxCzgC,EAAUygC,EAAclnC,GACjB,EAID2mC,EACJ/jD,EAAS+jD,EAAWhgD,GAAM/D,EAAS+jD,EAAW3mC,GAChD,EAGe,EAAVitC,GAAe,EAAI,IAE3B,SAAUtmD,EAAGqZ,GAGZ,GAAKrZ,IAAMqZ,EAEV,OADA4mC,GAAe,EACR,EAGR,IAAI3lC,EACHzd,EAAI,EACJ2pD,EAAMxmD,EAAEqK,WACRg8C,EAAMhtC,EAAEhP,WACRo8C,EAAK,CAAEzmD,GACP0mD,EAAK,CAAErtC,GAGR,IAAMmtC,IAAQH,EAMb,OAAOrmD,GAAKrE,GAAY,EACvB0d,GAAK1d,EAAW,EAEhB6qD,GAAO,EACPH,EAAM,EACNrG,EACE/jD,EAAS+jD,EAAWhgD,GAAM/D,EAAS+jD,EAAW3mC,GAChD,EAGK,GAAKmtC,IAAQH,EACnB,OAAO7B,GAAcxkD,EAAGqZ,GAKzB,IADAiB,EAAMta,EACIsa,EAAMA,EAAIjQ,YACnBo8C,EAAGz4C,QAASsM,GAGb,IADAA,EAAMjB,EACIiB,EAAMA,EAAIjQ,YACnBq8C,EAAG14C,QAASsM,GAIb,KAAQmsC,EAAI5pD,KAAQ6pD,EAAI7pD,IACvBA,IAGD,OAAOA,EAGN2nD,GAAciC,EAAI5pD,GAAK6pD,EAAI7pD,IAO3B4pD,EAAI5pD,IAAO0jD,GAAgB,EAC3BmG,EAAI7pD,IAAO0jD,EAAe,EAE1B,GAGK5kD,GA1fCA,GA6fT8jD,GAAOviB,QAAU,SAAUt9B,EAAM+mD,GAChC,OAAOlH,GAAQ7/C,EAAM,KAAM,KAAM+mD,IAGlClH,GAAOoG,gBAAkB,SAAUrH,EAAM5+C,GAGxC,GAFAsgD,EAAa1B,GAERlB,EAAQuI,iBAAmBzF,IAC9BS,EAAwBjhD,EAAO,QAC7B0gD,IAAkBA,EAAcv9C,KAAMnD,OACtCygD,IAAkBA,EAAUt9C,KAAMnD,IAErC,IACC,IAAIyrB,EAAM6R,EAAQ79B,KAAMm/C,EAAM5+C,GAG9B,GAAKyrB,GAAOiyB,EAAQ4I,mBAInB1H,EAAK7iD,UAAuC,KAA3B6iD,EAAK7iD,SAAS6C,SAC/B,OAAO6sB,EAEP,MAAQxmB,GACTg8C,EAAwBjhD,GAAM,GAIhC,OAAO6/C,GAAQ7/C,EAAMjE,EAAU,KAAM,CAAE6iD,IAAS//C,OAAS,GAG1DghD,GAAO3/B,SAAW,SAAU5C,EAASshC,GAUpC,OAHOthC,EAAQkmC,eAAiBlmC,IAAavhB,GAC5CukD,EAAahjC,GAEP4C,EAAU5C,EAASshC,IAG3BiB,GAAO/jD,KAAO,SAAU8iD,EAAM7gD,IAOtB6gD,EAAK4E,eAAiB5E,IAAU7iD,GACtCukD,EAAa1B,GAGd,IAAI1/C,EAAK4gD,EAAK6E,WAAY5mD,EAAKoH,eAG9BiP,EAAMlV,GAAMq+C,EAAO99C,KAAMqgD,EAAK6E,WAAY5mD,EAAKoH,eAC9CjG,EAAI0/C,EAAM7gD,GAAOyiD,QACjBllD,EAEF,YAAeA,IAAR8Y,EACNA,EACAspC,EAAQnuC,aAAeixC,EACtB5B,EAAKh0B,aAAc7sB,IACjBqW,EAAMwqC,EAAKmH,iBAAkBhoD,KAAYqW,EAAI4yC,UAC9C5yC,EAAI6C,MACJ,MAGJ4oC,GAAOz+B,OAAS,SAAU9b,GACzB,OAASA,EAAM,IAAKhJ,QAASmmD,GAAYC,KAG1C7C,GAAOr/C,MAAQ,SAAU6+B,GACxB,MAAM,IAAIpU,MAAO,0CAA4CoU,IAO9DwgB,GAAOoH,WAAa,SAAUzH,GAC7B,IAAIZ,EACHsI,EAAa,GACb5/C,EAAI,EACJrK,EAAI,EAOL,GAJAojD,GAAgB3C,EAAQyJ,iBACxB/G,GAAa1C,EAAQ0J,YAAc5H,EAAQhgD,MAAO,GAClDggD,EAAQ/rC,KAAMytC,GAETb,EAAe,CACnB,KAAUzB,EAAOY,EAASviD,MACpB2hD,IAASY,EAASviD,KACtBqK,EAAI4/C,EAAWl9C,KAAM/M,IAGvB,KAAQqK,KACPk4C,EAAQjmC,OAAQ2tC,EAAY5/C,GAAK,GAQnC,OAFA84C,EAAY,KAELZ,GAORO,EAAUF,GAAOE,QAAU,SAAUnB,GACpC,IAAIj7C,EACH8nB,EAAM,GACNxuB,EAAI,EACJ2B,EAAWggD,EAAKhgD,SAEjB,GAAMA,GAQC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAIjE,GAAiC,iBAArBggD,EAAKyI,YAChB,OAAOzI,EAAKyI,YAIZ,IAAMzI,EAAOA,EAAKv1C,WAAYu1C,EAAMA,EAAOA,EAAKt1C,YAC/CmiB,GAAOs0B,EAASnB,QAGZ,GAAkB,IAAbhgD,GAA+B,IAAbA,EAC7B,OAAOggD,EAAK17C,eAnBZ,KAAUS,EAAOi7C,EAAM3hD,MAGtBwuB,GAAOs0B,EAASp8C,GAqBlB,OAAO8nB,IAGRq0B,EAAOD,GAAOyH,UAAY,CAGzBhD,YAAa,GAEbpkD,aAAcqkD,GAEdvvC,MAAO8sC,EAEP6C,WAAY,GAEZ9hD,KAAM,GAEN0kD,SAAU,CACT,IAAK,CAAE1mD,IAAK,aAAc4C,OAAO,GACjC,IAAK,CAAE5C,IAAK,cACZ,IAAK,CAAEA,IAAK,kBAAmB4C,OAAO,GACtC,IAAK,CAAE5C,IAAK,oBAGb2mD,UAAW,CACV,KAAQ,SAAUxyC,GAWjB,OAVAA,EAAO,GAAMA,EAAO,GAAI1Y,QAAS+lD,GAAWC,IAG5CttC,EAAO,IAAQA,EAAO,IAAOA,EAAO,IACnCA,EAAO,IAAO,IAAK1Y,QAAS+lD,GAAWC,IAEpB,OAAfttC,EAAO,KACXA,EAAO,GAAM,IAAMA,EAAO,GAAM,KAG1BA,EAAMxV,MAAO,EAAG,IAGxB,MAAS,SAAUwV,GAiClB,OArBAA,EAAO,GAAMA,EAAO,GAAI7P,cAEU,QAA7B6P,EAAO,GAAIxV,MAAO,EAAG,IAGnBwV,EAAO,IACZ6qC,GAAOr/C,MAAOwU,EAAO,IAKtBA,EAAO,KAASA,EAAO,GACtBA,EAAO,IAAQA,EAAO,IAAO,GAC7B,GAAqB,SAAfA,EAAO,IAAiC,QAAfA,EAAO,KACvCA,EAAO,KAAWA,EAAO,GAAMA,EAAO,IAAwB,QAAfA,EAAO,KAG3CA,EAAO,IAClB6qC,GAAOr/C,MAAOwU,EAAO,IAGfA,GAGR,OAAU,SAAUA,GACnB,IAAIyyC,EACHC,GAAY1yC,EAAO,IAAOA,EAAO,GAElC,OAAK8sC,EAAmB,MAAE3+C,KAAM6R,EAAO,IAC/B,MAIHA,EAAO,GACXA,EAAO,GAAMA,EAAO,IAAOA,EAAO,IAAO,GAG9B0yC,GAAY9F,EAAQz+C,KAAMukD,KAGnCD,EAASxH,EAAUyH,GAAU,MAG7BD,EAASC,EAASrrD,QAAS,IAAKqrD,EAAS7oD,OAAS4oD,GAAWC,EAAS7oD,UAGxEmW,EAAO,GAAMA,EAAO,GAAIxV,MAAO,EAAGioD,GAClCzyC,EAAO,GAAM0yC,EAASloD,MAAO,EAAGioD,IAI1BzyC,EAAMxV,MAAO,EAAG,MAIzByD,OAAQ,CAEP,IAAO,SAAU0kD,GAChB,IAAI1E,EAAW0E,EAAiBrrD,QAAS+lD,GAAWC,IAAYn9C,cAChE,MAA4B,MAArBwiD,EACN,WACC,OAAO,GAER,SAAU/I,GACT,OAAOA,EAAKqE,UAAYrE,EAAKqE,SAAS99C,gBAAkB89C,IAI3D,MAAS,SAAUz+C,GAClB,IAAIoiB,EAAUi6B,EAAYr8C,EAAY,KAEtC,OAAOoiB,IACJA,EAAU,IAAIxe,OAAQ,MAAQi5C,EAC/B,IAAM78C,EAAY,IAAM68C,EAAa,SAAaR,EACjDr8C,GAAW,SAAUo6C,GACpB,OAAOh4B,EAAQzjB,KACY,iBAAnBy7C,EAAKp6C,WAA0Bo6C,EAAKp6C,gBACd,IAAtBo6C,EAAKh0B,cACXg0B,EAAKh0B,aAAc,UACpB,QAKN,KAAQ,SAAU7sB,EAAM6pD,EAAU3yC,GACjC,OAAO,SAAU2pC,GAChB,IAAIj/C,EAASkgD,GAAO/jD,KAAM8iD,EAAM7gD,GAEhC,OAAe,MAAV4B,EACgB,OAAbioD,GAEFA,IAINjoD,GAAU,GAIU,MAAbioD,EAAmBjoD,IAAWsV,EACvB,OAAb2yC,EAAoBjoD,IAAWsV,EAClB,OAAb2yC,EAAoB3yC,GAAqC,IAA5BtV,EAAOtD,QAAS4Y,GAChC,OAAb2yC,EAAoB3yC,GAAStV,EAAOtD,QAAS4Y,IAAW,EAC3C,OAAb2yC,EAAoB3yC,GAAStV,EAAOH,OAAQyV,EAAMpW,UAAaoW,EAClD,OAAb2yC,GAAsB,IAAMjoD,EAAOrD,QAASilD,EAAa,KAAQ,KAAMllD,QAAS4Y,IAAW,EAC9E,OAAb2yC,IAAoBjoD,IAAWsV,GAAStV,EAAOH,MAAO,EAAGyV,EAAMpW,OAAS,KAAQoW,EAAQ,QAO3F,MAAS,SAAU1O,EAAMshD,EAAMC,EAAWrkD,EAAOyD,GAChD,IAAI6gD,EAAgC,QAAvBxhD,EAAK/G,MAAO,EAAG,GAC3BwoD,EAA+B,SAArBzhD,EAAK/G,OAAQ,GACvByoD,EAAkB,YAATJ,EAEV,OAAiB,IAAVpkD,GAAwB,IAATyD,EAGrB,SAAU03C,GACT,QAASA,EAAKn0C,YAGf,SAAUm0C,EAAMxG,EAAU8P,GACzB,IAAI7D,EAAO8D,EAAaC,EAAYzkD,EAAM0kD,EAAWhnC,EACpDxgB,EAAMknD,IAAWC,EAAU,cAAgB,kBAC3CjmD,EAAS68C,EAAKn0C,WACd1M,EAAOkqD,GAAUrJ,EAAKqE,SAAS99C,cAC/BmjD,GAAYJ,IAAQD,EACpBpD,GAAO,EAER,GAAK9iD,EAAS,CAGb,GAAKgmD,EAAS,CACb,KAAQlnD,GAAM,CAEb,IADA8C,EAAOi7C,EACGj7C,EAAOA,EAAM9C,IACtB,GAAKonD,EACJtkD,EAAKs/C,SAAS99C,gBAAkBpH,EACd,IAAlB4F,EAAK/E,SAEL,OAAO,EAKTyiB,EAAQxgB,EAAe,SAAT0F,IAAoB8a,GAAS,cAE5C,OAAO,EAMR,GAHAA,EAAQ,CAAE2mC,EAAUjmD,EAAOsH,WAAatH,EAAOyI,WAG1Cw9C,GAAWM,GAkBf,IAHAzD,GADAwD,GADAhE,GAHA8D,GAJAC,GADAzkD,EAAO5B,GACYo9C,KAAex7C,EAAMw7C,GAAY,KAI1Bx7C,EAAK4kD,YAC5BH,EAAYzkD,EAAK4kD,UAAa,KAEZhiD,IAAU,IACZ,KAAQq6C,GAAWyD,EAAO,KACzBA,EAAO,GAC3B1gD,EAAO0kD,GAAatmD,EAAO0O,WAAY43C,GAE7B1kD,IAAS0kD,GAAa1kD,GAAQA,EAAM9C,KAG3CgkD,EAAOwD,EAAY,IAAOhnC,EAAM6P,OAGlC,GAAuB,IAAlBvtB,EAAK/E,YAAoBimD,GAAQlhD,IAASi7C,EAAO,CACrDuJ,EAAa5hD,GAAS,CAAEq6C,EAASyH,EAAWxD,GAC5C,YAyBF,GAlBKyD,IAaJzD,EADAwD,GADAhE,GAHA8D,GAJAC,GADAzkD,EAAOi7C,GACYO,KAAex7C,EAAMw7C,GAAY,KAI1Bx7C,EAAK4kD,YAC5BH,EAAYzkD,EAAK4kD,UAAa,KAEZhiD,IAAU,IACZ,KAAQq6C,GAAWyD,EAAO,KAMhC,IAATQ,EAGJ,MAAUlhD,IAAS0kD,GAAa1kD,GAAQA,EAAM9C,KAC3CgkD,EAAOwD,EAAY,IAAOhnC,EAAM6P,UAE3B+2B,EACNtkD,EAAKs/C,SAAS99C,gBAAkBpH,EACd,IAAlB4F,EAAK/E,cACHimD,IAGGyD,KAMJH,GALAC,EAAazkD,EAAMw7C,KAChBx7C,EAAMw7C,GAAY,KAIKx7C,EAAK4kD,YAC5BH,EAAYzkD,EAAK4kD,UAAa,KAEpBhiD,GAAS,CAAEq6C,EAASiE,IAG7BlhD,IAASi7C,MAUlB,OADAiG,GAAQ39C,KACQzD,GAAWohD,EAAOphD,GAAU,GAAKohD,EAAOphD,GAAS,KAKrE,OAAU,SAAU+kD,EAAQpD,GAM3B,IAAI/lD,EACHH,EAAK4gD,EAAK7/C,QAASuoD,IAAY1I,EAAK2I,WAAYD,EAAOrjD,gBACtD06C,GAAOr/C,MAAO,uBAAyBgoD,GAKzC,OAAKtpD,EAAIigD,GACDjgD,EAAIkmD,GAIPlmD,EAAGL,OAAS,GAChBQ,EAAO,CAAEmpD,EAAQA,EAAQ,GAAIpD,GACtBtF,EAAK2I,WAAW75C,eAAgB45C,EAAOrjD,eAC7Co/C,IAAc,SAAUpB,EAAM7lB,GAI7B,IAHA,IAAIorB,EACHC,EAAUzpD,EAAIikD,EAAMiC,GACpBnoD,EAAI0rD,EAAQ9pD,OACL5B,KAEPkmD,EADAuF,EAAMrsD,EAAS8mD,EAAMwF,EAAS1rD,OACbqgC,EAASorB,GAAQC,EAAS1rD,OAG7C,SAAU2hD,GACT,OAAO1/C,EAAI0/C,EAAM,EAAGv/C,KAIhBH,IAITe,QAAS,CAGR,IAAOskD,IAAc,SAAUpG,GAK9B,IAAItF,EAAQ,GACX2G,EAAU,GACVoJ,EAAU1I,EAAS/B,EAAS7hD,QAASklD,EAAO,OAE7C,OAAOoH,EAASzJ,GACfoF,IAAc,SAAUpB,EAAM7lB,EAAS8a,EAAU8P,GAMhD,IALA,IAAItJ,EACHiK,EAAYD,EAASzF,EAAM,KAAM+E,EAAK,IACtCjrD,EAAIkmD,EAAKtkD,OAGF5B,MACA2hD,EAAOiK,EAAW5rD,MACxBkmD,EAAMlmD,KAASqgC,EAASrgC,GAAM2hD,OAIjC,SAAUA,EAAMxG,EAAU8P,GAMzB,OALArP,EAAO,GAAM+F,EACbgK,EAAS/P,EAAO,KAAMqP,EAAK1I,GAG3B3G,EAAO,GAAM,MACL2G,EAAQtuB,UAInB,IAAOqzB,IAAc,SAAUpG,GAC9B,OAAO,SAAUS,GAChB,OAAOiB,GAAQ1B,EAAUS,GAAO//C,OAAS,MAI3C,SAAY0lD,IAAc,SAAUp8C,GAEnC,OADAA,EAAOA,EAAK7L,QAAS+lD,GAAWC,IACzB,SAAU1D,GAChB,OAASA,EAAKyI,aAAetH,EAASnB,IAASviD,QAAS8L,IAAU,MAWpE,KAAQo8C,IAAc,SAAUuE,GAO/B,OAJMjH,EAAY1+C,KAAM2lD,GAAQ,KAC/BjJ,GAAOr/C,MAAO,qBAAuBsoD,GAEtCA,EAAOA,EAAKxsD,QAAS+lD,GAAWC,IAAYn9C,cACrC,SAAUy5C,GAChB,IAAImK,EACJ,GACC,GAAOA,EAAWvI,EACjB5B,EAAKkK,KACLlK,EAAKh0B,aAAc,aAAgBg0B,EAAKh0B,aAAc,QAGtD,OADAm+B,EAAWA,EAAS5jD,iBACA2jD,GAA2C,IAAnCC,EAAS1sD,QAASysD,EAAO,YAE3ClK,EAAOA,EAAKn0C,aAAkC,IAAlBm0C,EAAKhgD,UAC7C,OAAO,MAKT,OAAU,SAAUggD,GACnB,IAAIoK,EAAOhtD,EAAOirB,UAAYjrB,EAAOirB,SAAS+hC,KAC9C,OAAOA,GAAQA,EAAKxpD,MAAO,KAAQo/C,EAAKphD,IAGzC,KAAQ,SAAUohD,GACjB,OAAOA,IAAS2B,GAGjB,MAAS,SAAU3B,GAClB,OAAOA,IAAS7iD,EAAS+J,iBACrB/J,EAASktD,UAAYltD,EAASktD,gBAC7BrK,EAAKr4C,MAAQq4C,EAAKlwC,OAASkwC,EAAKsK,WAItC,QAAWjE,IAAsB,GACjC,SAAYA,IAAsB,GAElC,QAAW,SAAUrG,GAIpB,IAAIqE,EAAWrE,EAAKqE,SAAS99C,cAC7B,MAAsB,UAAb89C,KAA0BrE,EAAKnkC,SACxB,WAAbwoC,KAA2BrE,EAAKzgD,UAGpC,SAAY,SAAUygD,GASrB,OALKA,EAAKn0C,YAETm0C,EAAKn0C,WAAW0+C,eAGQ,IAAlBvK,EAAKzgD,UAIb,MAAS,SAAUygD,GAMlB,IAAMA,EAAOA,EAAKv1C,WAAYu1C,EAAMA,EAAOA,EAAKt1C,YAC/C,GAAKs1C,EAAKhgD,SAAW,EACpB,OAAO,EAGT,OAAO,GAGR,OAAU,SAAUggD,GACnB,OAAQkB,EAAK7/C,QAAiB,MAAG2+C,IAIlC,OAAU,SAAUA,GACnB,OAAOqD,EAAQ9+C,KAAMy7C,EAAKqE,WAG3B,MAAS,SAAUrE,GAClB,OAAOoD,EAAQ7+C,KAAMy7C,EAAKqE,WAG3B,OAAU,SAAUrE,GACnB,IAAI7gD,EAAO6gD,EAAKqE,SAAS99C,cACzB,MAAgB,UAATpH,GAAkC,WAAd6gD,EAAKr4C,MAA8B,WAATxI,GAGtD,KAAQ,SAAU6gD,GACjB,IAAI9iD,EACJ,MAAuC,UAAhC8iD,EAAKqE,SAAS99C,eACN,SAAdy5C,EAAKr4C,OAIuC,OAAxCzK,EAAO8iD,EAAKh0B,aAAc,UACN,SAAvB9uB,EAAKqJ,gBAIR,MAASggD,IAAwB,WAChC,MAAO,CAAE,MAGV,KAAQA,IAAwB,SAAUiE,EAAevqD,GACxD,MAAO,CAAEA,EAAS,MAGnB,GAAMsmD,IAAwB,SAAUiE,EAAevqD,EAAQumD,GAC9D,MAAO,CAAEA,EAAW,EAAIA,EAAWvmD,EAASumD,MAG7C,KAAQD,IAAwB,SAAUE,EAAcxmD,GAEvD,IADA,IAAI5B,EAAI,EACAA,EAAI4B,EAAQ5B,GAAK,EACxBooD,EAAar7C,KAAM/M,GAEpB,OAAOooD,KAGR,IAAOF,IAAwB,SAAUE,EAAcxmD,GAEtD,IADA,IAAI5B,EAAI,EACAA,EAAI4B,EAAQ5B,GAAK,EACxBooD,EAAar7C,KAAM/M,GAEpB,OAAOooD,KAGR,GAAMF,IAAwB,SAAUE,EAAcxmD,EAAQumD,GAM7D,IALA,IAAInoD,EAAImoD,EAAW,EAClBA,EAAWvmD,EACXumD,EAAWvmD,EACVA,EACAumD,IACQnoD,GAAK,GACdooD,EAAar7C,KAAM/M,GAEpB,OAAOooD,KAGR,GAAMF,IAAwB,SAAUE,EAAcxmD,EAAQumD,GAE7D,IADA,IAAInoD,EAAImoD,EAAW,EAAIA,EAAWvmD,EAASumD,IACjCnoD,EAAI4B,GACbwmD,EAAar7C,KAAM/M,GAEpB,OAAOooD,QAKLplD,QAAe,IAAI6/C,EAAK7/C,QAAc,GAGhC,CAAEopD,OAAO,EAAMvvC,UAAU,EAAMwvC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5E1J,EAAK7/C,QAAShD,GAAM8nD,GAAmB9nD,GAExC,IAAMA,IAAK,CAAEwsD,QAAQ,EAAMC,OAAO,GACjC5J,EAAK7/C,QAAShD,GAAM+nD,GAAoB/nD,GAIzC,SAASwrD,MA0ET,SAAS1E,GAAY4F,GAIpB,IAHA,IAAI1sD,EAAI,EACP6nC,EAAM6kB,EAAO9qD,OACbs/C,EAAW,GACJlhD,EAAI6nC,EAAK7nC,IAChBkhD,GAAYwL,EAAQ1sD,GAAIga,MAEzB,OAAOknC,EAGR,SAAS6E,GAAe4F,EAASgB,EAAYxc,GAC5C,IAAIvsC,EAAM+oD,EAAW/oD,IACpBgpD,EAAOD,EAAWpjB,KAClBt9B,EAAM2gD,GAAQhpD,EACdipD,EAAmB1c,GAAgB,eAARlkC,EAC3B6gD,EAAW/9C,IAEZ,OAAO49C,EAAWnmD,MAGjB,SAAUm7C,EAAMthC,EAAS4qC,GACxB,KAAUtJ,EAAOA,EAAM/9C,IACtB,GAAuB,IAAlB+9C,EAAKhgD,UAAkBkrD,EAC3B,OAAOlB,EAAShK,EAAMthC,EAAS4qC,GAGjC,OAAO,GAIR,SAAUtJ,EAAMthC,EAAS4qC,GACxB,IAAI8B,EAAU7B,EAAaC,EAC1B6B,EAAW,CAAErJ,EAASmJ,GAGvB,GAAK7B,GACJ,KAAUtJ,EAAOA,EAAM/9C,IACtB,IAAuB,IAAlB+9C,EAAKhgD,UAAkBkrD,IACtBlB,EAAShK,EAAMthC,EAAS4qC,GAC5B,OAAO,OAKV,KAAUtJ,EAAOA,EAAM/9C,IACtB,GAAuB,IAAlB+9C,EAAKhgD,UAAkBkrD,EAQ3B,GAHA3B,GAJAC,EAAaxJ,EAAMO,KAAeP,EAAMO,GAAY,KAI1BP,EAAK2J,YAC5BH,EAAYxJ,EAAK2J,UAAa,IAE5BsB,GAAQA,IAASjL,EAAKqE,SAAS99C,cACnCy5C,EAAOA,EAAM/9C,IAAS+9C,MAChB,KAAOoL,EAAW7B,EAAaj/C,KACrC8gD,EAAU,KAAQpJ,GAAWoJ,EAAU,KAAQD,EAG/C,OAASE,EAAU,GAAMD,EAAU,GAOnC,GAHA7B,EAAaj/C,GAAQ+gD,EAGdA,EAAU,GAAMrB,EAAShK,EAAMthC,EAAS4qC,GAC9C,OAAO,EAMZ,OAAO,GAIV,SAASgC,GAAgBC,GACxB,OAAOA,EAAStrD,OAAS,EACxB,SAAU+/C,EAAMthC,EAAS4qC,GAExB,IADA,IAAIjrD,EAAIktD,EAAStrD,OACT5B,KACP,IAAMktD,EAAUltD,GAAK2hD,EAAMthC,EAAS4qC,GACnC,OAAO,EAGT,OAAO,GAERiC,EAAU,GAYZ,SAASC,GAAUvB,EAAW31C,EAAKjQ,EAAQqa,EAAS4qC,GAOnD,IANA,IAAItJ,EACHyL,EAAe,GACfptD,EAAI,EACJ6nC,EAAM+jB,EAAUhqD,OAChByrD,EAAgB,MAAPp3C,EAEFjW,EAAI6nC,EAAK7nC,KACT2hD,EAAOiK,EAAW5rD,MAClBgG,IAAUA,EAAQ27C,EAAMthC,EAAS4qC,KACtCmC,EAAargD,KAAM40C,GACd0L,GACJp3C,EAAIlJ,KAAM/M,KAMd,OAAOotD,EAGR,SAASE,GAAY/C,EAAWrJ,EAAUyK,EAAS4B,EAAYC,EAAYC,GAO1E,OANKF,IAAeA,EAAYrL,KAC/BqL,EAAaD,GAAYC,IAErBC,IAAeA,EAAYtL,KAC/BsL,EAAaF,GAAYE,EAAYC,IAE/BnG,IAAc,SAAUpB,EAAM3D,EAASliC,EAAS4qC,GACtD,IAAIyC,EAAM1tD,EAAG2hD,EACZgM,EAAS,GACTC,EAAU,GACVC,EAActL,EAAQ3gD,OAGtB4/C,EAAQ0E,GA5CX,SAA2BhF,EAAU4M,EAAUvL,GAG9C,IAFA,IAAIviD,EAAI,EACP6nC,EAAMimB,EAASlsD,OACR5B,EAAI6nC,EAAK7nC,IAChB4iD,GAAQ1B,EAAU4M,EAAU9tD,GAAKuiD,GAElC,OAAOA,EAsCWwL,CACf7M,GAAY,IACZ7gC,EAAQ1e,SAAW,CAAE0e,GAAYA,EACjC,IAID2tC,GAAYzD,IAAerE,GAAShF,EAEnCM,EADA2L,GAAU3L,EAAOmM,EAAQpD,EAAWlqC,EAAS4qC,GAG9CgD,EAAatC,EAGZ6B,IAAgBtH,EAAOqE,EAAYsD,GAAeN,GAGjD,GAGAhL,EACDyL,EAQF,GALKrC,GACJA,EAASqC,EAAWC,EAAY5tC,EAAS4qC,GAIrCsC,EAMJ,IALAG,EAAOP,GAAUc,EAAYL,GAC7BL,EAAYG,EAAM,GAAIrtC,EAAS4qC,GAG/BjrD,EAAI0tD,EAAK9rD,OACD5B,MACA2hD,EAAO+L,EAAM1tD,MACnBiuD,EAAYL,EAAS5tD,MAAWguD,EAAWJ,EAAS5tD,IAAQ2hD,IAK/D,GAAKuE,GACJ,GAAKsH,GAAcjD,EAAY,CAC9B,GAAKiD,EAAa,CAKjB,IAFAE,EAAO,GACP1tD,EAAIiuD,EAAWrsD,OACP5B,MACA2hD,EAAOsM,EAAYjuD,KAGzB0tD,EAAK3gD,KAAQihD,EAAWhuD,GAAM2hD,GAGhC6L,EAAY,KAAQS,EAAa,GAAMP,EAAMzC,GAK9C,IADAjrD,EAAIiuD,EAAWrsD,OACP5B,MACA2hD,EAAOsM,EAAYjuD,MACvB0tD,EAAOF,EAAapuD,EAAS8mD,EAAMvE,GAASgM,EAAQ3tD,KAAS,IAE/DkmD,EAAMwH,KAAYnL,EAASmL,GAAS/L,UAOvCsM,EAAad,GACZc,IAAe1L,EACd0L,EAAW3xC,OAAQuxC,EAAaI,EAAWrsD,QAC3CqsD,GAEGT,EACJA,EAAY,KAAMjL,EAAS0L,EAAYhD,GAEvCl+C,EAAKlK,MAAO0/C,EAAS0L,MAMzB,SAASC,GAAmBxB,GAyB3B,IAxBA,IAAIyB,EAAcxC,EAASthD,EAC1Bw9B,EAAM6kB,EAAO9qD,OACbwsD,EAAkBvL,EAAKyH,SAAUoC,EAAQ,GAAIpjD,MAC7C+kD,EAAmBD,GAAmBvL,EAAKyH,SAAU,KACrDtqD,EAAIouD,EAAkB,EAAI,EAG1BE,EAAevI,IAAe,SAAUpE,GACvC,OAAOA,IAASwM,IACdE,GAAkB,GACrBE,EAAkBxI,IAAe,SAAUpE,GAC1C,OAAOviD,EAAS+uD,EAAcxM,IAAU,IACtC0M,GAAkB,GACrBnB,EAAW,CAAE,SAAUvL,EAAMthC,EAAS4qC,GACrC,IAAIz8B,GAAS4/B,IAAqBnD,GAAO5qC,IAAY6iC,MAClDiL,EAAe9tC,GAAU1e,SAC1B2sD,EAAc3M,EAAMthC,EAAS4qC,GAC7BsD,EAAiB5M,EAAMthC,EAAS4qC,IAIlC,OADAkD,EAAe,KACR3/B,IAGDxuB,EAAI6nC,EAAK7nC,IAChB,GAAO2rD,EAAU9I,EAAKyH,SAAUoC,EAAQ1sD,GAAIsJ,MAC3C4jD,EAAW,CAAEnH,GAAekH,GAAgBC,GAAYvB,QAClD,CAIN,IAHAA,EAAU9I,EAAK78C,OAAQ0mD,EAAQ1sD,GAAIsJ,MAAOzG,MAAO,KAAM6pD,EAAQ1sD,GAAIqgC,UAGrD6hB,GAAY,CAIzB,IADA73C,IAAMrK,EACEqK,EAAIw9B,IACNgb,EAAKyH,SAAUoC,EAAQriD,GAAIf,MADhBe,KAKjB,OAAOijD,GACNttD,EAAI,GAAKitD,GAAgBC,GACzBltD,EAAI,GAAK8mD,GAGT4F,EACEnqD,MAAO,EAAGvC,EAAI,GACdsK,OAAQ,CAAE0P,MAAgC,MAAzB0yC,EAAQ1sD,EAAI,GAAIsJ,KAAe,IAAM,MACtDjK,QAASklD,EAAO,MAClBoH,EACA3rD,EAAIqK,GAAK6jD,GAAmBxB,EAAOnqD,MAAOvC,EAAGqK,IAC7CA,EAAIw9B,GAAOqmB,GAAqBxB,EAASA,EAAOnqD,MAAO8H,IACvDA,EAAIw9B,GAAOif,GAAY4F,IAGzBQ,EAASngD,KAAM4+C,GAIjB,OAAOsB,GAAgBC,GAoTxB,OAtpBA1B,GAAWlpD,UAAYugD,EAAK2L,QAAU3L,EAAK7/C,QAC3C6/C,EAAK2I,WAAa,IAAIA,GAEtBxI,EAAWJ,GAAOI,SAAW,SAAU9B,EAAUuN,GAChD,IAAI/C,EAAS3zC,EAAO20C,EAAQpjD,EAC3BolD,EAAOtI,EAAQuI,EACfC,EAAS9K,EAAY5C,EAAW,KAEjC,GAAK0N,EACJ,OAAOH,EAAY,EAAIG,EAAOrsD,MAAO,GAOtC,IAJAmsD,EAAQxN,EACRkF,EAAS,GACTuI,EAAa9L,EAAK0H,UAEVmE,GAAQ,CA2Bf,IAAMplD,KAxBAoiD,KAAa3zC,EAAQysC,EAAOgC,KAAMkI,MAClC32C,IAGJ22C,EAAQA,EAAMnsD,MAAOwV,EAAO,GAAInW,SAAY8sD,GAE7CtI,EAAOr5C,KAAQ2/C,EAAS,KAGzBhB,GAAU,GAGH3zC,EAAQ0sC,EAAa+B,KAAMkI,MACjChD,EAAU3zC,EAAM1F,QAChBq6C,EAAO3/C,KAAM,CACZiN,MAAO0xC,EAGPpiD,KAAMyO,EAAO,GAAI1Y,QAASklD,EAAO,OAElCmK,EAAQA,EAAMnsD,MAAOmpD,EAAQ9pD,SAIhBihD,EAAK78C,SACX+R,EAAQ8sC,EAAWv7C,GAAOk9C,KAAMkI,KAAgBC,EAAYrlD,MAChEyO,EAAQ42C,EAAYrlD,GAAQyO,MAC9B2zC,EAAU3zC,EAAM1F,QAChBq6C,EAAO3/C,KAAM,CACZiN,MAAO0xC,EACPpiD,KAAMA,EACN+2B,QAAStoB,IAEV22C,EAAQA,EAAMnsD,MAAOmpD,EAAQ9pD,SAI/B,IAAM8pD,EACL,MAOF,OAAO+C,EACNC,EAAM9sD,OACN8sD,EACC9L,GAAOr/C,MAAO29C,GAGd4C,EAAY5C,EAAUkF,GAAS7jD,MAAO,IA4ZzC0gD,EAAUL,GAAOK,QAAU,SAAU/B,EAAUnpC,GAC9C,IAAI/X,EACH6uD,EAAc,GACdC,EAAkB,GAClBF,EAAS7K,EAAe7C,EAAW,KAEpC,IAAM0N,EAAS,CAOd,IAJM72C,IACLA,EAAQirC,EAAU9B,IAEnBlhD,EAAI+X,EAAMnW,OACF5B,MACP4uD,EAASV,GAAmBn2C,EAAO/X,KACtBkiD,GACZ2M,EAAY9hD,KAAM6hD,GAElBE,EAAgB/hD,KAAM6hD,IAKxBA,EAAS7K,EACR7C,EArJH,SAAmC4N,EAAiBD,GACnD,IAAIE,EAAQF,EAAYjtD,OAAS,EAChCotD,EAAYF,EAAgBltD,OAAS,EACrCqtD,EAAe,SAAU/I,EAAM7lC,EAAS4qC,EAAK1I,EAAS2M,GACrD,IAAIvN,EAAMt3C,EAAGshD,EACZwD,EAAe,EACfnvD,EAAI,IACJ4rD,EAAY1F,GAAQ,GACpBkJ,EAAa,GACbC,EAAgBnM,EAGhB1B,EAAQ0E,GAAQ8I,GAAanM,EAAKj9C,KAAY,IAAG,IAAKspD,GAGtDI,EAAkB3L,GAA4B,MAAjB0L,EAAwB,EAAIn1C,KAAKylC,UAAY,GAC1E9X,EAAM2Z,EAAM5/C,OAcb,IAZKstD,IAMJhM,EAAmB7iC,GAAWvhB,GAAYuhB,GAAW6uC,GAM9ClvD,IAAM6nC,GAAgC,OAAvB8Z,EAAOH,EAAOxhD,IAAeA,IAAM,CACzD,GAAKgvD,GAAarN,EAAO,CAWxB,IAVAt3C,EAAI,EAMEgW,GAAWshC,EAAK4E,eAAiBznD,IACtCukD,EAAa1B,GACbsJ,GAAO1H,GAEEoI,EAAUmD,EAAiBzkD,MACpC,GAAKshD,EAAShK,EAAMthC,GAAWvhB,EAAUmsD,GAAQ,CAChD1I,EAAQx1C,KAAM40C,GACd,MAGGuN,IACJvL,EAAU2L,GAKPP,KAGGpN,GAAQgK,GAAWhK,IACzBwN,IAIIjJ,GACJ0F,EAAU7+C,KAAM40C,IAgBnB,GATAwN,GAAgBnvD,EASX+uD,GAAS/uD,IAAMmvD,EAAe,CAElC,IADA9kD,EAAI,EACMshD,EAAUkD,EAAaxkD,MAChCshD,EAASC,EAAWwD,EAAY/uC,EAAS4qC,GAG1C,GAAK/E,EAAO,CAGX,GAAKiJ,EAAe,EACnB,KAAQnvD,KACC4rD,EAAW5rD,IAAOovD,EAAYpvD,KACrCovD,EAAYpvD,GAAMi0B,EAAIzxB,KAAM+/C,IAM/B6M,EAAajC,GAAUiC,GAIxBriD,EAAKlK,MAAO0/C,EAAS6M,GAGhBF,IAAchJ,GAAQkJ,EAAWxtD,OAAS,GAC5CutD,EAAeN,EAAYjtD,OAAW,GAExCghD,GAAOoH,WAAYzH,GAUrB,OALK2M,IACJvL,EAAU2L,EACVpM,EAAmBmM,GAGbzD,GAGT,OAAOmD,EACNzH,GAAc2H,GACdA,EA4BCM,CAA0BT,EAAiBD,KAIrC3N,SAAWA,EAEnB,OAAO0N,GAYRh0C,EAASgoC,GAAOhoC,OAAS,SAAUsmC,EAAU7gC,EAASkiC,EAAS2D,GAC9D,IAAIlmD,EAAG0sD,EAAQ8C,EAAOlmD,EAAM1D,EAC3B6pD,EAA+B,mBAAbvO,GAA2BA,EAC7CnpC,GAASmuC,GAAQlD,EAAY9B,EAAWuO,EAASvO,UAAYA,GAM9D,GAJAqB,EAAUA,GAAW,GAIC,IAAjBxqC,EAAMnW,OAAe,CAIzB,IADA8qD,EAAS30C,EAAO,GAAMA,EAAO,GAAIxV,MAAO,IAC5BX,OAAS,GAAsC,QAA/B4tD,EAAQ9C,EAAQ,IAAMpjD,MAC5B,IAArB+W,EAAQ1e,UAAkB4hD,GAAkBV,EAAKyH,SAAUoC,EAAQ,GAAIpjD,MAAS,CAIhF,KAFA+W,GAAYwiC,EAAKj9C,KAAW,GAAG4pD,EAAMnvB,QAAS,GAC5ChhC,QAAS+lD,GAAWC,IAAahlC,IAAa,IAAM,IAErD,OAAOkiC,EAGIkN,IACXpvC,EAAUA,EAAQ7S,YAGnB0zC,EAAWA,EAAS3+C,MAAOmqD,EAAOr6C,QAAQ2H,MAAMpY,QAKjD,IADA5B,EAAI6kD,EAA0B,aAAE3+C,KAAMg7C,GAAa,EAAIwL,EAAO9qD,OACtD5B,MACPwvD,EAAQ9C,EAAQ1sD,IAGX6iD,EAAKyH,SAAYhhD,EAAOkmD,EAAMlmD,QAGnC,IAAO1D,EAAOi9C,EAAKj9C,KAAM0D,MAGjB48C,EAAOtgD,EACb4pD,EAAMnvB,QAAS,GAAIhhC,QAAS+lD,GAAWC,IACvCF,GAASj/C,KAAMwmD,EAAQ,GAAIpjD,OAAUs9C,GAAavmC,EAAQ7S,aACzD6S,IACI,CAKL,GAFAqsC,EAAOpwC,OAAQtc,EAAG,KAClBkhD,EAAWgF,EAAKtkD,QAAUklD,GAAY4F,IAGrC,OADA3/C,EAAKlK,MAAO0/C,EAAS2D,GACd3D,EAGR,OAeJ,OAPEkN,GAAYxM,EAAS/B,EAAUnpC,IAChCmuC,EACA7lC,GACCkjC,EACDhB,GACCliC,GAAW8kC,GAASj/C,KAAMg7C,IAAc0F,GAAavmC,EAAQ7S,aAAgB6S,GAExEkiC,GAMR9B,EAAQ0J,WAAajI,EAAQ1iB,MAAO,IAAKhpB,KAAMytC,GAAY/2C,KAAM,MAASg1C,EAI1EzB,EAAQyJ,mBAAqB9G,EAG7BC,IAIA5C,EAAQiJ,aAAenC,IAAQ,SAAU9nD,GAGxC,OAA4E,EAArEA,EAAG6pD,wBAAyBxqD,EAASuI,cAAe,gBAMtDkgD,IAAQ,SAAU9nD,GAEvB,OADAA,EAAGqU,UAAY,mBACiC,MAAzCrU,EAAG2M,WAAWuhB,aAAc,YAEnC65B,GAAW,0BAA0B,SAAU7F,EAAM7gD,EAAMiiD,GAC1D,IAAMA,EACL,OAAOpB,EAAKh0B,aAAc7sB,EAA6B,SAAvBA,EAAKoH,cAA2B,EAAI,MAOjEu4C,EAAQnuC,YAAei1C,IAAQ,SAAU9nD,GAG9C,OAFAA,EAAGqU,UAAY,WACfrU,EAAG2M,WAAW9E,aAAc,QAAS,IACY,KAA1C7H,EAAG2M,WAAWuhB,aAAc,aAEnC65B,GAAW,SAAS,SAAU7F,EAAM+N,EAAO3M,GAC1C,IAAMA,GAAyC,UAAhCpB,EAAKqE,SAAS99C,cAC5B,OAAOy5C,EAAK9E,gBAOT0K,IAAQ,SAAU9nD,GACvB,OAAwC,MAAjCA,EAAGkuB,aAAc,gBAExB65B,GAAW/b,GAAU,SAAUkW,EAAM7gD,EAAMiiD,GAC1C,IAAI5rC,EACJ,IAAM4rC,EACL,OAAwB,IAAjBpB,EAAM7gD,GAAkBA,EAAKoH,eACjCiP,EAAMwqC,EAAKmH,iBAAkBhoD,KAAYqW,EAAI4yC,UAC9C5yC,EAAI6C,MACJ,QAKE4oC,GA18EP,CA48EK7jD,GAILkiD,EAAOr7C,KAAOg9C,EACd3B,EAAOl+C,KAAO6/C,EAAOyH,UAGrBpJ,EAAOl+C,KAAM,KAAQk+C,EAAOl+C,KAAKC,QACjCi+C,EAAO+I,WAAa/I,EAAOj0B,OAAS41B,EAAOoH,WAC3C/I,EAAO/1C,KAAO03C,EAAOE,QACrB7B,EAAO0O,SAAW/M,EAAOG,MACzB9B,EAAOh+B,SAAW2/B,EAAO3/B,SACzBg+B,EAAO2O,eAAiBhN,EAAOz+B,OAK/B,IAAIvgB,EAAM,SAAU+9C,EAAM/9C,EAAKisD,GAI9B,IAHA,IAAInE,EAAU,GACboE,OAAqBzxD,IAAVwxD,GAEFlO,EAAOA,EAAM/9C,KAA6B,IAAlB+9C,EAAKhgD,UACtC,GAAuB,IAAlBggD,EAAKhgD,SAAiB,CAC1B,GAAKmuD,GAAY7O,EAAQU,GAAOzxC,GAAI2/C,GACnC,MAEDnE,EAAQ3+C,KAAM40C,GAGhB,OAAO+J,GAIJvoC,EAAW,SAAUgK,EAAGw0B,GAG3B,IAFA,IAAI+J,EAAU,GAENv+B,EAAGA,EAAIA,EAAE9gB,YACI,IAAf8gB,EAAExrB,UAAkBwrB,IAAMw0B,GAC9B+J,EAAQ3+C,KAAMogB,GAIhB,OAAOu+B,GAIJqE,EAAgB9O,EAAOl+C,KAAKgV,MAAMi4C,aAItC,SAAShK,EAAUrE,EAAM7gD,GAExB,OAAO6gD,EAAKqE,UAAYrE,EAAKqE,SAAS99C,gBAAkBpH,EAAKoH,cAG9D,IAAI+nD,EAAa,kEAKjB,SAASC,EAAQpG,EAAUqG,EAAW1kD,GACrC,OAAKS,EAAYikD,GACTlP,EAAOa,KAAMgI,GAAU,SAAUnI,EAAM3hD,GAC7C,QAASmwD,EAAU3tD,KAAMm/C,EAAM3hD,EAAG2hD,KAAWl2C,KAK1C0kD,EAAUxuD,SACPs/C,EAAOa,KAAMgI,GAAU,SAAUnI,GACvC,OAASA,IAASwO,IAAgB1kD,KAKV,iBAAd0kD,EACJlP,EAAOa,KAAMgI,GAAU,SAAUnI,GACvC,OAASviD,EAAQoD,KAAM2tD,EAAWxO,IAAU,IAAQl2C,KAK/Cw1C,EAAOj7C,OAAQmqD,EAAWrG,EAAUr+C,GAG5Cw1C,EAAOj7C,OAAS,SAAUjD,EAAMy+C,EAAO/1C,GACtC,IAAIk2C,EAAOH,EAAO,GAMlB,OAJK/1C,IACJ1I,EAAO,QAAUA,EAAO,KAGH,IAAjBy+C,EAAM5/C,QAAkC,IAAlB+/C,EAAKhgD,SACxBs/C,EAAOr7C,KAAKojD,gBAAiBrH,EAAM5+C,GAAS,CAAE4+C,GAAS,GAGxDV,EAAOr7C,KAAKy6B,QAASt9B,EAAMk+C,EAAOa,KAAMN,GAAO,SAAUG,GAC/D,OAAyB,IAAlBA,EAAKhgD,cAIds/C,EAAOh/C,GAAGnC,OAAQ,CACjB8F,KAAM,SAAUs7C,GACf,IAAIlhD,EAAGwuB,EACNqZ,EAAMrnC,KAAKoB,OACXkd,EAAOte,KAER,GAAyB,iBAAb0gD,EACX,OAAO1gD,KAAK+gD,UAAWN,EAAQC,GAAWl7C,QAAQ,WACjD,IAAMhG,EAAI,EAAGA,EAAI6nC,EAAK7nC,IACrB,GAAKihD,EAAOh+B,SAAUnE,EAAM9e,GAAKQ,MAChC,OAAO,MAQX,IAFAguB,EAAMhuB,KAAK+gD,UAAW,IAEhBvhD,EAAI,EAAGA,EAAI6nC,EAAK7nC,IACrBihD,EAAOr7C,KAAMs7C,EAAUpiC,EAAM9e,GAAKwuB,GAGnC,OAAOqZ,EAAM,EAAIoZ,EAAO+I,WAAYx7B,GAAQA,GAE7CxoB,OAAQ,SAAUk7C,GACjB,OAAO1gD,KAAK+gD,UAAW2O,EAAQ1vD,KAAM0gD,GAAY,IAAI,KAEtDz1C,IAAK,SAAUy1C,GACd,OAAO1gD,KAAK+gD,UAAW2O,EAAQ1vD,KAAM0gD,GAAY,IAAI,KAEtDhxC,GAAI,SAAUgxC,GACb,QAASgP,EACR1vD,KAIoB,iBAAb0gD,GAAyB6O,EAAc7pD,KAAMg7C,GACnDD,EAAQC,GACRA,GAAY,IACb,GACCt/C,UASJ,IAAIwuD,EAMHlL,EAAa,uCAENjE,EAAOh/C,GAAG7B,KAAO,SAAU8gD,EAAU7gC,EAAS9gB,GACpD,IAAIwY,EAAO4pC,EAGX,IAAMT,EACL,OAAO1gD,KAQR,GAHAjB,EAAOA,GAAQ6wD,EAGU,iBAAblP,EAAwB,CAanC,KAPCnpC,EALsB,MAAlBmpC,EAAU,IACsB,MAApCA,EAAUA,EAASt/C,OAAS,IAC5Bs/C,EAASt/C,QAAU,EAGX,CAAE,KAAMs/C,EAAU,MAGlBgE,EAAWsB,KAAMtF,MAIVnpC,EAAO,IAAQsI,EA6CxB,OAAMA,GAAWA,EAAQ+gC,QACtB/gC,GAAW9gB,GAAOqG,KAAMs7C,GAK1B1gD,KAAKkkC,YAAarkB,GAAUza,KAAMs7C,GAhDzC,GAAKnpC,EAAO,GAAM,CAYjB,GAXAsI,EAAUA,aAAmB4gC,EAAS5gC,EAAS,GAAMA,EAIrD4gC,EAAOQ,MAAOjhD,KAAMygD,EAAO5xC,UAC1B0I,EAAO,GACPsI,GAAWA,EAAQ1e,SAAW0e,EAAQkmC,eAAiBlmC,EAAUvhB,GACjE,IAIImxD,EAAW/pD,KAAM6R,EAAO,KAASkpC,EAAOn+C,cAAeud,GAC3D,IAAMtI,KAASsI,EAGTnU,EAAY1L,KAAMuX,IACtBvX,KAAMuX,GAASsI,EAAStI,IAIxBvX,KAAK3B,KAAMkZ,EAAOsI,EAAStI,IAK9B,OAAOvX,KAYP,OARAmhD,EAAO7iD,EAASwU,eAAgByE,EAAO,OAKtCvX,KAAM,GAAMmhD,EACZnhD,KAAKoB,OAAS,GAERpB,KAcH,OAAK0gD,EAASv/C,UACpBnB,KAAM,GAAM0gD,EACZ1gD,KAAKoB,OAAS,EACPpB,MAII0L,EAAYg1C,QACD7iD,IAAfkB,EAAK+F,MACX/F,EAAK+F,MAAO47C,GAGZA,EAAUD,GAGLA,EAAOqB,UAAWpB,EAAU1gD,QAIhC8B,UAAY2+C,EAAOh/C,GAGxBmuD,EAAanP,EAAQniD,GAGrB,IAAIuxD,EAAe,iCAGlBC,EAAmB,CAClBtrD,UAAU,EACVe,UAAU,EACVwjC,MAAM,EACNrZ,MAAM,GAoFR,SAASqgC,EAAS9yC,EAAK7Z,GACtB,MAAU6Z,EAAMA,EAAK7Z,KAA4B,IAAjB6Z,EAAI9b,WACpC,OAAO8b,EAnFRwjC,EAAOh/C,GAAGnC,OAAQ,CACjBumC,IAAK,SAAUp+B,GACd,IAAIuoD,EAAUvP,EAAQh5C,EAAQzH,MAC7BwN,EAAIwiD,EAAQ5uD,OAEb,OAAOpB,KAAKwF,QAAQ,WAEnB,IADA,IAAIhG,EAAI,EACAA,EAAIgO,EAAGhO,IACd,GAAKihD,EAAOh+B,SAAUziB,KAAMgwD,EAASxwD,IACpC,OAAO,MAMX8B,QAAS,SAAUuoD,EAAWhqC,GAC7B,IAAI5C,EACHzd,EAAI,EACJgO,EAAIxN,KAAKoB,OACT8pD,EAAU,GACV8E,EAA+B,iBAAdnG,GAA0BpJ,EAAQoJ,GAGpD,IAAM0F,EAAc7pD,KAAMmkD,GACzB,KAAQrqD,EAAIgO,EAAGhO,IACd,IAAMyd,EAAMjd,KAAMR,GAAKyd,GAAOA,IAAQ4C,EAAS5C,EAAMA,EAAIjQ,WAGxD,GAAKiQ,EAAI9b,SAAW,KAAQ6uD,EAC3BA,EAAQzlD,MAAO0S,IAAS,EAGP,IAAjBA,EAAI9b,UACHs/C,EAAOr7C,KAAKojD,gBAAiBvrC,EAAK4sC,IAAgB,CAEnDqB,EAAQ3+C,KAAM0Q,GACd,MAMJ,OAAOjd,KAAK+gD,UAAWmK,EAAQ9pD,OAAS,EAAIq/C,EAAO+I,WAAY0B,GAAYA,IAI5E3gD,MAAO,SAAU42C,GAGhB,OAAMA,EAKe,iBAATA,EACJviD,EAAQoD,KAAMy+C,EAAQU,GAAQnhD,KAAM,IAIrCpB,EAAQoD,KAAMhC,KAGpBmhD,EAAKP,OAASO,EAAM,GAAMA,GAZjBnhD,KAAM,IAAOA,KAAM,GAAIgN,WAAehN,KAAKgG,QAAQ4c,UAAUxhB,QAAU,GAgBlFiP,IAAK,SAAUqwC,EAAU7gC,GACxB,OAAO7f,KAAK+gD,UACXN,EAAO+I,WACN/I,EAAOQ,MAAOjhD,KAAKqU,MAAOosC,EAAQC,EAAU7gC,OAK/Cva,QAAS,SAAUo7C,GAClB,OAAO1gD,KAAKqQ,IAAiB,MAAZqwC,EAChB1gD,KAAKkhD,WAAalhD,KAAKkhD,WAAW17C,OAAQk7C,OAU7CD,EAAOlhD,KAAM,CACZ+E,OAAQ,SAAU68C,GACjB,IAAI78C,EAAS68C,EAAKn0C,WAClB,OAAO1I,GAA8B,KAApBA,EAAOnD,SAAkBmD,EAAS,MAEpDC,QAAS,SAAU48C,GAClB,OAAO/9C,EAAK+9C,EAAM,eAEnBt0C,aAAc,SAAUs0C,EAAM/kC,EAAIizC,GACjC,OAAOjsD,EAAK+9C,EAAM,aAAckO,IAEjCtmB,KAAM,SAAUoY,GACf,OAAO4O,EAAS5O,EAAM,gBAEvBzxB,KAAM,SAAUyxB,GACf,OAAO4O,EAAS5O,EAAM,oBAEvBr0C,QAAS,SAAUq0C,GAClB,OAAO/9C,EAAK+9C,EAAM,gBAEnBv+B,QAAS,SAAUu+B,GAClB,OAAO/9C,EAAK+9C,EAAM,oBAEnB8O,UAAW,SAAU9O,EAAM/kC,EAAIizC,GAC9B,OAAOjsD,EAAK+9C,EAAM,cAAekO,IAElCa,UAAW,SAAU/O,EAAM/kC,EAAIizC,GAC9B,OAAOjsD,EAAK+9C,EAAM,kBAAmBkO,IAEtC1sC,SAAU,SAAUw+B,GACnB,OAAOx+B,GAAYw+B,EAAKn0C,YAAc,IAAKpB,WAAYu1C,IAExD38C,SAAU,SAAU28C,GACnB,OAAOx+B,EAAUw+B,EAAKv1C,aAEvBrG,SAAU,SAAU47C,GACnB,OAA6B,MAAxBA,EAAKgP,iBAKTvQ,EAAUuB,EAAKgP,iBAERhP,EAAKgP,iBAMR3K,EAAUrE,EAAM,cACpBA,EAAOA,EAAKiP,SAAWjP,GAGjBV,EAAOQ,MAAO,GAAIE,EAAKnuC,gBAE7B,SAAU1S,EAAMmB,GAClBg/C,EAAOh/C,GAAInB,GAAS,SAAU+uD,EAAO3O,GACpC,IAAIwK,EAAUzK,EAAOhrC,IAAKzV,KAAMyB,EAAI4tD,GAuBpC,MArB0B,UAArB/uD,EAAKyB,OAAQ,KACjB2+C,EAAW2O,GAGP3O,GAAgC,iBAAbA,IACvBwK,EAAUzK,EAAOj7C,OAAQk7C,EAAUwK,IAG/BlrD,KAAKoB,OAAS,IAGZ0uD,EAAkBxvD,IACvBmgD,EAAO+I,WAAY0B,GAIf2E,EAAanqD,KAAMpF,IACvB4qD,EAAQz+C,WAIHzM,KAAK+gD,UAAWmK,OAGzB,IAAImF,EAAgB,oBAsOpB,SAASC,EAAU7lD,GAClB,OAAOA,EAER,SAAS8lD,EAASrkD,GACjB,MAAMA,EAGP,SAASskD,EAAYh3C,EAAOkZ,EAASwK,EAAQuzB,GAC5C,IAAIruD,EAEJ,IAGMoX,GAAS9N,EAActJ,EAASoX,EAAMyU,SAC1C7rB,EAAOJ,KAAMwX,GAAQjL,KAAMmkB,GAAUrjB,KAAM6tB,GAGhC1jB,GAAS9N,EAActJ,EAASoX,EAAMwtB,MACjD5kC,EAAOJ,KAAMwX,EAAOkZ,EAASwK,GAQ7BxK,EAAQrwB,WAAOxE,EAAW,CAAE2b,GAAQzX,MAAO0uD,IAM3C,MAAQj3C,GAIT0jB,EAAO76B,WAAOxE,EAAW,CAAE2b,KAvO7BinC,EAAOiQ,UAAY,SAAUxxD,GAI5BA,EAA6B,iBAAZA,EAlClB,SAAwBA,GACvB,IAAIyxD,EAAS,GAIb,OAHAlQ,EAAOlhD,KAAML,EAAQqY,MAAO84C,IAAmB,IAAI,SAAUh/B,EAAGu/B,GAC/DD,EAAQC,IAAS,KAEXD,EA8BNE,CAAe3xD,GACfuhD,EAAOnhD,OAAQ,GAAIJ,GAEpB,IACC4xD,EAGAC,EAGAC,EAGAC,EAGAtN,EAAO,GAGP9yB,EAAQ,GAGRqgC,GAAe,EAGfC,EAAO,WAQN,IALAF,EAASA,GAAU/xD,EAAQkyD,KAI3BJ,EAAQF,GAAS,EACTjgC,EAAMzvB,OAAQ8vD,GAAe,EAEpC,IADAH,EAASlgC,EAAMhf,UACLq/C,EAAcvN,EAAKviD,SAGmC,IAA1DuiD,EAAMuN,GAAc7uD,MAAO0uD,EAAQ,GAAKA,EAAQ,KACpD7xD,EAAQmyD,cAGRH,EAAcvN,EAAKviD,OACnB2vD,GAAS,GAMN7xD,EAAQ6xD,SACbA,GAAS,GAGVD,GAAS,EAGJG,IAIHtN,EADIoN,EACG,GAIA,KAMVzyC,EAAO,CAGNjO,IAAK,WA2BJ,OA1BKszC,IAGCoN,IAAWD,IACfI,EAAcvN,EAAKviD,OAAS,EAC5ByvB,EAAMtkB,KAAMwkD,IAGb,SAAW1gD,EAAKzO,GACf6+C,EAAOlhD,KAAMqC,GAAM,SAAUyvB,EAAG3vB,GAC1BgK,EAAYhK,GACVxC,EAAQstB,QAAWlO,EAAKunB,IAAKnkC,IAClCiiD,EAAKp3C,KAAM7K,GAEDA,GAAOA,EAAIN,QAA4B,WAAlBo/C,EAAQ9+C,IAGxC2O,EAAK3O,MATR,CAYKO,WAEA8uD,IAAWD,GACfK,KAGKnxD,MAIR2F,OAAQ,WAYP,OAXA86C,EAAOlhD,KAAM0C,WAAW,SAAUovB,EAAG3vB,GAEpC,IADA,IAAI6I,GACMA,EAAQk2C,EAAO5yC,QAASnM,EAAKiiD,EAAMp5C,KAAa,GACzDo5C,EAAK7nC,OAAQvR,EAAO,GAGfA,GAAS2mD,GACbA,OAIIlxD,MAKR6lC,IAAK,SAAUpkC,GACd,OAAOA,EACNg/C,EAAO5yC,QAASpM,EAAIkiD,IAAU,EAC9BA,EAAKviD,OAAS,GAIhBoF,MAAO,WAIN,OAHKm9C,IACJA,EAAO,IAED3jD,MAMRsxD,QAAS,WAGR,OAFAL,EAASpgC,EAAQ,GACjB8yB,EAAOoN,EAAS,GACT/wD,MAERqE,SAAU,WACT,OAAQs/C,GAMT4N,KAAM,WAKL,OAJAN,EAASpgC,EAAQ,GACXkgC,GAAWD,IAChBnN,EAAOoN,EAAS,IAEV/wD,MAERixD,OAAQ,WACP,QAASA,GAIVO,SAAU,SAAU3xC,EAASje,GAS5B,OARMqvD,IAELrvD,EAAO,CAAEie,GADTje,EAAOA,GAAQ,IACQG,MAAQH,EAAKG,QAAUH,GAC9CivB,EAAMtkB,KAAM3K,GACNkvD,GACLK,KAGKnxD,MAIRmxD,KAAM,WAEL,OADA7yC,EAAKkzC,SAAUxxD,KAAMiC,WACdjC,MAIRgxD,MAAO,WACN,QAASA,IAIZ,OAAO1yC,GA4CRmiC,EAAOnhD,OAAQ,CAEdmyD,SAAU,SAAUthD,GACnB,IAAIuhD,EAAS,CAIX,CAAE,SAAU,WAAYjR,EAAOiQ,UAAW,UACzCjQ,EAAOiQ,UAAW,UAAY,GAC/B,CAAE,UAAW,OAAQjQ,EAAOiQ,UAAW,eACtCjQ,EAAOiQ,UAAW,eAAiB,EAAG,YACvC,CAAE,SAAU,OAAQjQ,EAAOiQ,UAAW,eACrCjQ,EAAOiQ,UAAW,eAAiB,EAAG,aAExChsD,EAAQ,UACRupB,EAAU,CACTvpB,MAAO,WACN,OAAOA,GAERitD,OAAQ,WAEP,OADAC,EAASrjD,KAAMtM,WAAYoN,KAAMpN,WAC1BjC,MAER,MAAS,SAAUyB,GAClB,OAAOwsB,EAAQ+Y,KAAM,KAAMvlC,IAI5BowD,KAAM,WACL,IAAIC,EAAM7vD,UAEV,OAAOw+C,EAAOgR,UAAU,SAAUM,GACjCtR,EAAOlhD,KAAMmyD,GAAQ,SAAUt1C,EAAI41C,GAGlC,IAAIvwD,EAAKiK,EAAYomD,EAAKE,EAAO,MAAWF,EAAKE,EAAO,IAKxDJ,EAAUI,EAAO,KAAO,WACvB,IAAIC,EAAWxwD,GAAMA,EAAGY,MAAOrC,KAAMiC,WAChCgwD,GAAYvmD,EAAYumD,EAAShkC,SACrCgkC,EAAShkC,UACPikC,SAAUH,EAASI,QACnB5jD,KAAMwjD,EAASr/B,SACfrjB,KAAM0iD,EAAS70B,QAEjB60B,EAAUC,EAAO,GAAM,QACtBhyD,KACAyB,EAAK,CAAEwwD,GAAahwD,iBAKxB6vD,EAAM,QACH7jC,WAEL+Y,KAAM,SAAUorB,EAAaC,EAAYC,GACxC,IAAIC,EAAW,EACf,SAAS7/B,EAAS8/B,EAAOZ,EAAU3zB,EAASw0B,GAC3C,OAAO,WACN,IAAIC,EAAO1yD,KACV4B,EAAOK,UACP0wD,EAAa,WACZ,IAAIV,EAAUjrB,EAKd,KAAKwrB,EAAQD,GAAb,CAQA,IAJAN,EAAWh0B,EAAQ57B,MAAOqwD,EAAM9wD,MAIdgwD,EAAS3jC,UAC1B,MAAM,IAAIsF,UAAW,4BAOtByT,EAAOirB,IAKgB,iBAAbA,GACY,mBAAbA,IACRA,EAASjrB,KAGLt7B,EAAYs7B,GAGXyrB,EACJzrB,EAAKhlC,KACJiwD,EACAv/B,EAAS6/B,EAAUX,EAAUtB,EAAUmC,GACvC//B,EAAS6/B,EAAUX,EAAUrB,EAASkC,KAOvCF,IAEAvrB,EAAKhlC,KACJiwD,EACAv/B,EAAS6/B,EAAUX,EAAUtB,EAAUmC,GACvC//B,EAAS6/B,EAAUX,EAAUrB,EAASkC,GACtC//B,EAAS6/B,EAAUX,EAAUtB,EAC5BsB,EAASgB,eASP30B,IAAYqyB,IAChBoC,OAAO70D,EACP+D,EAAO,CAAEqwD,KAKRQ,GAAWb,EAASiB,aAAeH,EAAM9wD,MAK7CsuB,EAAUuiC,EACTE,EACA,WACC,IACCA,IACC,MAAQnrD,GAEJi5C,EAAOgR,SAASqB,eACpBrS,EAAOgR,SAASqB,cAAetrD,EAC9B0oB,EAAQ6iC,YAMLP,EAAQ,GAAKD,IAIZt0B,IAAYsyB,IAChBmC,OAAO70D,EACP+D,EAAO,CAAE4F,IAGVoqD,EAASoB,WAAYN,EAAM9wD,MAS3B4wD,EACJtiC,KAKKuwB,EAAOgR,SAASwB,eACpB/iC,EAAQ6iC,WAAatS,EAAOgR,SAASwB,gBAEtC10D,EAAOqL,WAAYsmB,KAKtB,OAAOuwB,EAAOgR,UAAU,SAAUM,GAGjCL,EAAQ,GAAK,GAAIrhD,IAChBqiB,EACC,EACAq/B,EACArmD,EAAY4mD,GACXA,EACAhC,EACDyB,EAASa,aAKXlB,EAAQ,GAAK,GAAIrhD,IAChBqiB,EACC,EACAq/B,EACArmD,EAAY0mD,GACXA,EACA9B,IAKHoB,EAAQ,GAAK,GAAIrhD,IAChBqiB,EACC,EACAq/B,EACArmD,EAAY2mD,GACXA,EACA9B,OAGAtiC,WAKLA,QAAS,SAAUhtB,GAClB,OAAc,MAAPA,EAAcw/C,EAAOnhD,OAAQ2B,EAAKgtB,GAAYA,IAGvD2jC,EAAW,GAkEZ,OA/DAnR,EAAOlhD,KAAMmyD,GAAQ,SAAUlyD,EAAGwyD,GACjC,IAAIrO,EAAOqO,EAAO,GACjBkB,EAAclB,EAAO,GAKtB/jC,EAAS+jC,EAAO,IAAQrO,EAAKtzC,IAGxB6iD,GACJvP,EAAKtzC,KACJ,WAIC3L,EAAQwuD,IAKTxB,EAAQ,EAAIlyD,GAAK,GAAI8xD,QAIrBI,EAAQ,EAAIlyD,GAAK,GAAI8xD,QAGrBI,EAAQ,GAAK,GAAIH,KAGjBG,EAAQ,GAAK,GAAIH,MAOnB5N,EAAKtzC,IAAK2hD,EAAO,GAAIb,MAKrBS,EAAUI,EAAO,IAAQ,WAExB,OADAJ,EAAUI,EAAO,GAAM,QAAUhyD,OAAS4xD,OAAW/zD,EAAYmC,KAAMiC,WAChEjC,MAMR4xD,EAAUI,EAAO,GAAM,QAAWrO,EAAK6N,YAIxCvjC,EAAQA,QAAS2jC,GAGZzhD,GACJA,EAAKnO,KAAM4vD,EAAUA,GAIfA,GAIRuB,KAAM,SAAUC,GACf,IAGCC,EAAYpxD,UAAUb,OAGtB5B,EAAI6zD,EAGJC,EAAkBzxD,MAAOrC,GACzB+zD,EAAgBxxD,EAAMC,KAAMC,WAG5BuxD,EAAU/S,EAAOgR,WAGjBgC,EAAa,SAAUj0D,GACtB,OAAO,SAAUga,GAChB85C,EAAiB9zD,GAAMQ,KACvBuzD,EAAe/zD,GAAMyC,UAAUb,OAAS,EAAIW,EAAMC,KAAMC,WAAcuX,IAC5D65C,GACTG,EAAQX,YAAaS,EAAiBC,KAM1C,GAAKF,GAAa,IACjB7C,EAAY4C,EAAaI,EAAQjlD,KAAMklD,EAAYj0D,IAAMkzB,QAAS8gC,EAAQt2B,QACxEm2B,GAGuB,YAApBG,EAAQ9uD,SACZgH,EAAY6nD,EAAe/zD,IAAO+zD,EAAe/zD,GAAIwnC,OAErD,OAAOwsB,EAAQxsB,OAKjB,KAAQxnC,KACPgxD,EAAY+C,EAAe/zD,GAAKi0D,EAAYj0D,GAAKg0D,EAAQt2B,QAG1D,OAAOs2B,EAAQvlC,aAOjB,IAAIylC,EAAc,yDAElBjT,EAAOgR,SAASqB,cAAgB,SAAU/vD,EAAOstB,GAI3C9xB,EAAO4gC,SAAW5gC,EAAO4gC,QAAQ3E,MAAQz3B,GAAS2wD,EAAYhuD,KAAM3C,EAAMzC,OAC9E/B,EAAO4gC,QAAQ3E,KAAM,8BAAgCz3B,EAAMswB,QAAStwB,EAAMstB,MAAOA,IAOnFowB,EAAOkT,eAAiB,SAAU5wD,GACjCxE,EAAOqL,YAAY,WAClB,MAAM7G,MAQR,IAAI6wD,EAAYnT,EAAOgR,WAkDvB,SAAS/b,IACRp3C,EAASu1D,oBAAqB,mBAAoBne,GAClDn3C,EAAOs1D,oBAAqB,OAAQne,GACpC+K,EAAO37C,QAnDR27C,EAAOh/C,GAAGqD,MAAQ,SAAUrD,GAY3B,OAVAmyD,EACE5sB,KAAMvlC,GAKNqyD,OAAO,SAAU/wD,GACjB09C,EAAOkT,eAAgB5wD,MAGlB/C,MAGRygD,EAAOnhD,OAAQ,CAGdqiD,SAAS,EAIToS,UAAW,EAGXjvD,MAAO,SAAUkvD,KAGF,IAATA,IAAkBvT,EAAOsT,UAAYtT,EAAOkB,WAKjDlB,EAAOkB,SAAU,GAGH,IAATqS,KAAmBvT,EAAOsT,UAAY,GAK3CH,EAAUf,YAAav0D,EAAU,CAAEmiD,QAIrCA,EAAO37C,MAAMkiC,KAAO4sB,EAAU5sB,KAaD,aAAxB1oC,EAAS21D,YACa,YAAxB31D,EAAS21D,aAA6B31D,EAASygD,gBAAgBmV,SAGjE31D,EAAOqL,WAAY62C,EAAO37C,QAK1BxG,EAAS+gD,iBAAkB,mBAAoB3J,GAG/Cn3C,EAAO8gD,iBAAkB,OAAQ3J,IAQlC,IAAIye,EAAS,SAAUnT,EAAOv/C,EAAIgK,EAAK+N,EAAO46C,EAAWC,EAAUC,GAClE,IAAI90D,EAAI,EACP6nC,EAAM2Z,EAAM5/C,OACZmzD,EAAc,MAAP9oD,EAGR,GAAuB,WAAlB+0C,EAAQ/0C,GAEZ,IAAMjM,KADN40D,GAAY,EACD3oD,EACV0oD,EAAQnT,EAAOv/C,EAAIjC,EAAGiM,EAAKjM,IAAK,EAAM60D,EAAUC,QAI3C,QAAez2D,IAAV2b,IACX46C,GAAY,EAEN1oD,EAAY8N,KACjB86C,GAAM,GAGFC,IAGCD,GACJ7yD,EAAGO,KAAMg/C,EAAOxnC,GAChB/X,EAAK,OAIL8yD,EAAO9yD,EACPA,EAAK,SAAU0/C,EAAMqT,EAAMh7C,GAC1B,OAAO+6C,EAAKvyD,KAAMy+C,EAAQU,GAAQ3nC,MAKhC/X,GACJ,KAAQjC,EAAI6nC,EAAK7nC,IAChBiC,EACCu/C,EAAOxhD,GAAKiM,EAAK6oD,EAChB96C,EACAA,EAAMxX,KAAMg/C,EAAOxhD,GAAKA,EAAGiC,EAAIu/C,EAAOxhD,GAAKiM,KAMhD,OAAK2oD,EACGpT,EAIHuT,EACG9yD,EAAGO,KAAMg/C,GAGV3Z,EAAM5lC,EAAIu/C,EAAO,GAAKv1C,GAAQ4oD,GAKlCI,EAAY,QACfC,EAAa,YAGd,SAASC,EAAYC,EAAMC,GAC1B,OAAOA,EAAOC,cAMf,SAASC,EAAWC,GACnB,OAAOA,EAAOn2D,QAAS41D,EAAW,OAAQ51D,QAAS61D,EAAYC,GAEhE,IAAIM,EAAa,SAAUC,GAQ1B,OAA0B,IAAnBA,EAAM/zD,UAAqC,IAAnB+zD,EAAM/zD,YAAsB+zD,EAAM/zD,UAMlE,SAASg0D,IACRn1D,KAAK0hD,QAAUjB,EAAOiB,QAAUyT,EAAKC,MAGtCD,EAAKC,IAAM,EAEXD,EAAKrzD,UAAY,CAEhB8kD,MAAO,SAAUsO,GAGhB,IAAI17C,EAAQ07C,EAAOl1D,KAAK0hD,SA4BxB,OAzBMloC,IACLA,EAAQ,GAKHy7C,EAAYC,KAIXA,EAAM/zD,SACV+zD,EAAOl1D,KAAK0hD,SAAYloC,EAMxBuT,OAAOyX,eAAgB0wB,EAAOl1D,KAAK0hD,QAAS,CAC3CloC,MAAOA,EACPirB,cAAc,MAMXjrB,GAER6R,IAAK,SAAU6pC,EAAOv1D,EAAM6Z,GAC3B,IAAImsB,EACHihB,EAAQ5mD,KAAK4mD,MAAOsO,GAIrB,GAAqB,iBAATv1D,EACXinD,EAAOmO,EAAWp1D,IAAW6Z,OAM7B,IAAMmsB,KAAQhmC,EACbinD,EAAOmO,EAAWpvB,IAAWhmC,EAAMgmC,GAGrC,OAAOihB,GAERvyC,IAAK,SAAU6gD,EAAOzpD,GACrB,YAAe5N,IAAR4N,EACNzL,KAAK4mD,MAAOsO,GAGZA,EAAOl1D,KAAK0hD,UAAawT,EAAOl1D,KAAK0hD,SAAWqT,EAAWtpD,KAE7D0oD,OAAQ,SAAUe,EAAOzpD,EAAK+N,GAa7B,YAAa3b,IAAR4N,GACCA,GAAsB,iBAARA,QAAgC5N,IAAV2b,EAElCxZ,KAAKqU,IAAK6gD,EAAOzpD,IASzBzL,KAAKqrB,IAAK6pC,EAAOzpD,EAAK+N,QAIL3b,IAAV2b,EAAsBA,EAAQ/N,IAEtC9F,OAAQ,SAAUuvD,EAAOzpD,GACxB,IAAIjM,EACHonD,EAAQsO,EAAOl1D,KAAK0hD,SAErB,QAAe7jD,IAAV+oD,EAAL,CAIA,QAAa/oD,IAAR4N,EAAoB,CAkBxBjM,GAXCiM,EAJI5J,MAAM6L,QAASjC,GAIbA,EAAIgK,IAAKs/C,IAEftpD,EAAMspD,EAAWtpD,MAIJm7C,EACZ,CAAEn7C,GACAA,EAAI8L,MAAO84C,IAAmB,IAG1BjvD,OAER,KAAQ5B,YACAonD,EAAOn7C,EAAKjM,UAKR3B,IAAR4N,GAAqBg1C,EAAOrqC,cAAewwC,MAM1CsO,EAAM/zD,SACV+zD,EAAOl1D,KAAK0hD,cAAY7jD,SAEjBq3D,EAAOl1D,KAAK0hD,YAItB2T,QAAS,SAAUH,GAClB,IAAItO,EAAQsO,EAAOl1D,KAAK0hD,SACxB,YAAiB7jD,IAAV+oD,IAAwBnG,EAAOrqC,cAAewwC,KAGvD,IAAI0O,EAAW,IAAIH,EAEfI,EAAW,IAAIJ,EAcfK,EAAS,gCACZC,GAAa,SA2Bd,SAASC,GAAUvU,EAAM11C,EAAK9L,GAC7B,IAAIW,EAIJ,QAAczC,IAAT8B,GAAwC,IAAlBwhD,EAAKhgD,SAI/B,GAHAb,EAAO,QAAUmL,EAAI5M,QAAS42D,GAAY,OAAQ/tD,cAG7B,iBAFrB/H,EAAOwhD,EAAKh0B,aAAc7sB,IAEM,CAC/B,IACCX,EApCJ,SAAkBA,GACjB,MAAc,SAATA,GAIS,UAATA,IAIS,SAATA,EACG,KAIHA,KAAUA,EAAO,IACbA,EAGJ61D,EAAO9vD,KAAM/F,GACVwP,KAAKc,MAAOtQ,GAGbA,GAcGg2D,CAASh2D,GACf,MAAQ6H,IAGV+tD,EAASlqC,IAAK81B,EAAM11C,EAAK9L,QAEzBA,OAAO9B,EAGT,OAAO8B,EAGR8gD,EAAOnhD,OAAQ,CACd+1D,QAAS,SAAUlU,GAClB,OAAOoU,EAASF,QAASlU,IAAUmU,EAASD,QAASlU,IAGtDxhD,KAAM,SAAUwhD,EAAM7gD,EAAMX,GAC3B,OAAO41D,EAASpB,OAAQhT,EAAM7gD,EAAMX,IAGrCwH,WAAY,SAAUg6C,EAAM7gD,GAC3Bi1D,EAAS5vD,OAAQw7C,EAAM7gD,IAKxBF,MAAO,SAAU+gD,EAAM7gD,EAAMX,GAC5B,OAAO21D,EAASnB,OAAQhT,EAAM7gD,EAAMX,IAGrCi2D,YAAa,SAAUzU,EAAM7gD,GAC5Bg1D,EAAS3vD,OAAQw7C,EAAM7gD,MAIzBmgD,EAAOh/C,GAAGnC,OAAQ,CACjBK,KAAM,SAAU8L,EAAK+N,GACpB,IAAIha,EAAGc,EAAMX,EACZwhD,EAAOnhD,KAAM,GACbinD,EAAQ9F,GAAQA,EAAKrvC,WAGtB,QAAajU,IAAR4N,EAAoB,CACxB,GAAKzL,KAAKoB,SACTzB,EAAO41D,EAASlhD,IAAK8sC,GAEE,IAAlBA,EAAKhgD,WAAmBm0D,EAASjhD,IAAK8sC,EAAM,iBAAmB,CAEnE,IADA3hD,EAAIynD,EAAM7lD,OACF5B,KAIFynD,EAAOznD,IAEsB,KADjCc,EAAO2mD,EAAOznD,GAAIc,MACR1B,QAAS,WAClB0B,EAAOy0D,EAAWz0D,EAAKyB,MAAO,IAC9B2zD,GAAUvU,EAAM7gD,EAAMX,EAAMW,KAI/Bg1D,EAASjqC,IAAK81B,EAAM,gBAAgB,GAItC,OAAOxhD,EAIR,MAAoB,iBAAR8L,EACJzL,KAAKT,MAAM,WACjBg2D,EAASlqC,IAAKrrB,KAAMyL,MAIf0oD,EAAQn0D,MAAM,SAAUwZ,GAC9B,IAAI7Z,EAOJ,GAAKwhD,QAAkBtjD,IAAV2b,EAKZ,YAAc3b,KADd8B,EAAO41D,EAASlhD,IAAK8sC,EAAM11C,UAQb5N,KADd8B,EAAO+1D,GAAUvU,EAAM11C,IALf9L,OAWR,EAIDK,KAAKT,MAAM,WAGVg2D,EAASlqC,IAAKrrB,KAAMyL,EAAK+N,QAExB,KAAMA,EAAOvX,UAAUb,OAAS,EAAG,MAAM,IAG7C+F,WAAY,SAAUsE,GACrB,OAAOzL,KAAKT,MAAM,WACjBg2D,EAAS5vD,OAAQ3F,KAAMyL,SAM1Bg1C,EAAOnhD,OAAQ,CACduxB,MAAO,SAAUswB,EAAMr4C,EAAMnJ,GAC5B,IAAIkxB,EAEJ,GAAKswB,EAYJ,OAXAr4C,GAASA,GAAQ,MAAS,QAC1B+nB,EAAQykC,EAASjhD,IAAK8sC,EAAMr4C,GAGvBnJ,KACEkxB,GAAShvB,MAAM6L,QAAS/N,GAC7BkxB,EAAQykC,EAASnB,OAAQhT,EAAMr4C,EAAM23C,EAAOqB,UAAWniD,IAEvDkxB,EAAMtkB,KAAM5M,IAGPkxB,GAAS,IAIlBglC,QAAS,SAAU1U,EAAMr4C,GACxBA,EAAOA,GAAQ,KAEf,IAAI+nB,EAAQ4vB,EAAO5vB,MAAOswB,EAAMr4C,GAC/BgtD,EAAcjlC,EAAMzvB,OACpBK,EAAKovB,EAAMhf,QACXkkD,EAAQtV,EAAOuV,YAAa7U,EAAMr4C,GAMvB,eAAPrH,IACJA,EAAKovB,EAAMhf,QACXikD,KAGIr0D,IAIU,OAATqH,GACJ+nB,EAAMlgB,QAAS,qBAITolD,EAAMniD,KACbnS,EAAGO,KAAMm/C,GApBF,WACNV,EAAOoV,QAAS1U,EAAMr4C,KAmBFitD,KAGhBD,GAAeC,GACpBA,EAAMvvD,MAAM2qD,QAKd6E,YAAa,SAAU7U,EAAMr4C,GAC5B,IAAI2C,EAAM3C,EAAO,aACjB,OAAOwsD,EAASjhD,IAAK8sC,EAAM11C,IAAS6pD,EAASnB,OAAQhT,EAAM11C,EAAK,CAC/DjF,MAAOi6C,EAAOiQ,UAAW,eAAgBrgD,KAAK,WAC7CilD,EAAS3vD,OAAQw7C,EAAM,CAAEr4C,EAAO,QAAS2C,YAM7Cg1C,EAAOh/C,GAAGnC,OAAQ,CACjBuxB,MAAO,SAAU/nB,EAAMnJ,GACtB,IAAIs2D,EAAS,EAQb,MANqB,iBAATntD,IACXnJ,EAAOmJ,EACPA,EAAO,KACPmtD,KAGIh0D,UAAUb,OAAS60D,EAChBxV,EAAO5vB,MAAO7wB,KAAM,GAAK8I,QAGjBjL,IAAT8B,EACNK,KACAA,KAAKT,MAAM,WACV,IAAIsxB,EAAQ4vB,EAAO5vB,MAAO7wB,KAAM8I,EAAMnJ,GAGtC8gD,EAAOuV,YAAah2D,KAAM8I,GAEZ,OAATA,GAAgC,eAAf+nB,EAAO,IAC5B4vB,EAAOoV,QAAS71D,KAAM8I,OAI1B+sD,QAAS,SAAU/sD,GAClB,OAAO9I,KAAKT,MAAM,WACjBkhD,EAAOoV,QAAS71D,KAAM8I,OAGxBotD,WAAY,SAAUptD,GACrB,OAAO9I,KAAK6wB,MAAO/nB,GAAQ,KAAM,KAKlCmlB,QAAS,SAAUnlB,EAAM7H,GACxB,IAAI9B,EACHm5C,EAAQ,EACR3H,EAAQ8P,EAAOgR,WACfnI,EAAWtpD,KACXR,EAAIQ,KAAKoB,OACTsxB,EAAU,aACC4lB,GACT3H,EAAMkiB,YAAavJ,EAAU,CAAEA,KAUlC,IANqB,iBAATxgD,IACX7H,EAAM6H,EACNA,OAAOjL,GAERiL,EAAOA,GAAQ,KAEPtJ,MACPL,EAAMm2D,EAASjhD,IAAKi1C,EAAU9pD,GAAKsJ,EAAO,gBAC9B3J,EAAIqH,QACf8xC,IACAn5C,EAAIqH,MAAM6J,IAAKqiB,IAIjB,OADAA,IACOie,EAAM1iB,QAAShtB,MAGxB,IAAIk1D,GAAO,sCAA0C/W,OAEjDgX,GAAU,IAAIzrD,OAAQ,iBAAmBwrD,GAAO,cAAe,KAG/DE,GAAY,CAAE,MAAO,QAAS,SAAU,QAExCtX,GAAkBzgD,EAASygD,gBAI1BuX,GAAa,SAAUnV,GACzB,OAAOV,EAAOh+B,SAAU0+B,EAAK4E,cAAe5E,IAE7CoV,GAAW,CAAEA,UAAU,GAOnBxX,GAAgByX,cACpBF,GAAa,SAAUnV,GACtB,OAAOV,EAAOh+B,SAAU0+B,EAAK4E,cAAe5E,IAC3CA,EAAKqV,YAAaD,MAAepV,EAAK4E,gBAG1C,IAAI0Q,GAAqB,SAAUtV,EAAMliD,GAOvC,MAA8B,UAH9BkiD,EAAOliD,GAAMkiD,GAGDluC,MAAMa,SACM,KAAvBqtC,EAAKluC,MAAMa,SAMXwiD,GAAYnV,IAEsB,SAAlCV,EAAOz7C,IAAKm8C,EAAM,YAKrB,SAASuV,GAAWvV,EAAMxb,EAAMgxB,EAAYC,GAC3C,IAAIC,EAAUC,EACbC,EAAgB,GAChBC,EAAeJ,EACd,WACC,OAAOA,EAAM35C,OAEd,WACC,OAAOwjC,EAAOz7C,IAAKm8C,EAAMxb,EAAM,KAEjCsxB,EAAUD,IACVE,EAAOP,GAAcA,EAAY,KAASlW,EAAO0W,UAAWxxB,GAAS,GAAK,MAG1EyxB,EAAgBjW,EAAKhgD,WAClBs/C,EAAO0W,UAAWxxB,IAAmB,OAATuxB,IAAkBD,IAChDb,GAAQpQ,KAAMvF,EAAOz7C,IAAKm8C,EAAMxb,IAElC,GAAKyxB,GAAiBA,EAAe,KAAQF,EAAO,CAYnD,IARAD,GAAoB,EAGpBC,EAAOA,GAAQE,EAAe,GAG9BA,GAAiBH,GAAW,EAEpBF,KAIPtW,EAAOxtC,MAAOkuC,EAAMxb,EAAMyxB,EAAgBF,IACnC,EAAIJ,IAAY,GAAMA,EAAQE,IAAiBC,GAAW,MAAW,IAC3EF,EAAgB,GAEjBK,GAAgCN,EAIjCM,GAAgC,EAChC3W,EAAOxtC,MAAOkuC,EAAMxb,EAAMyxB,EAAgBF,GAG1CP,EAAaA,GAAc,GAgB5B,OAbKA,IACJS,GAAiBA,IAAkBH,GAAW,EAG9CJ,EAAWF,EAAY,GACtBS,GAAkBT,EAAY,GAAM,GAAMA,EAAY,IACrDA,EAAY,GACTC,IACJA,EAAMM,KAAOA,EACbN,EAAMhzC,MAAQwzC,EACdR,EAAMpsD,IAAMqsD,IAGPA,EAIR,IAAIQ,GAAoB,GAExB,SAASC,GAAmBnW,GAC3B,IAAI+L,EACH7O,EAAM8C,EAAK4E,cACXP,EAAWrE,EAAKqE,SAChB1xC,EAAUujD,GAAmB7R,GAE9B,OAAK1xC,IAILo5C,EAAO7O,EAAIkZ,KAAKvwD,YAAaq3C,EAAIx3C,cAAe2+C,IAChD1xC,EAAU2sC,EAAOz7C,IAAKkoD,EAAM,WAE5BA,EAAKlgD,WAAWkyC,YAAagO,GAEZ,SAAZp5C,IACJA,EAAU,SAEXujD,GAAmB7R,GAAa1xC,EAEzBA,GAGR,SAAS0jD,GAAUlO,EAAU9oC,GAO5B,IANA,IAAI1M,EAASqtC,EACZvW,EAAS,GACTrgC,EAAQ,EACRnJ,EAASkoD,EAASloD,OAGXmJ,EAAQnJ,EAAQmJ,KACvB42C,EAAOmI,EAAU/+C,IACN0I,QAIXa,EAAUqtC,EAAKluC,MAAMa,QAChB0M,GAKa,SAAZ1M,IACJ82B,EAAQrgC,GAAU+qD,EAASjhD,IAAK8sC,EAAM,YAAe,KAC/CvW,EAAQrgC,KACb42C,EAAKluC,MAAMa,QAAU,KAGK,KAAvBqtC,EAAKluC,MAAMa,SAAkB2iD,GAAoBtV,KACrDvW,EAAQrgC,GAAU+sD,GAAmBnW,KAGrB,SAAZrtC,IACJ82B,EAAQrgC,GAAU,OAGlB+qD,EAASjqC,IAAK81B,EAAM,UAAWrtC,KAMlC,IAAMvJ,EAAQ,EAAGA,EAAQnJ,EAAQmJ,IACR,MAAnBqgC,EAAQrgC,KACZ++C,EAAU/+C,GAAQ0I,MAAMa,QAAU82B,EAAQrgC,IAI5C,OAAO++C,EAGR7I,EAAOh/C,GAAGnC,OAAQ,CACjBkhB,KAAM,WACL,OAAOg3C,GAAUx3D,MAAM,IAExB8f,KAAM,WACL,OAAO03C,GAAUx3D,OAElBm3C,OAAQ,SAAUzyC,GACjB,MAAsB,kBAAVA,EACJA,EAAQ1E,KAAKwgB,OAASxgB,KAAK8f,OAG5B9f,KAAKT,MAAM,WACZk3D,GAAoBz2D,MACxBygD,EAAQzgD,MAAOwgB,OAEfigC,EAAQzgD,MAAO8f,aAKnB,IAUEqF,GACAi2B,GAXEqc,GAAiB,wBAEjBC,GAAW,iCAEXC,GAAc,qCAMhBxyC,GADc7mB,EAASs5D,yBACR5wD,YAAa1I,EAASuI,cAAe,SACpDu0C,GAAQ98C,EAASuI,cAAe,UAM3BC,aAAc,OAAQ,SAC5Bs0C,GAAMt0C,aAAc,UAAW,WAC/Bs0C,GAAMt0C,aAAc,OAAQ,KAE5Bqe,GAAIne,YAAao0C,IAIjB6E,EAAQ4X,WAAa1yC,GAAIpS,WAAW,GAAOA,WAAW,GAAOhG,UAAUiQ,QAIvEmI,GAAI7R,UAAY,yBAChB2sC,EAAQ6X,iBAAmB3yC,GAAIpS,WAAW,GAAOhG,UAAUsvC,aAK3Dl3B,GAAI7R,UAAY,oBAChB2sC,EAAQ8X,SAAW5yC,GAAIpY,UAKxB,IAAIirD,GAAU,CAKbC,MAAO,CAAE,EAAG,UAAW,YACvB5tD,IAAK,CAAE,EAAG,oBAAqB,uBAC/B6tD,GAAI,CAAE,EAAG,iBAAkB,oBAC3BC,GAAI,CAAE,EAAG,qBAAsB,yBAE/BC,SAAU,CAAE,EAAG,GAAI,KAYpB,SAASC,GAAQx4C,EAAS0oC,GAIzB,IAAIv6B,EAYJ,OATCA,OAD4C,IAAjCnO,EAAQomC,qBACbpmC,EAAQomC,qBAAsBsC,GAAO,UAEI,IAA7B1oC,EAAQqJ,iBACpBrJ,EAAQqJ,iBAAkBq/B,GAAO,KAGjC,QAGM1qD,IAAR0qD,GAAqBA,GAAO/C,EAAU3lC,EAAS0oC,GAC5C9H,EAAOQ,MAAO,CAAEphC,GAAWmO,GAG5BA,EAKR,SAASsqC,GAAetX,EAAOuX,GAI9B,IAHA,IAAI/4D,EAAI,EACPgO,EAAIwzC,EAAM5/C,OAEH5B,EAAIgO,EAAGhO,IACd81D,EAASjqC,IACR21B,EAAOxhD,GACP,cACC+4D,GAAejD,EAASjhD,IAAKkkD,EAAa/4D,GAAK,eA1CnDw4D,GAAQQ,MAAQR,GAAQS,MAAQT,GAAQU,SAAWV,GAAQW,QAAUX,GAAQC,MAC7ED,GAAQY,GAAKZ,GAAQG,GAGflY,EAAQ8X,SACbC,GAAQa,SAAWb,GAAQD,OAAS,CAAE,EAAG,+BAAgC,cA2C1E,IAAIzT,GAAQ,YAEZ,SAASwU,GAAe9X,EAAOnhC,EAASk5C,EAASpxD,EAAWqxD,GAO3D,IANA,IAAI7X,EAAMhiD,EAAKopD,EAAK0Q,EAAMC,EAAUrvD,EACnCsvD,EAAWt5C,EAAQ+3C,yBACnBzpD,EAAQ,GACR3O,EAAI,EACJgO,EAAIwzC,EAAM5/C,OAEH5B,EAAIgO,EAAGhO,IAGd,IAFA2hD,EAAOH,EAAOxhD,KAEQ,IAAT2hD,EAGZ,GAAwB,WAAnBX,EAAQW,GAIZV,EAAOQ,MAAO9yC,EAAOgzC,EAAKhgD,SAAW,CAAEggD,GAASA,QAG1C,GAAMmD,GAAM5+C,KAAMy7C,GAIlB,CAUN,IATAhiD,EAAMA,GAAOg6D,EAASnyD,YAAa6Y,EAAQhZ,cAAe,QAG1D0hD,GAAQmP,GAAS1R,KAAM7E,IAAU,CAAE,GAAI,KAAQ,GAAIz5C,cACnDuxD,EAAOjB,GAASzP,IAASyP,GAAQI,SACjCj5D,EAAImU,UAAY2lD,EAAM,GAAMxY,EAAO2Y,cAAejY,GAAS8X,EAAM,GAGjEpvD,EAAIovD,EAAM,GACFpvD,KACP1K,EAAMA,EAAI4N,UAKX0zC,EAAOQ,MAAO9yC,EAAOhP,EAAI6T,aAGzB7T,EAAMg6D,EAASvtD,YAGXg+C,YAAc,QAzBlBz7C,EAAM5B,KAAMsT,EAAQxM,eAAgB8tC,IAkCvC,IAHAgY,EAASvP,YAAc,GAEvBpqD,EAAI,EACM2hD,EAAOhzC,EAAO3O,MAGvB,GAAKmI,GAAa84C,EAAO5yC,QAASszC,EAAMx5C,IAAe,EACjDqxD,GACJA,EAAQzsD,KAAM40C,QAgBhB,GAXA+X,EAAW5C,GAAYnV,GAGvBhiD,EAAMk5D,GAAQc,EAASnyD,YAAam6C,GAAQ,UAGvC+X,GACJZ,GAAen5D,GAIX45D,EAEJ,IADAlvD,EAAI,EACMs3C,EAAOhiD,EAAK0K,MAChB8tD,GAAYjyD,KAAMy7C,EAAKr4C,MAAQ,KACnCiwD,EAAQxsD,KAAM40C,GAMlB,OAAOgY,EAIR,IAAIE,GAAiB,sBAErB,SAASC,KACR,OAAO,EAGR,SAASC,KACR,OAAO,EASR,SAASC,GAAYrY,EAAMr4C,GAC1B,OAASq4C,IAMV,WACC,IACC,OAAO7iD,EAAS+J,cACf,MAAQ64B,KATQu4B,KAAqC,UAAT3wD,GAY/C,SAASvB,GAAI45C,EAAMt1B,EAAO60B,EAAU/gD,EAAM8B,EAAI4Y,GAC7C,IAAIq/C,EAAQ5wD,EAGZ,GAAsB,iBAAV+iB,EAAqB,CAShC,IAAM/iB,IANmB,iBAAb43C,IAGX/gD,EAAOA,GAAQ+gD,EACfA,OAAW7iD,GAEEguB,EACbtkB,GAAI45C,EAAMr4C,EAAM43C,EAAU/gD,EAAMksB,EAAO/iB,GAAQuR,GAEhD,OAAO8mC,EAsBR,GAnBa,MAARxhD,GAAsB,MAAN8B,GAGpBA,EAAKi/C,EACL/gD,EAAO+gD,OAAW7iD,GACD,MAAN4D,IACc,iBAAbi/C,GAGXj/C,EAAK9B,EACLA,OAAO9B,IAIP4D,EAAK9B,EACLA,EAAO+gD,EACPA,OAAW7iD,KAGD,IAAP4D,EACJA,EAAK83D,QACC,IAAM93D,EACZ,OAAO0/C,EAeR,OAZa,IAAR9mC,IACJq/C,EAASj4D,GACTA,EAAK,SAAU0iB,GAId,OADAs8B,IAAS3gD,IAAKqkB,GACPu1C,EAAOr3D,MAAOrC,KAAMiC,aAIzBkgD,KAAOuX,EAAOvX,OAAUuX,EAAOvX,KAAO1B,EAAO0B,SAE1ChB,EAAK5hD,MAAM,WACjBkhD,EAAOt8B,MAAM9T,IAAKrQ,KAAM6rB,EAAOpqB,EAAI9B,EAAM+gD,MA+a3C,SAASiZ,GAAgB16D,EAAI6J,EAAM0wD,GAG5BA,GAQNlE,EAASjqC,IAAKpsB,EAAI6J,GAAM,GACxB23C,EAAOt8B,MAAM9T,IAAKpR,EAAI6J,EAAM,CAC3B++C,WAAW,EACX5pB,QAAS,SAAU9Z,GAClB,IAAIy1C,EAAU13D,EACb23D,EAAQvE,EAASjhD,IAAKrU,KAAM8I,GAE7B,GAAyB,EAAlBqb,EAAM21C,WAAmB95D,KAAM8I,IAKrC,GAAM+wD,EAAMz4D,QAuCEq/C,EAAOt8B,MAAMsuC,QAAS3pD,IAAU,IAAKixD,cAClD51C,EAAM61C,uBArBN,GAdAH,EAAQ93D,EAAMC,KAAMC,WACpBqzD,EAASjqC,IAAKrrB,KAAM8I,EAAM+wD,GAK1BD,EAAWJ,EAAYx5D,KAAM8I,GAC7B9I,KAAM8I,KAED+wD,KADL33D,EAASozD,EAASjhD,IAAKrU,KAAM8I,KACJ8wD,EACxBtE,EAASjqC,IAAKrrB,KAAM8I,GAAM,GAE1B5G,EAAS,GAEL23D,IAAU33D,EAWd,OARAiiB,EAAM9K,2BACN8K,EAAMlc,iBAOC/F,GAAUA,EAAOsX,WAefqgD,EAAMz4D,SAGjBk0D,EAASjqC,IAAKrrB,KAAM8I,EAAM,CACzB0Q,MAAOinC,EAAOt8B,MAAMjf,QAInBu7C,EAAOnhD,OAAQu6D,EAAO,GAAKpZ,EAAO5zB,MAAM/qB,WACxC+3D,EAAM93D,MAAO,GACb/B,QAKFmkB,EAAM9K,qCA/E0Bxb,IAA7By3D,EAASjhD,IAAKpV,EAAI6J,IACtB23C,EAAOt8B,MAAM9T,IAAKpR,EAAI6J,EAAMwwD,IA5a/B7Y,EAAOt8B,MAAQ,CAEdqX,OAAQ,GAERnrB,IAAK,SAAU8wC,EAAMt1B,EAAOoS,EAASt+B,EAAM+gD,GAE1C,IAAIuZ,EAAaC,EAAa/6D,EAC7B4rB,EAAQrc,EAAGyrD,EACX1H,EAAS2H,EAAUtxD,EAAMuxD,EAAYC,EACrCC,EAAWjF,EAASjhD,IAAK8sC,GAG1B,GAAM8T,EAAY9T,GAuClB,IAlCKljB,EAAQA,UAEZA,GADAg8B,EAAch8B,GACQA,QACtByiB,EAAWuZ,EAAYvZ,UAKnBA,GACJD,EAAOr7C,KAAKojD,gBAAiBzJ,GAAiB2B,GAIzCziB,EAAQkkB,OACblkB,EAAQkkB,KAAO1B,EAAO0B,SAIfp3B,EAASwvC,EAASxvC,UACzBA,EAASwvC,EAASxvC,OAASgC,OAAO/tB,OAAQ,QAEnCk7D,EAAcK,EAASjhB,UAC9B4gB,EAAcK,EAASjhB,OAAS,SAAU9xC,GAIzC,YAAyB,IAAXi5C,GAA0BA,EAAOt8B,MAAMq2C,YAAchzD,EAAEsB,KACpE23C,EAAOt8B,MAAMs2C,SAASp4D,MAAO8+C,EAAMl/C,gBAAcpE,IAMpD6Q,GADAmd,GAAUA,GAAS,IAAKtU,MAAO84C,IAAmB,CAAE,KAC1CjvD,OACFsN,KAEP5F,EAAOwxD,GADPn7D,EAAMk6D,GAAerT,KAAMn6B,EAAOnd,KAAS,IACpB,GACvB2rD,GAAel7D,EAAK,IAAO,IAAK6/B,MAAO,KAAMhpB,OAGvClN,IAKN2pD,EAAUhS,EAAOt8B,MAAMsuC,QAAS3pD,IAAU,GAG1CA,GAAS43C,EAAW+R,EAAQsH,aAAetH,EAAQiI,WAAc5xD,EAGjE2pD,EAAUhS,EAAOt8B,MAAMsuC,QAAS3pD,IAAU,GAG1CqxD,EAAY1Z,EAAOnhD,OAAQ,CAC1BwJ,KAAMA,EACNwxD,SAAUA,EACV36D,KAAMA,EACNs+B,QAASA,EACTkkB,KAAMlkB,EAAQkkB,KACdzB,SAAUA,EACV8O,aAAc9O,GAAYD,EAAOl+C,KAAKgV,MAAMi4C,aAAa9pD,KAAMg7C,GAC/DmH,UAAWwS,EAAW3tD,KAAM,MAC1ButD,IAGKG,EAAWrvC,EAAQjiB,OAC1BsxD,EAAWrvC,EAAQjiB,GAAS,IACnB6xD,cAAgB,EAGnBlI,EAAQmI,QACiD,IAA9DnI,EAAQmI,MAAM54D,KAAMm/C,EAAMxhD,EAAM06D,EAAYH,IAEvC/Y,EAAK9B,kBACT8B,EAAK9B,iBAAkBv2C,EAAMoxD,IAK3BzH,EAAQpiD,MACZoiD,EAAQpiD,IAAIrO,KAAMm/C,EAAMgZ,GAElBA,EAAUl8B,QAAQkkB,OACvBgY,EAAUl8B,QAAQkkB,KAAOlkB,EAAQkkB,OAK9BzB,EACJ0Z,EAASt+C,OAAQs+C,EAASO,gBAAiB,EAAGR,GAE9CC,EAAS7tD,KAAM4tD,GAIhB1Z,EAAOt8B,MAAMqX,OAAQ1yB,IAAS,IAMhCnD,OAAQ,SAAUw7C,EAAMt1B,EAAOoS,EAASyiB,EAAUma,GAEjD,IAAIhxD,EAAGixD,EAAW37D,EACjB4rB,EAAQrc,EAAGyrD,EACX1H,EAAS2H,EAAUtxD,EAAMuxD,EAAYC,EACrCC,EAAWjF,EAASD,QAASlU,IAAUmU,EAASjhD,IAAK8sC,GAEtD,GAAMoZ,IAAexvC,EAASwvC,EAASxvC,QAAvC,CAOA,IADArc,GADAmd,GAAUA,GAAS,IAAKtU,MAAO84C,IAAmB,CAAE,KAC1CjvD,OACFsN,KAMP,GAJA5F,EAAOwxD,GADPn7D,EAAMk6D,GAAerT,KAAMn6B,EAAOnd,KAAS,IACpB,GACvB2rD,GAAel7D,EAAK,IAAO,IAAK6/B,MAAO,KAAMhpB,OAGvClN,EAAN,CAeA,IARA2pD,EAAUhS,EAAOt8B,MAAMsuC,QAAS3pD,IAAU,GAE1CsxD,EAAWrvC,EADXjiB,GAAS43C,EAAW+R,EAAQsH,aAAetH,EAAQiI,WAAc5xD,IACpC,GAC7B3J,EAAMA,EAAK,IACV,IAAIwL,OAAQ,UAAY0vD,EAAW3tD,KAAM,iBAAoB,WAG9DouD,EAAYjxD,EAAIuwD,EAASh5D,OACjByI,KACPswD,EAAYC,EAAUvwD,IAEfgxD,GAAeP,IAAaH,EAAUG,UACzCr8B,GAAWA,EAAQkkB,OAASgY,EAAUhY,MACtChjD,IAAOA,EAAIuG,KAAMy0D,EAAUtS,YAC3BnH,GAAYA,IAAayZ,EAAUzZ,WACxB,OAAbA,IAAqByZ,EAAUzZ,YAChC0Z,EAASt+C,OAAQjS,EAAG,GAEfswD,EAAUzZ,UACd0Z,EAASO,gBAELlI,EAAQ9sD,QACZ8sD,EAAQ9sD,OAAO3D,KAAMm/C,EAAMgZ,IAOzBW,IAAcV,EAASh5D,SACrBqxD,EAAQhsD,WACkD,IAA/DgsD,EAAQhsD,SAASzE,KAAMm/C,EAAMkZ,EAAYE,EAASjhB,SAElDmH,EAAOsa,YAAa5Z,EAAMr4C,EAAMyxD,EAASjhB,eAGnCvuB,EAAQjiB,SA1Cf,IAAMA,KAAQiiB,EACb01B,EAAOt8B,MAAMxe,OAAQw7C,EAAMr4C,EAAO+iB,EAAOnd,GAAKuvB,EAASyiB,GAAU,GA8C/DD,EAAOrqC,cAAe2U,IAC1BuqC,EAAS3vD,OAAQw7C,EAAM,mBAIzBsZ,SAAU,SAAUO,GAEnB,IAAIx7D,EAAGqK,EAAGmkB,EAAKk9B,EAASiP,EAAWc,EAClCr5D,EAAO,IAAIC,MAAOI,UAAUb,QAG5B+iB,EAAQs8B,EAAOt8B,MAAM+2C,IAAKF,GAE1BZ,GACC9E,EAASjhD,IAAKrU,KAAM,WAAc+sB,OAAO/tB,OAAQ,OAC/CmlB,EAAMrb,OAAU,GACnB2pD,EAAUhS,EAAOt8B,MAAMsuC,QAAStuC,EAAMrb,OAAU,GAKjD,IAFAlH,EAAM,GAAMuiB,EAEN3kB,EAAI,EAAGA,EAAIyC,UAAUb,OAAQ5B,IAClCoC,EAAMpC,GAAMyC,UAAWzC,GAMxB,GAHA2kB,EAAMg3C,eAAiBn7D,MAGlByyD,EAAQ2I,cAA2D,IAA5C3I,EAAQ2I,YAAYp5D,KAAMhC,KAAMmkB,GAA5D,CASA,IAJA82C,EAAexa,EAAOt8B,MAAMi2C,SAASp4D,KAAMhC,KAAMmkB,EAAOi2C,GAGxD56D,EAAI,GACM0rD,EAAU+P,EAAcz7D,QAAY2kB,EAAMk3C,wBAInD,IAHAl3C,EAAM/b,cAAgB8iD,EAAQ/J,KAE9Bt3C,EAAI,GACMswD,EAAYjP,EAAQkP,SAAUvwD,QACtCsa,EAAMm3C,iCAIDn3C,EAAMo3C,aAAsC,IAAxBpB,EAAUtS,YACnC1jC,EAAMo3C,WAAW71D,KAAMy0D,EAAUtS,aAEjC1jC,EAAMg2C,UAAYA,EAClBh2C,EAAMxkB,KAAOw6D,EAAUx6D,UAKV9B,KAHbmwB,IAAUyyB,EAAOt8B,MAAMsuC,QAAS0H,EAAUG,WAAc,IAAKhhB,QAC5D6gB,EAAUl8B,SAAU57B,MAAO6oD,EAAQ/J,KAAMv/C,MAGT,KAAzBuiB,EAAMjiB,OAAS8rB,KACrB7J,EAAMlc,iBACNkc,EAAM61C,oBAYX,OAJKvH,EAAQ+I,cACZ/I,EAAQ+I,aAAax5D,KAAMhC,KAAMmkB,GAG3BA,EAAMjiB,SAGdk4D,SAAU,SAAUj2C,EAAOi2C,GAC1B,IAAI56D,EAAG26D,EAAWtyD,EAAK4zD,EAAiBC,EACvCT,EAAe,GACfN,EAAgBP,EAASO,cACzB19C,EAAMkH,EAAM1c,OAGb,GAAKkzD,GAIJ19C,EAAI9b,YAOc,UAAfgjB,EAAMrb,MAAoBqb,EAAMw3C,QAAU,GAE7C,KAAQ1+C,IAAQjd,KAAMid,EAAMA,EAAIjQ,YAAchN,KAI7C,GAAsB,IAAjBid,EAAI9b,WAAoC,UAAfgjB,EAAMrb,OAAqC,IAAjBmU,EAAI5Y,UAAsB,CAGjF,IAFAo3D,EAAkB,GAClBC,EAAmB,GACbl8D,EAAI,EAAGA,EAAIm7D,EAAen7D,SAME3B,IAA5B69D,EAFL7zD,GAHAsyD,EAAYC,EAAU56D,IAGNkhD,SAAW,OAG1Bgb,EAAkB7zD,GAAQsyD,EAAU3K,aACnC/O,EAAQ54C,EAAK7H,MAAOuK,MAAO0S,IAAS,EACpCwjC,EAAOr7C,KAAMyC,EAAK7H,KAAM,KAAM,CAAEid,IAAQ7b,QAErCs6D,EAAkB7zD,IACtB4zD,EAAgBlvD,KAAM4tD,GAGnBsB,EAAgBr6D,QACpB65D,EAAa1uD,KAAM,CAAE40C,KAAMlkC,EAAKm9C,SAAUqB,IAY9C,OALAx+C,EAAMjd,KACD26D,EAAgBP,EAASh5D,QAC7B65D,EAAa1uD,KAAM,CAAE40C,KAAMlkC,EAAKm9C,SAAUA,EAASr4D,MAAO44D,KAGpDM,GAGRW,QAAS,SAAUt7D,EAAMu7D,GACxB9uC,OAAOyX,eAAgBic,EAAO5zB,MAAM/qB,UAAWxB,EAAM,CACpDqkC,YAAY,EACZF,cAAc,EAEdpwB,IAAK3I,EAAYmwD,GAChB,WACC,GAAK77D,KAAK+f,cACT,OAAO87C,EAAM77D,KAAK+f,gBAGpB,WACC,GAAK/f,KAAK+f,cACT,OAAO/f,KAAK+f,cAAezf,IAI9B+qB,IAAK,SAAU7R,GACduT,OAAOyX,eAAgBxkC,KAAMM,EAAM,CAClCqkC,YAAY,EACZF,cAAc,EACdC,UAAU,EACVlrB,MAAOA,QAMX0hD,IAAK,SAAUn7C,GACd,OAAOA,EAAe0gC,EAAOiB,SAC5B3hC,EACA,IAAI0gC,EAAO5zB,MAAO9M,IAGpB0yC,QAAS,CACRqJ,KAAM,CAGLC,UAAU,GAEXl5C,MAAO,CAGN+3C,MAAO,SAAUj7D,GAIhB,IAAIV,EAAKe,MAAQL,EAWjB,OARK83D,GAAe/xD,KAAMzG,EAAG6J,OAC5B7J,EAAG4jB,OAAS2iC,EAAUvmD,EAAI,UAG1B06D,GAAgB16D,EAAI,QAASq6D,KAIvB,GAERp0D,QAAS,SAAUvF,GAIlB,IAAIV,EAAKe,MAAQL,EAUjB,OAPK83D,GAAe/xD,KAAMzG,EAAG6J,OAC5B7J,EAAG4jB,OAAS2iC,EAAUvmD,EAAI,UAE1B06D,GAAgB16D,EAAI,UAId,GAKRm5D,SAAU,SAAUj0C,GACnB,IAAI1c,EAAS0c,EAAM1c,OACnB,OAAOgwD,GAAe/xD,KAAM+B,EAAOqB,OAClCrB,EAAOob,OAAS2iC,EAAU/9C,EAAQ,UAClC6tD,EAASjhD,IAAK5M,EAAQ,UACtB+9C,EAAU/9C,EAAQ,OAIrBu0D,aAAc,CACbR,aAAc,SAAUr3C,QAIDtmB,IAAjBsmB,EAAMjiB,QAAwBiiB,EAAMpE,gBACxCoE,EAAMpE,cAAcuhB,YAAcnd,EAAMjiB,YAoG7Cu+C,EAAOsa,YAAc,SAAU5Z,EAAMr4C,EAAMwwC,GAGrC6H,EAAK0S,qBACT1S,EAAK0S,oBAAqB/qD,EAAMwwC,IAIlCmH,EAAO5zB,MAAQ,SAAUzuB,EAAK01C,GAG7B,KAAQ9zC,gBAAgBygD,EAAO5zB,OAC9B,OAAO,IAAI4zB,EAAO5zB,MAAOzuB,EAAK01C,GAI1B11C,GAAOA,EAAI0K,MACf9I,KAAK+f,cAAgB3hB,EACrB4B,KAAK8I,KAAO1K,EAAI0K,KAIhB9I,KAAKi8D,mBAAqB79D,EAAI89D,uBACHr+D,IAAzBO,EAAI89D,mBAGgB,IAApB99D,EAAIkjC,YACLg4B,GACAC,GAKDv5D,KAAKyH,OAAWrJ,EAAIqJ,QAAkC,IAAxBrJ,EAAIqJ,OAAOtG,SACxC/C,EAAIqJ,OAAOuF,WACX5O,EAAIqJ,OAELzH,KAAKoI,cAAgBhK,EAAIgK,cACzBpI,KAAK0iB,cAAgBtkB,EAAIskB,eAIzB1iB,KAAK8I,KAAO1K,EAIR01C,GACJ2M,EAAOnhD,OAAQU,KAAM8zC,GAItB9zC,KAAKm8D,UAAY/9D,GAAOA,EAAI+9D,WAAaj0D,KAAKk0D,MAG9Cp8D,KAAMygD,EAAOiB,UAAY,GAK1BjB,EAAO5zB,MAAM/qB,UAAY,CACxBoiC,YAAauc,EAAO5zB,MACpBovC,mBAAoB1C,GACpB8B,qBAAsB9B,GACtB+B,8BAA+B/B,GAC/B8C,aAAa,EAEbp0D,eAAgB,WACf,IAAIT,EAAIxH,KAAK+f,cAEb/f,KAAKi8D,mBAAqB3C,GAErB9xD,IAAMxH,KAAKq8D,aACf70D,EAAES,kBAGJ+xD,gBAAiB,WAChB,IAAIxyD,EAAIxH,KAAK+f,cAEb/f,KAAKq7D,qBAAuB/B,GAEvB9xD,IAAMxH,KAAKq8D,aACf70D,EAAEwyD,mBAGJ3gD,yBAA0B,WACzB,IAAI7R,EAAIxH,KAAK+f,cAEb/f,KAAKs7D,8BAAgChC,GAEhC9xD,IAAMxH,KAAKq8D,aACf70D,EAAE6R,2BAGHrZ,KAAKg6D,oBAKPvZ,EAAOlhD,KAAM,CACZoJ,QAAQ,EACR2zD,SAAS,EACT1gC,YAAY,EACZ5b,gBAAgB,EAChBtX,SAAS,EACTizB,QAAQ,EACR4gC,YAAY,EACZ3zD,SAAS,EACT+W,OAAO,EACPC,OAAO,EACPnX,UAAU,EACV+zD,MAAM,EACN,MAAQ,EACR/uC,MAAM,EACNgvC,UAAU,EACVhxD,KAAK,EACLixD,SAAS,EACTf,QAAQ,EACRgB,SAAS,EACT18C,SAAS,EACTC,SAAS,EACT08C,SAAS,EACTC,SAAS,EACTC,WAAW,EACXC,aAAa,EACbC,SAAS,EACTC,SAAS,EACTC,eAAe,EACfC,WAAW,EACXC,SAAS,EACT50D,OAAO,GACLi4C,EAAOt8B,MAAMy3C,SAEhBnb,EAAOlhD,KAAM,CAAE+I,MAAO,UAAWmR,KAAM,aAAc,SAAU3Q,EAAMixD,GACpEtZ,EAAOt8B,MAAMsuC,QAAS3pD,GAAS,CAG9B8xD,MAAO,WAQN,OAHAjB,GAAgB35D,KAAM8I,EAAM0wD,KAGrB,GAERt0D,QAAS,WAMR,OAHAy0D,GAAgB35D,KAAM8I,IAGf,GAKRsvD,SAAU,SAAUj0C,GACnB,OAAOmxC,EAASjhD,IAAK8P,EAAM1c,OAAQqB,IAGpCixD,aAAcA,MAYhBtZ,EAAOlhD,KAAM,CACZ2L,WAAY,YACZF,WAAY,WACZqyD,aAAc,cACdC,aAAc,eACZ,SAAUC,EAAMrC,GAClBza,EAAOt8B,MAAMsuC,QAAS8K,GAAS,CAC9BxD,aAAcmB,EACdR,SAAUQ,EAEV5hB,OAAQ,SAAUn1B,GACjB,IAAI6J,EACHvmB,EAASzH,KACTw9D,EAAUr5C,EAAMzB,cAChBy3C,EAAYh2C,EAAMg2C,UASnB,OALMqD,IAAaA,IAAY/1D,GAAWg5C,EAAOh+B,SAAUhb,EAAQ+1D,MAClEr5C,EAAMrb,KAAOqxD,EAAUG,SACvBtsC,EAAMmsC,EAAUl8B,QAAQ57B,MAAOrC,KAAMiC,WACrCkiB,EAAMrb,KAAOoyD,GAEPltC,OAKVyyB,EAAOh/C,GAAGnC,OAAQ,CAEjBiI,GAAI,SAAUskB,EAAO60B,EAAU/gD,EAAM8B,GACpC,OAAO8F,GAAIvH,KAAM6rB,EAAO60B,EAAU/gD,EAAM8B,IAEzC4Y,IAAK,SAAUwR,EAAO60B,EAAU/gD,EAAM8B,GACrC,OAAO8F,GAAIvH,KAAM6rB,EAAO60B,EAAU/gD,EAAM8B,EAAI,IAE7C3B,IAAK,SAAU+rB,EAAO60B,EAAUj/C,GAC/B,IAAI04D,EAAWrxD,EACf,GAAK+iB,GAASA,EAAM5jB,gBAAkB4jB,EAAMsuC,UAW3C,OARAA,EAAYtuC,EAAMsuC,UAClB1Z,EAAQ50B,EAAMsvC,gBAAiBr7D,IAC9Bq6D,EAAUtS,UACTsS,EAAUG,SAAW,IAAMH,EAAUtS,UACrCsS,EAAUG,SACXH,EAAUzZ,SACVyZ,EAAUl8B,SAEJj+B,KAER,GAAsB,iBAAV6rB,EAAqB,CAGhC,IAAM/iB,KAAQ+iB,EACb7rB,KAAKF,IAAKgJ,EAAM43C,EAAU70B,EAAO/iB,IAElC,OAAO9I,KAWR,OATkB,IAAb0gD,GAA0C,mBAAbA,IAGjCj/C,EAAKi/C,EACLA,OAAW7iD,IAEA,IAAP4D,IACJA,EAAK83D,IAECv5D,KAAKT,MAAM,WACjBkhD,EAAOt8B,MAAMxe,OAAQ3F,KAAM6rB,EAAOpqB,EAAIi/C,SAMzC,IAKC+c,GAAe,wBAGfC,GAAW,oCAEXC,GAAe,6BAGhB,SAASC,GAAoBzc,EAAMiP,GAClC,OAAK5K,EAAUrE,EAAM,UACpBqE,EAA+B,KAArB4K,EAAQjvD,SAAkBivD,EAAUA,EAAQxkD,WAAY,OAE3D60C,EAAQU,GAAO38C,SAAU,SAAW,IAGrC28C,EAIR,SAAS0c,GAAe1c,GAEvB,OADAA,EAAKr4C,MAAyC,OAAhCq4C,EAAKh0B,aAAc,SAAsB,IAAMg0B,EAAKr4C,KAC3Dq4C,EAER,SAAS2c,GAAe3c,GAOvB,MAN2C,WAApCA,EAAKr4C,MAAQ,IAAK/G,MAAO,EAAG,GAClCo/C,EAAKr4C,KAAOq4C,EAAKr4C,KAAK/G,MAAO,GAE7Bo/C,EAAKwF,gBAAiB,QAGhBxF,EAGR,SAAS4c,GAAgB3/D,EAAK4/D,GAC7B,IAAIx+D,EAAGgO,EAAG1E,EAAgBm1D,EAAUC,EAAUnzC,EAE9C,GAAuB,IAAlBizC,EAAK78D,SAAV,CAKA,GAAKm0D,EAASD,QAASj3D,KAEtB2sB,EADWuqC,EAASjhD,IAAKjW,GACP2sB,QAKjB,IAAMjiB,KAFNwsD,EAAS3vD,OAAQq4D,EAAM,iBAETjzC,EACb,IAAMvrB,EAAI,EAAGgO,EAAIud,EAAQjiB,GAAO1H,OAAQ5B,EAAIgO,EAAGhO,IAC9CihD,EAAOt8B,MAAM9T,IAAK2tD,EAAMl1D,EAAMiiB,EAAQjiB,GAAQtJ,IAO7C+1D,EAASF,QAASj3D,KACtB6/D,EAAW1I,EAASpB,OAAQ/1D,GAC5B8/D,EAAWzd,EAAOnhD,OAAQ,GAAI2+D,GAE9B1I,EAASlqC,IAAK2yC,EAAME,KAKtB,SAASC,GAAU//D,EAAK4/D,GACvB,IAAIxY,EAAWwY,EAAKxY,SAAS99C,cAGX,UAAb89C,GAAwBiS,GAAe/xD,KAAMtH,EAAI0K,MACrDk1D,EAAKhhD,QAAU5e,EAAI4e,QAGK,UAAbwoC,GAAqC,aAAbA,IACnCwY,EAAK3hB,aAAej+C,EAAIi+C,cAI1B,SAAS+hB,GAAUC,EAAYz8D,EAAM2L,EAAUyrD,GAG9Cp3D,EAAOiV,EAAMjV,GAEb,IAAIu3D,EAAUnzD,EAAO+yD,EAASuF,EAAYp4D,EAAMm4C,EAC/C7+C,EAAI,EACJgO,EAAI6wD,EAAWj9D,OACfm9D,EAAW/wD,EAAI,EACfgM,EAAQ5X,EAAM,GACd48D,EAAkB9yD,EAAY8N,GAG/B,GAAKglD,GACDhxD,EAAI,GAAsB,iBAAVgM,IAChBymC,EAAQ4X,YAAc6F,GAASh4D,KAAM8T,GACxC,OAAO6kD,EAAW9+D,MAAM,SAAUgL,GACjC,IAAI+T,EAAO+/C,EAAWjd,GAAI72C,GACrBi0D,IACJ58D,EAAM,GAAM4X,EAAMxX,KAAMhC,KAAMuK,EAAO+T,EAAK1Y,SAE3Cw4D,GAAU9/C,EAAM1c,EAAM2L,EAAUyrD,MAIlC,GAAKxrD,IAEJxH,GADAmzD,EAAWL,GAAel3D,EAAMy8D,EAAY,GAAItY,eAAe,EAAOsY,EAAYrF,IACjEptD,WAEmB,IAA/ButD,EAASnmD,WAAW5R,SACxB+3D,EAAWnzD,GAIPA,GAASgzD,GAAU,CAOvB,IALAsF,GADAvF,EAAUtY,EAAOhrC,IAAK4iD,GAAQc,EAAU,UAAY0E,KAC/Bz8D,OAKb5B,EAAIgO,EAAGhO,IACd0G,EAAOizD,EAEF35D,IAAM++D,IACVr4D,EAAOu6C,EAAOp7C,MAAOa,GAAM,GAAM,GAG5Bo4D,GAIJ7d,EAAOQ,MAAO8X,EAASV,GAAQnyD,EAAM,YAIvCqH,EAASvL,KAAMq8D,EAAY7+D,GAAK0G,EAAM1G,GAGvC,GAAK8+D,EAOJ,IANAjgB,EAAM0a,EAASA,EAAQ33D,OAAS,GAAI2kD,cAGpCtF,EAAOhrC,IAAKsjD,EAAS+E,IAGft+D,EAAI,EAAGA,EAAI8+D,EAAY9+D,IAC5B0G,EAAO6yD,EAASv5D,GACXm4D,GAAYjyD,KAAMQ,EAAK4C,MAAQ,MAClCwsD,EAASnB,OAAQjuD,EAAM,eACxBu6C,EAAOh+B,SAAU47B,EAAKn4C,KAEjBA,EAAK9H,KAA8C,YAArC8H,EAAK4C,MAAQ,IAAKpB,cAG/B+4C,EAAOge,WAAav4D,EAAKm6C,UAC7BI,EAAOge,SAAUv4D,EAAK9H,IAAK,CAC1BgiD,MAAOl6C,EAAKk6C,OAASl6C,EAAKinB,aAAc,UACtCkxB,GASJiC,EAASp6C,EAAK0jD,YAAY/qD,QAAS8+D,GAAc,IAAMz3D,EAAMm4C,IAQnE,OAAOggB,EAGR,SAAS14D,GAAQw7C,EAAMT,EAAUge,GAKhC,IAJA,IAAIx4D,EACHiI,EAAQuyC,EAAWD,EAAOj7C,OAAQk7C,EAAUS,GAASA,EACrD3hD,EAAI,EAE4B,OAAvB0G,EAAOiI,EAAO3O,IAAeA,IAChCk/D,GAA8B,IAAlBx4D,EAAK/E,UACtBs/C,EAAOke,UAAWtG,GAAQnyD,IAGtBA,EAAK8G,aACJ0xD,GAAYpI,GAAYpwD,IAC5BoyD,GAAeD,GAAQnyD,EAAM,WAE9BA,EAAK8G,WAAWkyC,YAAah5C,IAI/B,OAAOi7C,EAGRV,EAAOnhD,OAAQ,CACd85D,cAAe,SAAUxzD,GACxB,OAAOA,GAGRP,MAAO,SAAU87C,EAAMyd,EAAeC,GACrC,IAAIr/D,EAAGgO,EAAGsxD,EAAaC,EACtB15D,EAAQ87C,EAAKpuC,WAAW,GACxBisD,EAAS1I,GAAYnV,GAGtB,KAAMlB,EAAQ6X,gBAAsC,IAAlB3W,EAAKhgD,UAAoC,KAAlBggD,EAAKhgD,UAC3Ds/C,EAAO0O,SAAUhO,IAMnB,IAHA4d,EAAe1G,GAAQhzD,GAGjB7F,EAAI,EAAGgO,GAFbsxD,EAAczG,GAAQlX,IAEO//C,OAAQ5B,EAAIgO,EAAGhO,IAC3C2+D,GAAUW,EAAat/D,GAAKu/D,EAAcv/D,IAK5C,GAAKo/D,EACJ,GAAKC,EAIJ,IAHAC,EAAcA,GAAezG,GAAQlX,GACrC4d,EAAeA,GAAgB1G,GAAQhzD,GAEjC7F,EAAI,EAAGgO,EAAIsxD,EAAY19D,OAAQ5B,EAAIgO,EAAGhO,IAC3Cu+D,GAAgBe,EAAat/D,GAAKu/D,EAAcv/D,SAGjDu+D,GAAgB5c,EAAM97C,GAWxB,OANA05D,EAAe1G,GAAQhzD,EAAO,WACZjE,OAAS,GAC1Bk3D,GAAeyG,GAAeC,GAAU3G,GAAQlX,EAAM,WAIhD97C,GAGRs5D,UAAW,SAAU3d,GAKpB,IAJA,IAAIrhD,EAAMwhD,EAAMr4C,EACf2pD,EAAUhS,EAAOt8B,MAAMsuC,QACvBjzD,EAAI,OAE6B3B,KAAxBsjD,EAAOH,EAAOxhD,IAAqBA,IAC5C,GAAKy1D,EAAY9T,GAAS,CACzB,GAAOxhD,EAAOwhD,EAAMmU,EAAS5T,SAAc,CAC1C,GAAK/hD,EAAKorB,OACT,IAAMjiB,KAAQnJ,EAAKorB,OACb0nC,EAAS3pD,GACb23C,EAAOt8B,MAAMxe,OAAQw7C,EAAMr4C,GAI3B23C,EAAOsa,YAAa5Z,EAAMr4C,EAAMnJ,EAAK25C,QAOxC6H,EAAMmU,EAAS5T,cAAY7jD,EAEvBsjD,EAAMoU,EAAS7T,WAInBP,EAAMoU,EAAS7T,cAAY7jD,OAOhC4iD,EAAOh/C,GAAGnC,OAAQ,CACjBijB,OAAQ,SAAUm+B,GACjB,OAAO/6C,GAAQ3F,KAAM0gD,GAAU,IAGhC/6C,OAAQ,SAAU+6C,GACjB,OAAO/6C,GAAQ3F,KAAM0gD,IAGtBh2C,KAAM,SAAU8O,GACf,OAAO26C,EAAQn0D,MAAM,SAAUwZ,GAC9B,YAAiB3b,IAAV2b,EACNinC,EAAO/1C,KAAM1K,MACbA,KAAKwG,QAAQjH,MAAM,WACK,IAAlBS,KAAKmB,UAAoC,KAAlBnB,KAAKmB,UAAqC,IAAlBnB,KAAKmB,WACxDnB,KAAK4pD,YAAcpwC,QAGpB,KAAMA,EAAOvX,UAAUb,SAG3BiR,OAAQ,WACP,OAAO+rD,GAAUp+D,KAAMiC,WAAW,SAAUk/C,GACpB,IAAlBnhD,KAAKmB,UAAoC,KAAlBnB,KAAKmB,UAAqC,IAAlBnB,KAAKmB,UAC3Cy8D,GAAoB59D,KAAMmhD,GAChCn6C,YAAam6C,OAKvB8d,QAAS,WACR,OAAOb,GAAUp+D,KAAMiC,WAAW,SAAUk/C,GAC3C,GAAuB,IAAlBnhD,KAAKmB,UAAoC,KAAlBnB,KAAKmB,UAAqC,IAAlBnB,KAAKmB,SAAiB,CACzE,IAAIsG,EAASm2D,GAAoB59D,KAAMmhD,GACvC15C,EAAO8L,aAAc4tC,EAAM15C,EAAOmE,iBAKrCszD,OAAQ,WACP,OAAOd,GAAUp+D,KAAMiC,WAAW,SAAUk/C,GACtCnhD,KAAKgN,YACThN,KAAKgN,WAAWuG,aAAc4tC,EAAMnhD,UAKvCm/D,MAAO,WACN,OAAOf,GAAUp+D,KAAMiC,WAAW,SAAUk/C,GACtCnhD,KAAKgN,YACThN,KAAKgN,WAAWuG,aAAc4tC,EAAMnhD,KAAK6L,iBAK5CrF,MAAO,WAIN,IAHA,IAAI26C,EACH3hD,EAAI,EAE2B,OAAtB2hD,EAAOnhD,KAAMR,IAAeA,IACd,IAAlB2hD,EAAKhgD,WAGTs/C,EAAOke,UAAWtG,GAAQlX,GAAM,IAGhCA,EAAKyI,YAAc,IAIrB,OAAO5pD,MAGRqF,MAAO,SAAUu5D,EAAeC,GAI/B,OAHAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzD7+D,KAAKyV,KAAK,WAChB,OAAOgrC,EAAOp7C,MAAOrF,KAAM4+D,EAAeC,OAI5Cj5D,KAAM,SAAU4T,GACf,OAAO26C,EAAQn0D,MAAM,SAAUwZ,GAC9B,IAAI2nC,EAAOnhD,KAAM,IAAO,GACvBR,EAAI,EACJgO,EAAIxN,KAAKoB,OAEV,QAAevD,IAAV2b,GAAyC,IAAlB2nC,EAAKhgD,SAChC,OAAOggD,EAAK7tC,UAIb,GAAsB,iBAAVkG,IAAuBikD,GAAa/3D,KAAM8T,KACpDw+C,IAAWN,GAAS1R,KAAMxsC,IAAW,CAAE,GAAI,KAAQ,GAAI9R,eAAkB,CAE1E8R,EAAQinC,EAAO2Y,cAAe5/C,GAE9B,IACC,KAAQha,EAAIgO,EAAGhO,IAIS,KAHvB2hD,EAAOnhD,KAAMR,IAAO,IAGV2B,WACTs/C,EAAOke,UAAWtG,GAAQlX,GAAM,IAChCA,EAAK7tC,UAAYkG,GAInB2nC,EAAO,EAGN,MAAQ35C,KAGN25C,GACJnhD,KAAKwG,QAAQ6L,OAAQmH,KAEpB,KAAMA,EAAOvX,UAAUb,SAG3BmY,YAAa,WACZ,IAAIy/C,EAAU,GAGd,OAAOoF,GAAUp+D,KAAMiC,WAAW,SAAUk/C,GAC3C,IAAI78C,EAAStE,KAAKgN,WAEbyzC,EAAO5yC,QAAS7N,KAAMg5D,GAAY,IACtCvY,EAAOke,UAAWtG,GAAQr4D,OACrBsE,GACJA,EAAO86D,aAAcje,EAAMnhD,SAK3Bg5D,MAILvY,EAAOlhD,KAAM,CACZ6Z,SAAU,SACVimD,UAAW,UACX9rD,aAAc,SACd+rD,YAAa,QACbC,WAAY,gBACV,SAAUj/D,EAAM4Q,GAClBuvC,EAAOh/C,GAAInB,GAAS,SAAUogD,GAO7B,IANA,IAAIM,EACHhzB,EAAM,GACNwxC,EAAS/e,EAAQC,GACjBj3C,EAAO+1D,EAAOp+D,OAAS,EACvB5B,EAAI,EAEGA,GAAKiK,EAAMjK,IAClBwhD,EAAQxhD,IAAMiK,EAAOzJ,KAAOA,KAAKqF,OAAO,GACxCo7C,EAAQ+e,EAAQhgE,IAAO0R,GAAY8vC,GAInCz0C,EAAKlK,MAAO2rB,EAAKgzB,EAAM3sC,OAGxB,OAAOrU,KAAK+gD,UAAW/yB,OAGzB,IAAIyxC,GAAY,IAAI90D,OAAQ,KAAOwrD,GAAO,kBAAmB,KAEzDuJ,GAAc,MAGdC,GAAY,SAAUxe,GAKxB,IAAIqb,EAAOrb,EAAK4E,cAAckC,YAM9B,OAJMuU,GAASA,EAAKoD,SACnBpD,EAAOj+D,GAGDi+D,EAAKqD,iBAAkB1e,IAG5B2e,GAAO,SAAU3e,EAAMjiD,EAASqO,GACnC,IAAIygB,EAAK1tB,EACRoS,EAAM,GAGP,IAAMpS,KAAQpB,EACbwT,EAAKpS,GAAS6gD,EAAKluC,MAAO3S,GAC1B6gD,EAAKluC,MAAO3S,GAASpB,EAASoB,GAM/B,IAAMA,KAHN0tB,EAAMzgB,EAASvL,KAAMm/C,GAGPjiD,EACbiiD,EAAKluC,MAAO3S,GAASoS,EAAKpS,GAG3B,OAAO0tB,GAIJ+xC,GAAY,IAAIp1D,OAAQ0rD,GAAU3pD,KAAM,KAAO,KAK/CszD,GAAW,IAAIr1D,OAClB,uEACA,KAmJD,SAASs1D,GAAQ9e,EAAM7gD,EAAM4/D,GAC5B,IAAI/mD,EAAOgnD,EAAUC,EAAUpyC,EAC9BqyC,EAAeX,GAAYh6D,KAAMpF,GAMjC2S,EAAQkuC,EAAKluC,MAoEd,OAlEAitD,EAAWA,GAAYP,GAAWxe,MAgBjCnzB,EAAMkyC,EAASI,iBAAkBhgE,IAAU4/D,EAAU5/D,GAEhD+/D,GAAgBryC,IAkBpBA,EAAMA,EAAInvB,QAASmhE,GAAU,YAAUniE,GAG3B,KAARmwB,GAAesoC,GAAYnV,KAC/BnzB,EAAMyyB,EAAOxtC,MAAOkuC,EAAM7gD,KAQrB2/C,EAAQsgB,kBAAoBd,GAAU/5D,KAAMsoB,IAAS+xC,GAAUr6D,KAAMpF,KAG1E6Y,EAAQlG,EAAMkG,MACdgnD,EAAWltD,EAAMktD,SACjBC,EAAWntD,EAAMmtD,SAGjBntD,EAAMktD,SAAWltD,EAAMmtD,SAAWntD,EAAMkG,MAAQ6U,EAChDA,EAAMkyC,EAAS/mD,MAGflG,EAAMkG,MAAQA,EACdlG,EAAMktD,SAAWA,EACjBltD,EAAMmtD,SAAWA,SAIJviE,IAARmwB,EAINA,EAAM,GACNA,EAIF,SAASwyC,GAAcC,EAAaC,GAGnC,MAAO,CACNrsD,IAAK,WACJ,IAAKosD,IASL,OAASzgE,KAAKqU,IAAMqsD,GAASr+D,MAAOrC,KAAMiC,kBALlCjC,KAAKqU,OA3OhB,WAIC,SAASssD,IAGR,GAAMx7C,EAAN,CAIAy7C,EAAU3tD,MAAM4tD,QAAU,+EAE1B17C,EAAIlS,MAAM4tD,QACT,4HAGD9hB,GAAgB/3C,YAAa45D,GAAY55D,YAAame,GAEtD,IAAI27C,EAAWviE,EAAOshE,iBAAkB16C,GACxC47C,EAAoC,OAAjBD,EAAS3qD,IAG5B6qD,EAAsE,KAA9CC,EAAoBH,EAASI,YAIrD/7C,EAAIlS,MAAMkuD,MAAQ,MAClBC,EAA6D,KAAzCH,EAAoBH,EAASK,OAIjDE,EAAgE,KAAzCJ,EAAoBH,EAAS3nD,OAMpDgM,EAAIlS,MAAMqP,SAAW,WACrBg/C,EAAiE,KAA9CL,EAAoB97C,EAAIwC,YAAc,GAEzDo3B,GAAgBG,YAAa0hB,GAI7Bz7C,EAAM,MAGP,SAAS87C,EAAoBM,GAC5B,OAAO7nD,KAAK8nD,MAAOC,WAAYF,IAGhC,IAAIR,EAAkBM,EAAsBC,EAAkBF,EAC7DM,EAAyBV,EACzBJ,EAAYtiE,EAASuI,cAAe,OACpCse,EAAM7mB,EAASuI,cAAe,OAGzBse,EAAIlS,QAMVkS,EAAIlS,MAAM0uD,eAAiB,cAC3Bx8C,EAAIpS,WAAW,GAAOE,MAAM0uD,eAAiB,GAC7C1hB,EAAQ2hB,gBAA+C,gBAA7Bz8C,EAAIlS,MAAM0uD,eAEpClhB,EAAOnhD,OAAQ2gD,EAAS,CACvB4hB,kBAAmB,WAElB,OADAlB,IACOU,GAERd,eAAgB,WAEf,OADAI,IACOS,GAERU,cAAe,WAEd,OADAnB,IACOI,GAERgB,mBAAoB,WAEnB,OADApB,IACOK,GAERgB,cAAe,WAEd,OADArB,IACOW,GAYRW,qBAAsB,WACrB,IAAIC,EAAOhK,EAAIiK,EAASC,EAmCxB,OAlCgC,MAA3BV,IACJQ,EAAQ5jE,EAASuI,cAAe,SAChCqxD,EAAK55D,EAASuI,cAAe,MAC7Bs7D,EAAU7jE,EAASuI,cAAe,OAElCq7D,EAAMjvD,MAAM4tD,QAAU,2DACtB3I,EAAGjlD,MAAM4tD,QAAU,mBAKnB3I,EAAGjlD,MAAMkP,OAAS,MAClBggD,EAAQlvD,MAAMkP,OAAS,MAQvBggD,EAAQlvD,MAAMa,QAAU,QAExBirC,GACE/3C,YAAak7D,GACbl7D,YAAakxD,GACblxD,YAAam7D,GAEfC,EAAU7jE,EAAOshE,iBAAkB3H,GACnCwJ,EAA4B95C,SAAUw6C,EAAQjgD,OAAQ,IACrDyF,SAAUw6C,EAAQC,eAAgB,IAClCz6C,SAAUw6C,EAAQE,kBAAmB,MAAWpK,EAAGtrD,aAEpDmyC,GAAgBG,YAAagjB,IAEvBR,MAvIV,GAsPA,IAAIa,GAAc,CAAE,SAAU,MAAO,MACpCC,GAAalkE,EAASuI,cAAe,OAAQoM,MAC7CwvD,GAAc,GAkBf,SAASC,GAAepiE,GACvB,IAAIqiE,EAAQliB,EAAOmiB,SAAUtiE,IAAUmiE,GAAaniE,GAEpD,OAAKqiE,IAGAriE,KAAQkiE,GACLliE,EAEDmiE,GAAaniE,GAxBrB,SAAyBA,GAMxB,IAHA,IAAIuiE,EAAUviE,EAAM,GAAIw0D,cAAgBx0D,EAAKyB,MAAO,GACnDvC,EAAI+iE,GAAYnhE,OAET5B,KAEP,IADAc,EAAOiiE,GAAa/iE,GAAMqjE,KACbL,GACZ,OAAOliE,EAeoBwiE,CAAgBxiE,IAAUA,GAIxD,IAKCyiE,GAAe,4BACfC,GAAU,CAAE1gD,SAAU,WAAY2gD,WAAY,SAAUnvD,QAAS,SACjEovD,GAAqB,CACpBhpD,cAAe,IACfJ,WAAY,OAGd,SAASqpD,GAAmB5hB,EAAO/nC,EAAO4pD,GAIzC,IAAIvjC,EAAUu2B,GAAQpQ,KAAMxsC,GAC5B,OAAOqmB,EAGNnmB,KAAKoR,IAAK,EAAG+U,EAAS,IAAQujC,GAAY,KAAUvjC,EAAS,IAAO,MACpErmB,EAGF,SAAS6pD,GAAoBliB,EAAMmiB,EAAWC,EAAKC,EAAaC,EAAQC,GACvE,IAAIlkE,EAAkB,UAAd8jE,EAAwB,EAAI,EACnCK,EAAQ,EACRC,EAAQ,EAGT,GAAKL,KAAUC,EAAc,SAAW,WACvC,OAAO,EAGR,KAAQhkE,EAAI,EAAGA,GAAK,EAGN,WAAR+jE,IACJK,GAASnjB,EAAOz7C,IAAKm8C,EAAMoiB,EAAMlN,GAAW72D,IAAK,EAAMikE,IAIlDD,GAmBQ,YAARD,IACJK,GAASnjB,EAAOz7C,IAAKm8C,EAAM,UAAYkV,GAAW72D,IAAK,EAAMikE,IAIjD,WAARF,IACJK,GAASnjB,EAAOz7C,IAAKm8C,EAAM,SAAWkV,GAAW72D,GAAM,SAAS,EAAMikE,MAtBvEG,GAASnjB,EAAOz7C,IAAKm8C,EAAM,UAAYkV,GAAW72D,IAAK,EAAMikE,GAGhD,YAARF,EACJK,GAASnjB,EAAOz7C,IAAKm8C,EAAM,SAAWkV,GAAW72D,GAAM,SAAS,EAAMikE,GAItEE,GAASljB,EAAOz7C,IAAKm8C,EAAM,SAAWkV,GAAW72D,GAAM,SAAS,EAAMikE,IAoCzE,OAhBMD,GAAeE,GAAe,IAInCE,GAASlqD,KAAKoR,IAAK,EAAGpR,KAAKmqD,KAC1B1iB,EAAM,SAAWmiB,EAAW,GAAIxO,cAAgBwO,EAAUvhE,MAAO,IACjE2hE,EACAE,EACAD,EACA,MAIM,GAGDC,EAGR,SAASE,GAAkB3iB,EAAMmiB,EAAWK,GAG3C,IAAIF,EAAS9D,GAAWxe,GAKvBqiB,IADmBvjB,EAAQ4hB,qBAAuB8B,IAEE,eAAnDljB,EAAOz7C,IAAKm8C,EAAM,aAAa,EAAOsiB,GACvCM,EAAmBP,EAEnB7sD,EAAMspD,GAAQ9e,EAAMmiB,EAAWG,GAC/BO,EAAa,SAAWV,EAAW,GAAIxO,cAAgBwO,EAAUvhE,MAAO,GAIzE,GAAK09D,GAAU/5D,KAAMiR,GAAQ,CAC5B,IAAMgtD,EACL,OAAOhtD,EAERA,EAAM,OAyCP,QAlCQspC,EAAQ4hB,qBAAuB2B,IAMrCvjB,EAAQgiB,wBAA0Bzc,EAAUrE,EAAM,OAI3C,SAARxqC,IAIC8qD,WAAY9qD,IAA0D,WAAjD8pC,EAAOz7C,IAAKm8C,EAAM,WAAW,EAAOsiB,KAG1DtiB,EAAK8iB,iBAAiB7iE,SAEtBoiE,EAAiE,eAAnD/iB,EAAOz7C,IAAKm8C,EAAM,aAAa,EAAOsiB,IAKpDM,EAAmBC,KAAc7iB,KAEhCxqC,EAAMwqC,EAAM6iB,MAKdrtD,EAAM8qD,WAAY9qD,IAAS,GAI1B0sD,GACCliB,EACAmiB,EACAK,IAAWH,EAAc,SAAW,WACpCO,EACAN,EAGA9sD,GAEE,KA+SL,SAASutD,GAAO/iB,EAAMjiD,EAASymC,EAAMn7B,EAAK25D,GACzC,OAAO,IAAID,GAAMpiE,UAAUlC,KAAMuhD,EAAMjiD,EAASymC,EAAMn7B,EAAK25D,GA7S5D1jB,EAAOnhD,OAAQ,CAId8kE,SAAU,CACTC,QAAS,CACRhwD,IAAK,SAAU8sC,EAAM+e,GACpB,GAAKA,EAAW,CAGf,IAAIlyC,EAAMiyC,GAAQ9e,EAAM,WACxB,MAAe,KAARnzB,EAAa,IAAMA,MAO9BmpC,UAAW,CACV,yBAA2B,EAC3B,aAAe,EACf,aAAe,EACf,UAAY,EACZ,YAAc,EACd,YAAc,EACd,UAAY,EACZ,YAAc,EACd,eAAiB,EACjB,iBAAmB,EACnB,SAAW,EACX,YAAc,EACd,cAAgB,EAChB,YAAc,EACd,SAAW,EACX,OAAS,EACT,SAAW,EACX,QAAU,EACV,QAAU,EACV,MAAQ,GAKTyL,SAAU,GAGV3vD,MAAO,SAAUkuC,EAAM7gD,EAAMkZ,EAAOmqD,GAGnC,GAAMxiB,GAA0B,IAAlBA,EAAKhgD,UAAoC,IAAlBggD,EAAKhgD,UAAmBggD,EAAKluC,MAAlE,CAKA,IAAI+a,EAAKllB,EAAMitD,EACduO,EAAWvP,EAAWz0D,GACtB+/D,EAAeX,GAAYh6D,KAAMpF,GACjC2S,EAAQkuC,EAAKluC,MAad,GARMotD,IACL//D,EAAOoiE,GAAe4B,IAIvBvO,EAAQtV,EAAO2jB,SAAU9jE,IAAUmgD,EAAO2jB,SAAUE,QAGrCzmE,IAAV2b,EA0CJ,OAAKu8C,GAAS,QAASA,QACwBl4D,KAA5CmwB,EAAM+nC,EAAM1hD,IAAK8sC,GAAM,EAAOwiB,IAEzB31C,EAID/a,EAAO3S,GA7CA,YAHdwI,SAAc0Q,KAGcwU,EAAMooC,GAAQpQ,KAAMxsC,KAAawU,EAAK,KACjExU,EAAQk9C,GAAWvV,EAAM7gD,EAAM0tB,GAG/BllB,EAAO,UAIM,MAAT0Q,GAAiBA,GAAUA,IAOlB,WAAT1Q,GAAsBu3D,IAC1B7mD,GAASwU,GAAOA,EAAK,KAASyyB,EAAO0W,UAAWmN,GAAa,GAAK,OAI7DrkB,EAAQ2hB,iBAA6B,KAAVpoD,GAAiD,IAAjClZ,EAAK1B,QAAS,gBAC9DqU,EAAO3S,GAAS,WAIXy1D,GAAY,QAASA,QACsBl4D,KAA9C2b,EAAQu8C,EAAM1qC,IAAK81B,EAAM3nC,EAAOmqD,MAE7BtD,EACJptD,EAAMsxD,YAAajkE,EAAMkZ,GAEzBvG,EAAO3S,GAASkZ,MAkBpBxU,IAAK,SAAUm8C,EAAM7gD,EAAMqjE,EAAOF,GACjC,IAAI9sD,EAAKmqC,EAAKiV,EACbuO,EAAWvP,EAAWz0D,GA6BvB,OA5BgBo/D,GAAYh6D,KAAMpF,KAMjCA,EAAOoiE,GAAe4B,KAIvBvO,EAAQtV,EAAO2jB,SAAU9jE,IAAUmgD,EAAO2jB,SAAUE,KAGtC,QAASvO,IACtBp/C,EAAMo/C,EAAM1hD,IAAK8sC,GAAM,EAAMwiB,SAIjB9lE,IAAR8Y,IACJA,EAAMspD,GAAQ9e,EAAM7gD,EAAMmjE,IAId,WAAR9sD,GAAoBrW,KAAQ4iE,KAChCvsD,EAAMusD,GAAoB5iE,IAIZ,KAAVqjE,GAAgBA,GACpB7iB,EAAM2gB,WAAY9qD,IACD,IAAVgtD,GAAkBl5B,SAAUqW,GAAQA,GAAO,EAAInqC,GAGhDA,KAIT8pC,EAAOlhD,KAAM,CAAE,SAAU,UAAW,SAAU6c,EAAIknD,GACjD7iB,EAAO2jB,SAAUd,GAAc,CAC9BjvD,IAAK,SAAU8sC,EAAM+e,EAAUyD,GAC9B,GAAKzD,EAIJ,OAAO6C,GAAar9D,KAAM+6C,EAAOz7C,IAAKm8C,EAAM,aAQxCA,EAAK8iB,iBAAiB7iE,QAAW+/C,EAAKqjB,wBAAwBrrD,MAIjE2qD,GAAkB3iB,EAAMmiB,EAAWK,GAHnC7D,GAAM3e,EAAM6hB,IAAS,WACpB,OAAOc,GAAkB3iB,EAAMmiB,EAAWK,OAM9Ct4C,IAAK,SAAU81B,EAAM3nC,EAAOmqD,GAC3B,IAAI9jC,EACH4jC,EAAS9D,GAAWxe,GAIpBsjB,GAAsBxkB,EAAQ+hB,iBACT,aAApByB,EAAOnhD,SAIRkhD,GADkBiB,GAAsBd,IAEY,eAAnDljB,EAAOz7C,IAAKm8C,EAAM,aAAa,EAAOsiB,GACvCL,EAAWO,EACVN,GACCliB,EACAmiB,EACAK,EACAH,EACAC,GAED,EAqBF,OAjBKD,GAAeiB,IACnBrB,GAAY1pD,KAAKmqD,KAChB1iB,EAAM,SAAWmiB,EAAW,GAAIxO,cAAgBwO,EAAUvhE,MAAO,IACjE0/D,WAAYgC,EAAQH,IACpBD,GAAoBliB,EAAMmiB,EAAW,UAAU,EAAOG,GACtD,KAKGL,IAAcvjC,EAAUu2B,GAAQpQ,KAAMxsC,KACb,QAA3BqmB,EAAS,IAAO,QAElBshB,EAAKluC,MAAOqwD,GAAc9pD,EAC1BA,EAAQinC,EAAOz7C,IAAKm8C,EAAMmiB,IAGpBH,GAAmBhiB,EAAM3nC,EAAO4pD,QAK1C3iB,EAAO2jB,SAASlD,WAAaV,GAAcvgB,EAAQ8hB,oBAClD,SAAU5gB,EAAM+e,GACf,GAAKA,EACJ,OAASuB,WAAYxB,GAAQ9e,EAAM,gBAClCA,EAAKqjB,wBAAwBtuD,KAC5B4pD,GAAM3e,EAAM,CAAE+f,WAAY,IAAK,WAC9B,OAAO/f,EAAKqjB,wBAAwBtuD,SAEnC,QAMPuqC,EAAOlhD,KAAM,CACZmlE,OAAQ,GACRC,QAAS,GACTC,OAAQ,UACN,SAAU1nB,EAAQhL,GACpBuO,EAAO2jB,SAAUlnB,EAAShL,GAAW,CACpC2yB,OAAQ,SAAUrrD,GAOjB,IANA,IAAIha,EAAI,EACPslE,EAAW,GAGXC,EAAyB,iBAAVvrD,EAAqBA,EAAMwlB,MAAO,KAAQ,CAAExlB,GAEpDha,EAAI,EAAGA,IACdslE,EAAU5nB,EAASmZ,GAAW72D,GAAM0yC,GACnC6yB,EAAOvlE,IAAOulE,EAAOvlE,EAAI,IAAOulE,EAAO,GAGzC,OAAOD,IAIO,WAAX5nB,IACJuD,EAAO2jB,SAAUlnB,EAAShL,GAAS7mB,IAAM83C,OAI3C1iB,EAAOh/C,GAAGnC,OAAQ,CACjB0F,IAAK,SAAU1E,EAAMkZ,GACpB,OAAO26C,EAAQn0D,MAAM,SAAUmhD,EAAM7gD,EAAMkZ,GAC1C,IAAIiqD,EAAQp8B,EACX5xB,EAAM,GACNjW,EAAI,EAEL,GAAKqC,MAAM6L,QAASpN,GAAS,CAI5B,IAHAmjE,EAAS9D,GAAWxe,GACpB9Z,EAAM/mC,EAAKc,OAEH5B,EAAI6nC,EAAK7nC,IAChBiW,EAAKnV,EAAMd,IAAQihD,EAAOz7C,IAAKm8C,EAAM7gD,EAAMd,IAAK,EAAOikE,GAGxD,OAAOhuD,EAGR,YAAiB5X,IAAV2b,EACNinC,EAAOxtC,MAAOkuC,EAAM7gD,EAAMkZ,GAC1BinC,EAAOz7C,IAAKm8C,EAAM7gD,KACjBA,EAAMkZ,EAAOvX,UAAUb,OAAS,MAQrCq/C,EAAOyjB,MAAQA,GAEfA,GAAMpiE,UAAY,CACjBoiC,YAAaggC,GACbtkE,KAAM,SAAUuhD,EAAMjiD,EAASymC,EAAMn7B,EAAK25D,EAAQjN,GACjDl3D,KAAKmhD,KAAOA,EACZnhD,KAAK2lC,KAAOA,EACZ3lC,KAAKmkE,OAASA,GAAU1jB,EAAO0jB,OAAO/L,SACtCp4D,KAAKd,QAAUA,EACfc,KAAK4jB,MAAQ5jB,KAAKo8D,IAAMp8D,KAAKid,MAC7Bjd,KAAKwK,IAAMA,EACXxK,KAAKk3D,KAAOA,IAAUzW,EAAO0W,UAAWxxB,GAAS,GAAK,OAEvD1oB,IAAK,WACJ,IAAI84C,EAAQmO,GAAMc,UAAWhlE,KAAK2lC,MAElC,OAAOowB,GAASA,EAAM1hD,IACrB0hD,EAAM1hD,IAAKrU,MACXkkE,GAAMc,UAAU5M,SAAS/jD,IAAKrU,OAEhCy/C,IAAK,SAAUwlB,GACd,IAAIC,EACHnP,EAAQmO,GAAMc,UAAWhlE,KAAK2lC,MAoB/B,OAlBK3lC,KAAKd,QAAQimE,SACjBnlE,KAAKsX,IAAM4tD,EAAQzkB,EAAO0jB,OAAQnkE,KAAKmkE,QACtCc,EAASjlE,KAAKd,QAAQimE,SAAWF,EAAS,EAAG,EAAGjlE,KAAKd,QAAQimE,UAG9DnlE,KAAKsX,IAAM4tD,EAAQD,EAEpBjlE,KAAKo8D,KAAQp8D,KAAKwK,IAAMxK,KAAK4jB,OAAUshD,EAAQllE,KAAK4jB,MAE/C5jB,KAAKd,QAAQkmE,MACjBplE,KAAKd,QAAQkmE,KAAKpjE,KAAMhC,KAAKmhD,KAAMnhD,KAAKo8D,IAAKp8D,MAGzC+1D,GAASA,EAAM1qC,IACnB0qC,EAAM1qC,IAAKrrB,MAEXkkE,GAAMc,UAAU5M,SAAS/sC,IAAKrrB,MAExBA,OAITkkE,GAAMpiE,UAAUlC,KAAKkC,UAAYoiE,GAAMpiE,UAEvCoiE,GAAMc,UAAY,CACjB5M,SAAU,CACT/jD,IAAK,SAAUuiD,GACd,IAAI10D,EAIJ,OAA6B,IAAxB00D,EAAMzV,KAAKhgD,UACa,MAA5By1D,EAAMzV,KAAMyV,EAAMjxB,OAAoD,MAAlCixB,EAAMzV,KAAKluC,MAAO2jD,EAAMjxB,MACrDixB,EAAMzV,KAAMyV,EAAMjxB,OAO1BzjC,EAASu+C,EAAOz7C,IAAK4xD,EAAMzV,KAAMyV,EAAMjxB,KAAM,MAGhB,SAAXzjC,EAAwBA,EAAJ,GAEvCmpB,IAAK,SAAUurC,GAKTnW,EAAO4kB,GAAGD,KAAMxO,EAAMjxB,MAC1B8a,EAAO4kB,GAAGD,KAAMxO,EAAMjxB,MAAQixB,GACK,IAAxBA,EAAMzV,KAAKhgD,WACtBs/C,EAAO2jB,SAAUxN,EAAMjxB,OAC6B,MAAnDixB,EAAMzV,KAAKluC,MAAOyvD,GAAe9L,EAAMjxB,OAGxCixB,EAAMzV,KAAMyV,EAAMjxB,MAASixB,EAAMwF,IAFjC3b,EAAOxtC,MAAO2jD,EAAMzV,KAAMyV,EAAMjxB,KAAMixB,EAAMwF,IAAMxF,EAAMM,SAU5DgN,GAAMc,UAAUxxD,UAAY0wD,GAAMc,UAAUvxD,WAAa,CACxD4X,IAAK,SAAUurC,GACTA,EAAMzV,KAAKhgD,UAAYy1D,EAAMzV,KAAKn0C,aACtC4pD,EAAMzV,KAAMyV,EAAMjxB,MAASixB,EAAMwF,OAKpC3b,EAAO0jB,OAAS,CACfmB,OAAQ,SAAUh5D,GACjB,OAAOA,GAERi5D,MAAO,SAAUj5D,GAChB,MAAO,GAAMoN,KAAK8rD,IAAKl5D,EAAIoN,KAAK+rD,IAAO,GAExCrN,SAAU,SAGX3X,EAAO4kB,GAAKnB,GAAMpiE,UAAUlC,KAG5B6gD,EAAO4kB,GAAGD,KAAO,GAKjB,IACCM,GAAOC,GACPC,GAAW,yBACXC,GAAO,cAER,SAASv3C,KACHq3C,MACqB,IAApBrnE,EAAS4P,QAAoB3P,EAAOunE,sBACxCvnE,EAAOunE,sBAAuBx3C,IAE9B/vB,EAAOqL,WAAY0kB,GAAUmyB,EAAO4kB,GAAGU,UAGxCtlB,EAAO4kB,GAAGW,QAKZ,SAASC,KAIR,OAHA1nE,EAAOqL,YAAY,WAClB87D,QAAQ7nE,KAEA6nE,GAAQx9D,KAAKk0D,MAIvB,SAAS8J,GAAOp9D,EAAMq9D,GACrB,IAAI39D,EACHhJ,EAAI,EACJynD,EAAQ,CAAE9kC,OAAQrZ,GAKnB,IADAq9D,EAAeA,EAAe,EAAI,EAC1B3mE,EAAI,EAAGA,GAAK,EAAI2mE,EAEvBlf,EAAO,UADPz+C,EAAQ6tD,GAAW72D,KACSynD,EAAO,UAAYz+C,GAAUM,EAO1D,OAJKq9D,IACJlf,EAAMod,QAAUpd,EAAM9tC,MAAQrQ,GAGxBm+C,EAGR,SAASmf,GAAa5sD,EAAOmsB,EAAM1iC,GAKlC,IAJA,IAAI2zD,EACHyH,GAAegI,GAAUC,SAAU3gC,IAAU,IAAK77B,OAAQu8D,GAAUC,SAAU,MAC9E/7D,EAAQ,EACRnJ,EAASi9D,EAAWj9D,OACbmJ,EAAQnJ,EAAQmJ,IACvB,GAAOqsD,EAAQyH,EAAY9zD,GAAQvI,KAAMiB,EAAW0iC,EAAMnsB,GAGzD,OAAOo9C,EAsNV,SAASyP,GAAWllB,EAAMolB,EAAYrnE,GACrC,IAAIgD,EACHskE,EACAj8D,EAAQ,EACRnJ,EAASilE,GAAUI,WAAWrlE,OAC9BwwD,EAAWnR,EAAOgR,WAAWE,QAAQ,kBAG7BqU,EAAK7kB,QAEb6kB,EAAO,WACN,GAAKQ,EACJ,OAAO,EAYR,IAVA,IAAIE,EAAchB,IAASO,KAC1B5S,EAAY35C,KAAKoR,IAAK,EAAG7nB,EAAU0jE,UAAY1jE,EAAUkiE,SAAWuB,GAKpEzB,EAAU,GADH5R,EAAYpwD,EAAUkiE,UAAY,GAEzC56D,EAAQ,EACRnJ,EAAS6B,EAAU2jE,OAAOxlE,OAEnBmJ,EAAQnJ,EAAQmJ,IACvBtH,EAAU2jE,OAAQr8D,GAAQk1C,IAAKwlB,GAMhC,OAHArT,EAASgB,WAAYzR,EAAM,CAAEl+C,EAAWgiE,EAAS5R,IAG5C4R,EAAU,GAAK7jE,EACZiyD,GAIFjyD,GACLwwD,EAASgB,WAAYzR,EAAM,CAAEl+C,EAAW,EAAG,IAI5C2uD,EAASiB,YAAa1R,EAAM,CAAEl+C,KACvB,IAERA,EAAY2uD,EAAS3jC,QAAS,CAC7BkzB,KAAMA,EACNrN,MAAO2M,EAAOnhD,OAAQ,GAAIinE,GAC1B1iE,KAAM48C,EAAOnhD,QAAQ,EAAM,CAC1BunE,cAAe,GACf1C,OAAQ1jB,EAAO0jB,OAAO/L,UACpBl5D,GACH4nE,mBAAoBP,EACpBQ,gBAAiB7nE,EACjBynE,UAAWjB,IAASO,KACpBd,SAAUjmE,EAAQimE,SAClByB,OAAQ,GACRR,YAAa,SAAUzgC,EAAMn7B,GAC5B,IAAIosD,EAAQnW,EAAOyjB,MAAO/iB,EAAMl+C,EAAUY,KAAM8hC,EAAMn7B,EACrDvH,EAAUY,KAAKgjE,cAAelhC,IAAU1iC,EAAUY,KAAKsgE,QAExD,OADAlhE,EAAU2jE,OAAOr6D,KAAMqqD,GAChBA,GAERhjD,KAAM,SAAUozD,GACf,IAAIz8D,EAAQ,EAIXnJ,EAAS4lE,EAAU/jE,EAAU2jE,OAAOxlE,OAAS,EAC9C,GAAKolE,EACJ,OAAOxmE,KAGR,IADAwmE,GAAU,EACFj8D,EAAQnJ,EAAQmJ,IACvBtH,EAAU2jE,OAAQr8D,GAAQk1C,IAAK,GAUhC,OANKunB,GACJpV,EAASgB,WAAYzR,EAAM,CAAEl+C,EAAW,EAAG,IAC3C2uD,EAASiB,YAAa1R,EAAM,CAAEl+C,EAAW+jE,KAEzCpV,EAASoB,WAAY7R,EAAM,CAAEl+C,EAAW+jE,IAElChnE,QAGT8zC,EAAQ7wC,EAAU6wC,MAInB,KA/HD,SAAqBA,EAAO+yB,GAC3B,IAAIt8D,EAAOjK,EAAM6jE,EAAQ3qD,EAAOu8C,EAGhC,IAAMxrD,KAASupC,EAed,GAbAqwB,EAAS0C,EADTvmE,EAAOy0D,EAAWxqD,IAElBiP,EAAQs6B,EAAOvpC,GACV1I,MAAM6L,QAAS8L,KACnB2qD,EAAS3qD,EAAO,GAChBA,EAAQs6B,EAAOvpC,GAAUiP,EAAO,IAG5BjP,IAAUjK,IACdwzC,EAAOxzC,GAASkZ,SACTs6B,EAAOvpC,KAGfwrD,EAAQtV,EAAO2jB,SAAU9jE,KACX,WAAYy1D,EAMzB,IAAMxrD,KALNiP,EAAQu8C,EAAM8O,OAAQrrD,UACfs6B,EAAOxzC,GAICkZ,EACNjP,KAASupC,IAChBA,EAAOvpC,GAAUiP,EAAOjP,GACxBs8D,EAAet8D,GAAU45D,QAI3B0C,EAAevmE,GAAS6jE,EA6F1B8C,CAAYnzB,EAAO7wC,EAAUY,KAAKgjE,eAE1Bt8D,EAAQnJ,EAAQmJ,IAEvB,GADArI,EAASmkE,GAAUI,WAAYl8D,GAAQvI,KAAMiB,EAAWk+C,EAAMrN,EAAO7wC,EAAUY,MAM9E,OAJK6H,EAAYxJ,EAAO0R,QACvB6sC,EAAOuV,YAAa/yD,EAAUk+C,KAAMl+C,EAAUY,KAAKgtB,OAAQjd,KAC1D1R,EAAO0R,KAAK3O,KAAM/C,IAEbA,EAyBT,OArBAu+C,EAAOhrC,IAAKq+B,EAAOsyB,GAAanjE,GAE3ByI,EAAYzI,EAAUY,KAAK+f,QAC/B3gB,EAAUY,KAAK+f,MAAM5hB,KAAMm/C,EAAMl+C,GAIlCA,EACEivD,SAAUjvD,EAAUY,KAAKquD,UACzB3jD,KAAMtL,EAAUY,KAAK0K,KAAMtL,EAAUY,KAAKqjE,UAC1C73D,KAAMpM,EAAUY,KAAKwL,MACrBsiD,OAAQ1uD,EAAUY,KAAK8tD,QAEzBlR,EAAO4kB,GAAG8B,MACT1mB,EAAOnhD,OAAQ0mE,EAAM,CACpB7kB,KAAMA,EACNimB,KAAMnkE,EACN4tB,MAAO5tB,EAAUY,KAAKgtB,SAIjB5tB,EAGRw9C,EAAO4lB,UAAY5lB,EAAOnhD,OAAQ+mE,GAAW,CAE5CC,SAAU,CACT,IAAK,CAAE,SAAU3gC,EAAMnsB,GACtB,IAAIo9C,EAAQ52D,KAAKomE,YAAazgC,EAAMnsB,GAEpC,OADAk9C,GAAWE,EAAMzV,KAAMxb,EAAMywB,GAAQpQ,KAAMxsC,GAASo9C,GAC7CA,KAITyQ,QAAS,SAAUvzB,EAAOvmC,GACpB7B,EAAYooC,IAChBvmC,EAAWumC,EACXA,EAAQ,CAAE,MAEVA,EAAQA,EAAMv8B,MAAO84C,GAOtB,IAJA,IAAI1qB,EACHp7B,EAAQ,EACRnJ,EAAS0yC,EAAM1yC,OAERmJ,EAAQnJ,EAAQmJ,IACvBo7B,EAAOmO,EAAOvpC,GACd87D,GAAUC,SAAU3gC,GAAS0gC,GAAUC,SAAU3gC,IAAU,GAC3D0gC,GAAUC,SAAU3gC,GAAOh1B,QAASpD,IAItCk5D,WAAY,CA3Wb,SAA2BtlB,EAAMrN,EAAOjwC,GACvC,IAAI8hC,EAAMnsB,EAAO29B,EAAQ4e,EAAOuR,EAASC,EAAWC,EAAgB1zD,EACnE2zD,EAAQ,UAAW3zB,GAAS,WAAYA,EACxCszB,EAAOpnE,KACPu9D,EAAO,GACPtqD,EAAQkuC,EAAKluC,MACb/E,EAASizC,EAAKhgD,UAAYs1D,GAAoBtV,GAC9CumB,EAAWpS,EAASjhD,IAAK8sC,EAAM,UA6BhC,IAAMxb,KA1BA9hC,EAAKgtB,QAEa,OADvBklC,EAAQtV,EAAOuV,YAAa7U,EAAM,OACvBwmB,WACV5R,EAAM4R,SAAW,EACjBL,EAAUvR,EAAMvvD,MAAM2qD,KACtB4E,EAAMvvD,MAAM2qD,KAAO,WACZ4E,EAAM4R,UACXL,MAIHvR,EAAM4R,WAENP,EAAKzV,QAAQ,WAGZyV,EAAKzV,QAAQ,WACZoE,EAAM4R,WACAlnB,EAAO5vB,MAAOswB,EAAM,MAAO//C,QAChC20D,EAAMvvD,MAAM2qD,cAOFrd,EAEb,GADAt6B,EAAQs6B,EAAOnO,GACVigC,GAASlgE,KAAM8T,GAAU,CAG7B,UAFOs6B,EAAOnO,GACdwR,EAASA,GAAoB,WAAV39B,EACdA,KAAYtL,EAAS,OAAS,QAAW,CAI7C,GAAe,SAAVsL,IAAoBkuD,QAAiC7pE,IAArB6pE,EAAU/hC,GAK9C,SAJAz3B,GAAS,EAOXqvD,EAAM53B,GAAS+hC,GAAYA,EAAU/hC,IAAU8a,EAAOxtC,MAAOkuC,EAAMxb,GAMrE,IADA4hC,GAAa9mB,EAAOrqC,cAAe09B,MAChB2M,EAAOrqC,cAAemnD,GA8DzC,IAAM53B,KAzDD8hC,GAA2B,IAAlBtmB,EAAKhgD,WAMlB0C,EAAK+jE,SAAW,CAAE30D,EAAM20D,SAAU30D,EAAM40D,UAAW50D,EAAM60D,WAIlC,OADvBN,EAAiBE,GAAYA,EAAS5zD,WAErC0zD,EAAiBlS,EAASjhD,IAAK8sC,EAAM,YAGrB,UADjBrtC,EAAU2sC,EAAOz7C,IAAKm8C,EAAM,cAEtBqmB,EACJ1zD,EAAU0zD,GAIVhQ,GAAU,CAAErW,IAAQ,GACpBqmB,EAAiBrmB,EAAKluC,MAAMa,SAAW0zD,EACvC1zD,EAAU2sC,EAAOz7C,IAAKm8C,EAAM,WAC5BqW,GAAU,CAAErW,OAKG,WAAZrtC,GAAoC,iBAAZA,GAAgD,MAAlB0zD,IACrB,SAAhC/mB,EAAOz7C,IAAKm8C,EAAM,WAGhBomB,IACLH,EAAK74D,MAAM,WACV0E,EAAMa,QAAU0zD,KAEM,MAAlBA,IACJ1zD,EAAUb,EAAMa,QAChB0zD,EAA6B,SAAZ1zD,EAAqB,GAAKA,IAG7Cb,EAAMa,QAAU,iBAKdjQ,EAAK+jE,WACT30D,EAAM20D,SAAW,SACjBR,EAAKzV,QAAQ,WACZ1+C,EAAM20D,SAAW/jE,EAAK+jE,SAAU,GAChC30D,EAAM40D,UAAYhkE,EAAK+jE,SAAU,GACjC30D,EAAM60D,UAAYjkE,EAAK+jE,SAAU,OAKnCL,GAAY,EACEhK,EAGPgK,IACAG,EACC,WAAYA,IAChBx5D,EAASw5D,EAASx5D,QAGnBw5D,EAAWpS,EAASnB,OAAQhT,EAAM,SAAU,CAAErtC,QAAS0zD,IAInDrwB,IACJuwB,EAASx5D,QAAUA,GAIfA,GACJspD,GAAU,CAAErW,IAAQ,GAKrBimB,EAAK74D,MAAM,WASV,IAAMo3B,KAJAz3B,GACLspD,GAAU,CAAErW,IAEbmU,EAAS3vD,OAAQw7C,EAAM,UACToc,EACb9c,EAAOxtC,MAAOkuC,EAAMxb,EAAM43B,EAAM53B,QAMnC4hC,EAAYnB,GAAal4D,EAASw5D,EAAU/hC,GAAS,EAAGA,EAAMyhC,GACtDzhC,KAAQ+hC,IACfA,EAAU/hC,GAAS4hC,EAAU3jD,MACxB1V,IACJq5D,EAAU/8D,IAAM+8D,EAAU3jD,MAC1B2jD,EAAU3jD,MAAQ,MAuMrBmkD,UAAW,SAAUx6D,EAAU0xD,GACzBA,EACJoH,GAAUI,WAAW91D,QAASpD,GAE9B84D,GAAUI,WAAWl6D,KAAMgB,MAK9BkzC,EAAOunB,MAAQ,SAAUA,EAAO7D,EAAQ1iE,GACvC,IAAIpC,EAAM2oE,GAA0B,iBAAVA,EAAqBvnB,EAAOnhD,OAAQ,GAAI0oE,GAAU,CAC3Ed,SAAUzlE,IAAOA,GAAM0iE,GACtBz4D,EAAYs8D,IAAWA,EACxB7C,SAAU6C,EACV7D,OAAQ1iE,GAAM0iE,GAAUA,IAAWz4D,EAAYy4D,IAAYA,GAoC5D,OAhCK1jB,EAAO4kB,GAAGvlE,IACdT,EAAI8lE,SAAW,EAGc,iBAAjB9lE,EAAI8lE,WACV9lE,EAAI8lE,YAAY1kB,EAAO4kB,GAAG4C,OAC9B5oE,EAAI8lE,SAAW1kB,EAAO4kB,GAAG4C,OAAQ5oE,EAAI8lE,UAGrC9lE,EAAI8lE,SAAW1kB,EAAO4kB,GAAG4C,OAAO7P,UAMjB,MAAb/4D,EAAIwxB,QAA+B,IAAdxxB,EAAIwxB,QAC7BxxB,EAAIwxB,MAAQ,MAIbxxB,EAAIqT,IAAMrT,EAAI6nE,SAEd7nE,EAAI6nE,SAAW,WACTx7D,EAAYrM,EAAIqT,MACpBrT,EAAIqT,IAAI1Q,KAAMhC,MAGVX,EAAIwxB,OACR4vB,EAAOoV,QAAS71D,KAAMX,EAAIwxB,QAIrBxxB,GAGRohD,EAAOh/C,GAAGnC,OAAQ,CACjB4oE,OAAQ,SAAUF,EAAOxlD,EAAI2hD,EAAQ52D,GAGpC,OAAOvN,KAAKwF,OAAQixD,IAAqBzxD,IAAK,UAAW,GAAIwb,OAG3DhW,MAAM29D,QAAS,CAAE9D,QAAS7hD,GAAMwlD,EAAO7D,EAAQ52D,IAElD46D,QAAS,SAAUxiC,EAAMqiC,EAAO7D,EAAQ52D,GACvC,IAAI/G,EAAQi6C,EAAOrqC,cAAeuvB,GACjCyiC,EAAS3nB,EAAOunB,MAAOA,EAAO7D,EAAQ52D,GACtC86D,EAAc,WAGb,IAAIjB,EAAOf,GAAWrmE,KAAMygD,EAAOnhD,OAAQ,GAAIqmC,GAAQyiC,IAGlD5hE,GAAS8uD,EAASjhD,IAAKrU,KAAM,YACjConE,EAAKxzD,MAAM,IAMd,OAFAy0D,EAAYj+C,OAASi+C,EAEd7hE,IAA0B,IAAjB4hE,EAAOv3C,MACtB7wB,KAAKT,KAAM8oE,GACXroE,KAAK6wB,MAAOu3C,EAAOv3C,MAAOw3C,IAE5Bz0D,KAAM,SAAU9K,EAAMotD,EAAY8Q,GACjC,IAAIsB,EAAY,SAAUvS,GACzB,IAAIniD,EAAOmiD,EAAMniD,YACVmiD,EAAMniD,KACbA,EAAMozD,IAYP,MATqB,iBAATl+D,IACXk+D,EAAU9Q,EACVA,EAAaptD,EACbA,OAAOjL,GAEHq4D,GACJl2D,KAAK6wB,MAAO/nB,GAAQ,KAAM,IAGpB9I,KAAKT,MAAM,WACjB,IAAIs2D,GAAU,EACbtrD,EAAgB,MAARzB,GAAgBA,EAAO,aAC/By/D,EAAS9nB,EAAO8nB,OAChB5oE,EAAO21D,EAASjhD,IAAKrU,MAEtB,GAAKuK,EACC5K,EAAM4K,IAAW5K,EAAM4K,GAAQqJ,MACnC00D,EAAW3oE,EAAM4K,SAGlB,IAAMA,KAAS5K,EACTA,EAAM4K,IAAW5K,EAAM4K,GAAQqJ,MAAQiyD,GAAKngE,KAAM6E,IACtD+9D,EAAW3oE,EAAM4K,IAKpB,IAAMA,EAAQg+D,EAAOnnE,OAAQmJ,KACvBg+D,EAAQh+D,GAAQ42C,OAASnhD,MACnB,MAAR8I,GAAgBy/D,EAAQh+D,GAAQsmB,QAAU/nB,IAE5Cy/D,EAAQh+D,GAAQ68D,KAAKxzD,KAAMozD,GAC3BnR,GAAU,EACV0S,EAAOzsD,OAAQvR,EAAO,KAOnBsrD,GAAYmR,GAChBvmB,EAAOoV,QAAS71D,KAAM8I,OAIzBshB,OAAQ,SAAUthB,GAIjB,OAHc,IAATA,IACJA,EAAOA,GAAQ,MAET9I,KAAKT,MAAM,WACjB,IAAIgL,EACH5K,EAAO21D,EAASjhD,IAAKrU,MACrB6wB,EAAQlxB,EAAMmJ,EAAO,SACrBitD,EAAQp2D,EAAMmJ,EAAO,cACrBy/D,EAAS9nB,EAAO8nB,OAChBnnE,EAASyvB,EAAQA,EAAMzvB,OAAS,EAajC,IAVAzB,EAAKyqB,QAAS,EAGdq2B,EAAO5vB,MAAO7wB,KAAM8I,EAAM,IAErBitD,GAASA,EAAMniD,MACnBmiD,EAAMniD,KAAK5R,KAAMhC,MAAM,GAIlBuK,EAAQg+D,EAAOnnE,OAAQmJ,KACvBg+D,EAAQh+D,GAAQ42C,OAASnhD,MAAQuoE,EAAQh+D,GAAQsmB,QAAU/nB,IAC/Dy/D,EAAQh+D,GAAQ68D,KAAKxzD,MAAM,GAC3B20D,EAAOzsD,OAAQvR,EAAO,IAKxB,IAAMA,EAAQ,EAAGA,EAAQnJ,EAAQmJ,IAC3BsmB,EAAOtmB,IAAWsmB,EAAOtmB,GAAQ6f,QACrCyG,EAAOtmB,GAAQ6f,OAAOpoB,KAAMhC,aAKvBL,EAAKyqB,aAKfq2B,EAAOlhD,KAAM,CAAE,SAAU,OAAQ,SAAU,SAAU6c,EAAI9b,GACxD,IAAIkoE,EAAQ/nB,EAAOh/C,GAAInB,GACvBmgD,EAAOh/C,GAAInB,GAAS,SAAU0nE,EAAO7D,EAAQ52D,GAC5C,OAAgB,MAATy6D,GAAkC,kBAAVA,EAC9BQ,EAAMnmE,MAAOrC,KAAMiC,WACnBjC,KAAKmoE,QAASjC,GAAO5lE,GAAM,GAAQ0nE,EAAO7D,EAAQ52D,OAKrDkzC,EAAOlhD,KAAM,CACZsU,UAAWqyD,GAAO,QAClBjyD,QAASiyD,GAAO,QAChBuC,YAAavC,GAAO,UACpBwC,OAAQ,CAAErE,QAAS,QACnBsE,QAAS,CAAEtE,QAAS,QACpBuE,WAAY,CAAEvE,QAAS,YACrB,SAAU/jE,EAAMwzC,GAClB2M,EAAOh/C,GAAInB,GAAS,SAAU0nE,EAAO7D,EAAQ52D,GAC5C,OAAOvN,KAAKmoE,QAASr0B,EAAOk0B,EAAO7D,EAAQ52D,OAI7CkzC,EAAO8nB,OAAS,GAChB9nB,EAAO4kB,GAAGW,KAAO,WAChB,IAAImB,EACH3nE,EAAI,EACJ+oE,EAAS9nB,EAAO8nB,OAIjB,IAFA7C,GAAQx9D,KAAKk0D,MAEL58D,EAAI+oE,EAAOnnE,OAAQ5B,KAC1B2nE,EAAQoB,EAAQ/oE,OAGC+oE,EAAQ/oE,KAAQ2nE,GAChCoB,EAAOzsD,OAAQtc,IAAK,GAIhB+oE,EAAOnnE,QACZq/C,EAAO4kB,GAAGzxD,OAEX8xD,QAAQ7nE,GAGT4iD,EAAO4kB,GAAG8B,MAAQ,SAAUA,GAC3B1mB,EAAO8nB,OAAOh8D,KAAM46D,GACpB1mB,EAAO4kB,GAAGzhD,SAGX68B,EAAO4kB,GAAGU,SAAW,GACrBtlB,EAAO4kB,GAAGzhD,MAAQ,WACZ+hD,KAILA,IAAa,EACbr3C,OAGDmyB,EAAO4kB,GAAGzxD,KAAO,WAChB+xD,GAAa,MAGdllB,EAAO4kB,GAAG4C,OAAS,CAClBY,KAAM,IACNC,KAAM,IAGN1Q,SAAU,KAKX3X,EAAOh/C,GAAG+3C,MAAQ,SAAUuvB,EAAMjgE,GAIjC,OAHAigE,EAAOtoB,EAAO4kB,IAAK5kB,EAAO4kB,GAAG4C,OAAQc,IAAiBA,EACtDjgE,EAAOA,GAAQ,KAER9I,KAAK6wB,MAAO/nB,GAAM,SAAUigC,EAAMgtB,GACxC,IAAInc,EAAUr7C,EAAOqL,WAAYm/B,EAAMggC,GACvChT,EAAMniD,KAAO,WACZrV,EAAO0L,aAAc2vC,QAMxB,WACC,IAAIwB,EAAQ98C,EAASuI,cAAe,SAEnCxH,EADSf,EAASuI,cAAe,UACpBG,YAAa1I,EAASuI,cAAe,WAEnDu0C,EAAMtyC,KAAO,WAIbm3C,EAAQ+oB,QAA0B,KAAhB5tB,EAAM5hC,MAIxBymC,EAAQgpB,YAAc5pE,EAAIqB,UAI1B06C,EAAQ98C,EAASuI,cAAe,UAC1B2S,MAAQ,IACd4hC,EAAMtyC,KAAO,QACbm3C,EAAQipB,WAA6B,MAAhB9tB,EAAM5hC,MApB5B,GAwBA,IAAI2vD,GACHjiB,GAAazG,EAAOl+C,KAAK2kD,WAE1BzG,EAAOh/C,GAAGnC,OAAQ,CACjBjB,KAAM,SAAUiC,EAAMkZ,GACrB,OAAO26C,EAAQn0D,KAAMygD,EAAOpiD,KAAMiC,EAAMkZ,EAAOvX,UAAUb,OAAS,IAGnEqa,WAAY,SAAUnb,GACrB,OAAON,KAAKT,MAAM,WACjBkhD,EAAOhlC,WAAYzb,KAAMM,SAK5BmgD,EAAOnhD,OAAQ,CACdjB,KAAM,SAAU8iD,EAAM7gD,EAAMkZ,GAC3B,IAAIwU,EAAK+nC,EACRqT,EAAQjoB,EAAKhgD,SAGd,GAAe,IAAVioE,GAAyB,IAAVA,GAAyB,IAAVA,EAKnC,YAAkC,IAAtBjoB,EAAKh0B,aACTszB,EAAO9a,KAAMwb,EAAM7gD,EAAMkZ,IAKlB,IAAV4vD,GAAgB3oB,EAAO0O,SAAUhO,KACrC4U,EAAQtV,EAAO4oB,UAAW/oE,EAAKoH,iBAC5B+4C,EAAOl+C,KAAKgV,MAAM+xD,KAAK5jE,KAAMpF,GAAS6oE,QAAWtrE,SAGtCA,IAAV2b,EACW,OAAVA,OACJinC,EAAOhlC,WAAY0lC,EAAM7gD,GAIrBy1D,GAAS,QAASA,QACuBl4D,KAA3CmwB,EAAM+nC,EAAM1qC,IAAK81B,EAAM3nC,EAAOlZ,IACzB0tB,GAGRmzB,EAAKr6C,aAAcxG,EAAMkZ,EAAQ,IAC1BA,GAGHu8C,GAAS,QAASA,GAA+C,QAApC/nC,EAAM+nC,EAAM1hD,IAAK8sC,EAAM7gD,IACjD0tB,EAMM,OAHdA,EAAMyyB,EAAOr7C,KAAK/G,KAAM8iD,EAAM7gD,SAGTzC,EAAYmwB,IAGlCq7C,UAAW,CACVvgE,KAAM,CACLuiB,IAAK,SAAU81B,EAAM3nC,GACpB,IAAMymC,EAAQipB,YAAwB,UAAV1vD,GAC3BgsC,EAAUrE,EAAM,SAAY,CAC5B,IAAIxqC,EAAMwqC,EAAK3nC,MAKf,OAJA2nC,EAAKr6C,aAAc,OAAQ0S,GACtB7C,IACJwqC,EAAK3nC,MAAQ7C,GAEP6C,MAMXiC,WAAY,SAAU0lC,EAAM3nC,GAC3B,IAAIlZ,EACHd,EAAI,EAIJ+pE,EAAY/vD,GAASA,EAAMjC,MAAO84C,GAEnC,GAAKkZ,GAA+B,IAAlBpoB,EAAKhgD,SACtB,KAAUb,EAAOipE,EAAW/pE,MAC3B2hD,EAAKwF,gBAAiBrmD,MAO1B6oE,GAAW,CACV99C,IAAK,SAAU81B,EAAM3nC,EAAOlZ,GAQ3B,OAPe,IAAVkZ,EAGJinC,EAAOhlC,WAAY0lC,EAAM7gD,GAEzB6gD,EAAKr6C,aAAcxG,EAAMA,GAEnBA,IAITmgD,EAAOlhD,KAAMkhD,EAAOl+C,KAAKgV,MAAM+xD,KAAKlqB,OAAO7nC,MAAO,SAAU,SAAU6E,EAAI9b,GACzE,IAAIwzB,EAASozB,GAAY5mD,IAAUmgD,EAAOr7C,KAAK/G,KAE/C6oD,GAAY5mD,GAAS,SAAU6gD,EAAM7gD,EAAMiiD,GAC1C,IAAIv0B,EAAKsrB,EACRkwB,EAAgBlpE,EAAKoH,cAYtB,OAVM66C,IAGLjJ,EAAS4N,GAAYsiB,GACrBtiB,GAAYsiB,GAAkBx7C,EAC9BA,EAAqC,MAA/B8F,EAAQqtB,EAAM7gD,EAAMiiD,GACzBinB,EACA,KACDtiB,GAAYsiB,GAAkBlwB,GAExBtrB,MAOT,IAAIy7C,GAAa,sCAChBC,GAAa,gBAwIb,SAASC,GAAkBnwD,GAE1B,OADaA,EAAMjC,MAAO84C,IAAmB,IAC/B3jD,KAAM,KAItB,SAASk9D,GAAUzoB,GAClB,OAAOA,EAAKh0B,cAAgBg0B,EAAKh0B,aAAc,UAAa,GAG7D,SAAS08C,GAAgBrwD,GACxB,OAAK3X,MAAM6L,QAAS8L,GACZA,EAEc,iBAAVA,GACJA,EAAMjC,MAAO84C,IAEd,GAvJR5P,EAAOh/C,GAAGnC,OAAQ,CACjBqmC,KAAM,SAAUrlC,EAAMkZ,GACrB,OAAO26C,EAAQn0D,KAAMygD,EAAO9a,KAAMrlC,EAAMkZ,EAAOvX,UAAUb,OAAS,IAGnE0oE,WAAY,SAAUxpE,GACrB,OAAON,KAAKT,MAAM,kBACVS,KAAMygD,EAAOspB,QAASzpE,IAAUA,SAK1CmgD,EAAOnhD,OAAQ,CACdqmC,KAAM,SAAUwb,EAAM7gD,EAAMkZ,GAC3B,IAAIwU,EAAK+nC,EACRqT,EAAQjoB,EAAKhgD,SAGd,GAAe,IAAVioE,GAAyB,IAAVA,GAAyB,IAAVA,EAWnC,OAPe,IAAVA,GAAgB3oB,EAAO0O,SAAUhO,KAGrC7gD,EAAOmgD,EAAOspB,QAASzpE,IAAUA,EACjCy1D,EAAQtV,EAAOukB,UAAW1kE,SAGZzC,IAAV2b,EACCu8C,GAAS,QAASA,QACuBl4D,KAA3CmwB,EAAM+nC,EAAM1qC,IAAK81B,EAAM3nC,EAAOlZ,IACzB0tB,EAGCmzB,EAAM7gD,GAASkZ,EAGpBu8C,GAAS,QAASA,GAA+C,QAApC/nC,EAAM+nC,EAAM1hD,IAAK8sC,EAAM7gD,IACjD0tB,EAGDmzB,EAAM7gD,IAGd0kE,UAAW,CACVvZ,SAAU,CACTp3C,IAAK,SAAU8sC,GAMd,IAAI6oB,EAAWvpB,EAAOr7C,KAAK/G,KAAM8iD,EAAM,YAEvC,OAAK6oB,EACGpiD,SAAUoiD,EAAU,IAI3BP,GAAW/jE,KAAMy7C,EAAKqE,WACtBkkB,GAAWhkE,KAAMy7C,EAAKqE,WACtBrE,EAAKlwC,KAEE,GAGA,KAKX84D,QAAS,CACR,IAAO,UACP,MAAS,eAYL9pB,EAAQgpB,cACbxoB,EAAOukB,UAAUtkE,SAAW,CAC3B2T,IAAK,SAAU8sC,GAId,IAAI78C,EAAS68C,EAAKn0C,WAIlB,OAHK1I,GAAUA,EAAO0I,YACrB1I,EAAO0I,WAAW0+C,cAEZ,MAERrgC,IAAK,SAAU81B,GAId,IAAI78C,EAAS68C,EAAKn0C,WACb1I,IACJA,EAAOonD,cAEFpnD,EAAO0I,YACX1I,EAAO0I,WAAW0+C,kBAOvBjL,EAAOlhD,KAAM,CACZ,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,oBACE,WACFkhD,EAAOspB,QAAS/pE,KAAK0H,eAAkB1H,QA4BxCygD,EAAOh/C,GAAGnC,OAAQ,CACjBsF,SAAU,SAAU4U,GACnB,IAAIywD,EAAYhtD,EAAKitD,EAAUnjE,EAAWvH,EAAG2qE,EAE7C,OAAKz+D,EAAY8N,GACTxZ,KAAKT,MAAM,SAAUsK,GAC3B42C,EAAQzgD,MAAO4E,SAAU4U,EAAMxX,KAAMhC,KAAM6J,EAAG+/D,GAAU5pE,YAI1DiqE,EAAaJ,GAAgBrwD,IAEbpY,OACRpB,KAAKT,MAAM,WAIjB,GAHA2qE,EAAWN,GAAU5pE,MACrBid,EAAwB,IAAlBjd,KAAKmB,UAAoB,IAAMwoE,GAAkBO,GAAa,IAEzD,CACV,IAAM1qE,EAAI,EAAGA,EAAIyqE,EAAW7oE,OAAQ5B,IACnCuH,EAAYkjE,EAAYzqE,GACnByd,EAAIre,QAAS,IAAMmI,EAAY,KAAQ,IAC3CkW,GAAOlW,EAAY,KAKrBojE,EAAaR,GAAkB1sD,GAC1BitD,IAAaC,GACjBnqE,KAAK8G,aAAc,QAASqjE,OAMzBnqE,MAGRkH,YAAa,SAAUsS,GACtB,IAAIywD,EAAYhtD,EAAKitD,EAAUnjE,EAAWvH,EAAG2qE,EAE7C,OAAKz+D,EAAY8N,GACTxZ,KAAKT,MAAM,SAAUsK,GAC3B42C,EAAQzgD,MAAOkH,YAAasS,EAAMxX,KAAMhC,KAAM6J,EAAG+/D,GAAU5pE,WAIvDiC,UAAUb,QAIhB6oE,EAAaJ,GAAgBrwD,IAEbpY,OACRpB,KAAKT,MAAM,WAMjB,GALA2qE,EAAWN,GAAU5pE,MAGrBid,EAAwB,IAAlBjd,KAAKmB,UAAoB,IAAMwoE,GAAkBO,GAAa,IAEzD,CACV,IAAM1qE,EAAI,EAAGA,EAAIyqE,EAAW7oE,OAAQ5B,IAInC,IAHAuH,EAAYkjE,EAAYzqE,GAGhByd,EAAIre,QAAS,IAAMmI,EAAY,MAAS,GAC/CkW,EAAMA,EAAIpe,QAAS,IAAMkI,EAAY,IAAK,KAK5CojE,EAAaR,GAAkB1sD,GAC1BitD,IAAaC,GACjBnqE,KAAK8G,aAAc,QAASqjE,OAMzBnqE,KA/BCA,KAAK3B,KAAM,QAAS,KAkC7B+rE,YAAa,SAAU5wD,EAAO6wD,GAC7B,IAAIJ,EAAYljE,EAAWvH,EAAG8e,EAC7BxV,SAAc0Q,EACd8wD,EAAwB,WAATxhE,GAAqBjH,MAAM6L,QAAS8L,GAEpD,OAAK9N,EAAY8N,GACTxZ,KAAKT,MAAM,SAAUC,GAC3BihD,EAAQzgD,MAAOoqE,YACd5wD,EAAMxX,KAAMhC,KAAMR,EAAGoqE,GAAU5pE,MAAQqqE,GACvCA,MAKsB,kBAAbA,GAA0BC,EAC9BD,EAAWrqE,KAAK4E,SAAU4U,GAAUxZ,KAAKkH,YAAasS,IAG9DywD,EAAaJ,GAAgBrwD,GAEtBxZ,KAAKT,MAAM,WACjB,GAAK+qE,EAKJ,IAFAhsD,EAAOmiC,EAAQzgD,MAETR,EAAI,EAAGA,EAAIyqE,EAAW7oE,OAAQ5B,IACnCuH,EAAYkjE,EAAYzqE,GAGnB8e,EAAK1b,SAAUmE,GACnBuX,EAAKpX,YAAaH,GAElBuX,EAAK1Z,SAAUmC,aAKIlJ,IAAV2b,GAAgC,YAAT1Q,KAClC/B,EAAY6iE,GAAU5pE,QAIrBs1D,EAASjqC,IAAKrrB,KAAM,gBAAiB+G,GAOjC/G,KAAK8G,cACT9G,KAAK8G,aAAc,QAClBC,IAAuB,IAAVyS,EACZ,GACA87C,EAASjhD,IAAKrU,KAAM,kBAAqB,UAO/C4C,SAAU,SAAU89C,GACnB,IAAI35C,EAAWo6C,EACd3hD,EAAI,EAGL,IADAuH,EAAY,IAAM25C,EAAW,IACnBS,EAAOnhD,KAAMR,MACtB,GAAuB,IAAlB2hD,EAAKhgD,WACP,IAAMwoE,GAAkBC,GAAUzoB,IAAW,KAAMviD,QAASmI,IAAe,EAC7E,OAAO,EAIT,OAAO,KAOT,IAAIwjE,GAAU,MAEd9pB,EAAOh/C,GAAGnC,OAAQ,CACjBqX,IAAK,SAAU6C,GACd,IAAIu8C,EAAO/nC,EAAKwwC,EACfrd,EAAOnhD,KAAM,GAEd,OAAMiC,UAAUb,QA0BhBo9D,EAAkB9yD,EAAY8N,GAEvBxZ,KAAKT,MAAM,SAAUC,GAC3B,IAAImX,EAEmB,IAAlB3W,KAAKmB,WAWE,OANXwV,EADI6nD,EACEhlD,EAAMxX,KAAMhC,KAAMR,EAAGihD,EAAQzgD,MAAO2W,OAEpC6C,GAKN7C,EAAM,GAEoB,iBAARA,EAClBA,GAAO,GAEI9U,MAAM6L,QAASiJ,KAC1BA,EAAM8pC,EAAOhrC,IAAKkB,GAAK,SAAU6C,GAChC,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,QAItCu8C,EAAQtV,EAAO+pB,SAAUxqE,KAAK8I,OAAU23C,EAAO+pB,SAAUxqE,KAAKwlD,SAAS99C,iBAGrD,QAASquD,QAA+Cl4D,IAApCk4D,EAAM1qC,IAAKrrB,KAAM2W,EAAK,WAC3D3W,KAAKwZ,MAAQ7C,QAzDTwqC,GACJ4U,EAAQtV,EAAO+pB,SAAUrpB,EAAKr4C,OAC7B23C,EAAO+pB,SAAUrpB,EAAKqE,SAAS99C,iBAG/B,QAASquD,QACgCl4D,KAAvCmwB,EAAM+nC,EAAM1hD,IAAK8sC,EAAM,UAElBnzB,EAMY,iBAHpBA,EAAMmzB,EAAK3nC,OAIHwU,EAAInvB,QAAS0rE,GAAS,IAIhB,MAAPv8C,EAAc,GAAKA,OAG3B,KAyCHyyB,EAAOnhD,OAAQ,CACdkrE,SAAU,CACTzS,OAAQ,CACP1jD,IAAK,SAAU8sC,GAEd,IAAIxqC,EAAM8pC,EAAOr7C,KAAK/G,KAAM8iD,EAAM,SAClC,OAAc,MAAPxqC,EACNA,EAMAgzD,GAAkBlpB,EAAO/1C,KAAMy2C,MAGlC/mC,OAAQ,CACP/F,IAAK,SAAU8sC,GACd,IAAI3nC,EAAOu+C,EAAQv4D,EAClBN,EAAUiiD,EAAKjiD,QACfqL,EAAQ42C,EAAKuK,cACbrxC,EAAoB,eAAd8mC,EAAKr4C,KACX8hC,EAASvwB,EAAM,KAAO,GACtByQ,EAAMzQ,EAAM9P,EAAQ,EAAIrL,EAAQkC,OAUjC,IAPC5B,EADI+K,EAAQ,EACRugB,EAGAzQ,EAAM9P,EAAQ,EAIX/K,EAAIsrB,EAAKtrB,IAKhB,KAJAu4D,EAAS74D,EAASM,IAIJkB,UAAYlB,IAAM+K,KAG7BwtD,EAAO1zD,YACL0zD,EAAO/qD,WAAW3I,WACnBmhD,EAAUuS,EAAO/qD,WAAY,aAAiB,CAMjD,GAHAwM,EAAQinC,EAAQsX,GAASphD,MAGpB0D,EACJ,OAAOb,EAIRoxB,EAAOr+B,KAAMiN,GAIf,OAAOoxB,GAGRvf,IAAK,SAAU81B,EAAM3nC,GAMpB,IALA,IAAIixD,EAAW1S,EACd74D,EAAUiiD,EAAKjiD,QACf0rC,EAAS6V,EAAOqB,UAAWtoC,GAC3Bha,EAAIN,EAAQkC,OAEL5B,OACPu4D,EAAS74D,EAASM,IAINkB,SACX+/C,EAAO5yC,QAAS4yC,EAAO+pB,SAASzS,OAAO1jD,IAAK0jD,GAAUntB,IAAY,KAElE6/B,GAAY,GAUd,OAHMA,IACLtpB,EAAKuK,eAAiB,GAEhB9gB,OAOX6V,EAAOlhD,KAAM,CAAE,QAAS,aAAc,WACrCkhD,EAAO+pB,SAAUxqE,MAAS,CACzBqrB,IAAK,SAAU81B,EAAM3nC,GACpB,GAAK3X,MAAM6L,QAAS8L,GACnB,OAAS2nC,EAAKnkC,QAAUyjC,EAAO5yC,QAAS4yC,EAAQU,GAAOxqC,MAAO6C,IAAW,IAItEymC,EAAQ+oB,UACbvoB,EAAO+pB,SAAUxqE,MAAOqU,IAAM,SAAU8sC,GACvC,OAAwC,OAAjCA,EAAKh0B,aAAc,SAAqB,KAAOg0B,EAAK3nC,WAW9DymC,EAAQyqB,QAAU,cAAensE,EAGjC,IAAIosE,GAAc,kCACjBC,GAA0B,SAAUpjE,GACnCA,EAAEwyD,mBAGJvZ,EAAOnhD,OAAQmhD,EAAOt8B,MAAO,CAE5Bjf,QAAS,SAAUif,EAAOxkB,EAAMwhD,EAAM0pB,GAErC,IAAIrrE,EAAGyd,EAAK9d,EAAK2rE,EAAYC,EAAQzxB,EAAQmZ,EAASuY,EACrDC,EAAY,CAAE9pB,GAAQ7iD,GACtBwK,EAAOg3C,EAAO99C,KAAMmiB,EAAO,QAAWA,EAAMrb,KAAOqb,EACnDk2C,EAAava,EAAO99C,KAAMmiB,EAAO,aAAgBA,EAAM0jC,UAAU7oB,MAAO,KAAQ,GAKjF,GAHA/hB,EAAM+tD,EAAc7rE,EAAMgiD,EAAOA,GAAQ7iD,EAGlB,IAAlB6iD,EAAKhgD,UAAoC,IAAlBggD,EAAKhgD,WAK5BwpE,GAAYjlE,KAAMoD,EAAO23C,EAAOt8B,MAAMq2C,aAItC1xD,EAAKlK,QAAS,MAAS,IAG3By7D,EAAavxD,EAAKk2B,MAAO,KACzBl2B,EAAOuxD,EAAWxoD,QAClBwoD,EAAWrkD,QAEZ+0D,EAASjiE,EAAKlK,QAAS,KAAQ,GAAK,KAAOkK,GAG3Cqb,EAAQA,EAAOs8B,EAAOiB,SACrBv9B,EACA,IAAIs8B,EAAO5zB,MAAO/jB,EAAuB,iBAAVqb,GAAsBA,IAGhD21C,UAAY+Q,EAAe,EAAI,EACrC1mD,EAAM0jC,UAAYwS,EAAW3tD,KAAM,KACnCyX,EAAMo3C,WAAap3C,EAAM0jC,UACxB,IAAIl9C,OAAQ,UAAY0vD,EAAW3tD,KAAM,iBAAoB,WAC7D,KAGDyX,EAAMjiB,YAASrE,EACTsmB,EAAM1c,SACX0c,EAAM1c,OAAS05C,GAIhBxhD,EAAe,MAARA,EACN,CAAEwkB,GACFs8B,EAAOqB,UAAWniD,EAAM,CAAEwkB,IAG3BsuC,EAAUhS,EAAOt8B,MAAMsuC,QAAS3pD,IAAU,GACpC+hE,IAAgBpY,EAAQvtD,UAAmD,IAAxCutD,EAAQvtD,QAAQ7C,MAAO8+C,EAAMxhD,IAAtE,CAMA,IAAMkrE,IAAiBpY,EAAQsJ,WAAa7b,EAAUiB,GAAS,CAM9D,IAJA2pB,EAAarY,EAAQsH,cAAgBjxD,EAC/B6hE,GAAYjlE,KAAMolE,EAAahiE,KACpCmU,EAAMA,EAAIjQ,YAEHiQ,EAAKA,EAAMA,EAAIjQ,WACtBi+D,EAAU1+D,KAAM0Q,GAChB9d,EAAM8d,EAIF9d,KAAUgiD,EAAK4E,eAAiBznD,IACpC2sE,EAAU1+D,KAAMpN,EAAI8oD,aAAe9oD,EAAI+rE,cAAgB3sE,GAMzD,IADAiB,EAAI,GACMyd,EAAMguD,EAAWzrE,QAAY2kB,EAAMk3C,wBAC5C2P,EAAc/tD,EACdkH,EAAMrb,KAAOtJ,EAAI,EAChBsrE,EACArY,EAAQiI,UAAY5xD,GAGrBwwC,GAAWgc,EAASjhD,IAAK4I,EAAK,WAAc8P,OAAO/tB,OAAQ,OAAUmlB,EAAMrb,OAC1EwsD,EAASjhD,IAAK4I,EAAK,YAEnBq8B,EAAOj3C,MAAO4a,EAAKtd,IAIpB25C,EAASyxB,GAAU9tD,EAAK8tD,KACTzxB,EAAOj3C,OAAS4yD,EAAYh4C,KAC1CkH,EAAMjiB,OAASo3C,EAAOj3C,MAAO4a,EAAKtd,IACZ,IAAjBwkB,EAAMjiB,QACViiB,EAAMlc,kBA8CT,OA1CAkc,EAAMrb,KAAOA,EAGP+hE,GAAiB1mD,EAAM83C,sBAEpBxJ,EAAQ2F,WACqC,IAApD3F,EAAQ2F,SAAS/1D,MAAO4oE,EAAUx3C,MAAO9zB,KACzCs1D,EAAY9T,IAIP4pB,GAAUr/D,EAAYy1C,EAAMr4C,MAAao3C,EAAUiB,MAGvDhiD,EAAMgiD,EAAM4pB,MAGX5pB,EAAM4pB,GAAW,MAIlBtqB,EAAOt8B,MAAMq2C,UAAY1xD,EAEpBqb,EAAMk3C,wBACV2P,EAAY3rB,iBAAkBv2C,EAAM8hE,IAGrCzpB,EAAMr4C,KAEDqb,EAAMk3C,wBACV2P,EAAYnX,oBAAqB/qD,EAAM8hE,IAGxCnqB,EAAOt8B,MAAMq2C,eAAY38D,EAEpBsB,IACJgiD,EAAM4pB,GAAW5rE,IAMdglB,EAAMjiB,SAKdipE,SAAU,SAAUriE,EAAMq4C,EAAMh9B,GAC/B,IAAI3c,EAAIi5C,EAAOnhD,OACd,IAAImhD,EAAO5zB,MACX1I,EACA,CACCrb,KAAMA,EACNuzD,aAAa,IAIf5b,EAAOt8B,MAAMjf,QAASsC,EAAG,KAAM25C,MAKjCV,EAAOh/C,GAAGnC,OAAQ,CAEjB4F,QAAS,SAAU4D,EAAMnJ,GACxB,OAAOK,KAAKT,MAAM,WACjBkhD,EAAOt8B,MAAMjf,QAAS4D,EAAMnJ,EAAMK,UAGpCuL,eAAgB,SAAUzC,EAAMnJ,GAC/B,IAAIwhD,EAAOnhD,KAAM,GACjB,GAAKmhD,EACJ,OAAOV,EAAOt8B,MAAMjf,QAAS4D,EAAMnJ,EAAMwhD,GAAM,MAc5ClB,EAAQyqB,SACbjqB,EAAOlhD,KAAM,CAAE+I,MAAO,UAAWmR,KAAM,aAAc,SAAU8jD,EAAMrC,GAGpE,IAAIj9B,EAAU,SAAU9Z,GACvBs8B,EAAOt8B,MAAMgnD,SAAUjQ,EAAK/2C,EAAM1c,OAAQg5C,EAAOt8B,MAAM+2C,IAAK/2C,KAG7Ds8B,EAAOt8B,MAAMsuC,QAASyI,GAAQ,CAC7BN,MAAO,WAIN,IAAIvc,EAAMr+C,KAAK+lD,eAAiB/lD,KAAK1B,UAAY0B,KAChDorE,EAAW9V,EAASnB,OAAQ9V,EAAK6c,GAE5BkQ,GACL/sB,EAAIgB,iBAAkBke,EAAMt/B,GAAS,GAEtCq3B,EAASnB,OAAQ9V,EAAK6c,GAAOkQ,GAAY,GAAM,IAEhD3kE,SAAU,WACT,IAAI43C,EAAMr+C,KAAK+lD,eAAiB/lD,KAAK1B,UAAY0B,KAChDorE,EAAW9V,EAASnB,OAAQ9V,EAAK6c,GAAQ,EAEpCkQ,EAKL9V,EAASnB,OAAQ9V,EAAK6c,EAAKkQ,IAJ3B/sB,EAAIwV,oBAAqB0J,EAAMt/B,GAAS,GACxCq3B,EAAS3vD,OAAQ04C,EAAK6c,SAS3B,IAAI1xC,GAAWjrB,EAAOirB,SAElB42B,GAAQ,CAAE+B,KAAMj6C,KAAKk0D,OAErBiP,GAAS,KAKb5qB,EAAO6qB,SAAW,SAAU3rE,GAC3B,IAAI8qD,EAAK8gB,EACT,IAAM5rE,GAAwB,iBAATA,EACpB,OAAO,KAKR,IACC8qD,GAAM,IAAMlsD,EAAOitE,WAAcC,gBAAiB9rE,EAAM,YACvD,MAAQ6H,IAYV,OAVA+jE,EAAkB9gB,GAAOA,EAAIxE,qBAAsB,eAAiB,GAC9DwE,IAAO8gB,GACZ9qB,EAAO19C,MAAO,iBACbwoE,EACC9qB,EAAOhrC,IAAK81D,EAAgBv4D,YAAY,SAAU/T,GACjD,OAAOA,EAAG2qD,eACPl9C,KAAM,MACV/M,IAGI8qD,GAIR,IACCihB,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCAEhB,SAASC,GAAa5uB,EAAQj8C,EAAK8qE,EAAa17D,GAC/C,IAAI/P,EAEJ,GAAKuB,MAAM6L,QAASzM,GAGnBw/C,EAAOlhD,KAAM0B,GAAK,SAAUzB,EAAGiL,GACzBshE,GAAeL,GAAShmE,KAAMw3C,GAGlC7sC,EAAK6sC,EAAQzyC,GAKbqhE,GACC5uB,EAAS,KAAqB,iBAANzyC,GAAuB,MAALA,EAAYjL,EAAI,IAAO,IACjEiL,EACAshE,EACA17D,WAKG,GAAM07D,GAAiC,WAAlBvrB,EAAQv/C,GAUnCoP,EAAK6sC,EAAQj8C,QAPb,IAAMX,KAAQW,EACb6qE,GAAa5uB,EAAS,IAAM58C,EAAO,IAAKW,EAAKX,GAAQyrE,EAAa17D,GAYrEowC,EAAOurB,MAAQ,SAAUrpE,EAAGopE,GAC3B,IAAI7uB,EACHryC,EAAI,GACJwF,EAAM,SAAU5E,EAAKwgE,GAGpB,IAAIzyD,EAAQ9N,EAAYugE,GACvBA,IACAA,EAEDphE,EAAGA,EAAEzJ,QAAW8qE,mBAAoBzgE,GAAQ,IAC3CygE,mBAA6B,MAAT1yD,EAAgB,GAAKA,IAG5C,GAAU,MAAL7W,EACJ,MAAO,GAIR,GAAKd,MAAM6L,QAAS/K,IAASA,EAAEi+C,SAAWH,EAAOn+C,cAAeK,GAG/D89C,EAAOlhD,KAAMoD,GAAG,WACf0N,EAAKrQ,KAAKM,KAAMN,KAAKwZ,eAOtB,IAAM0jC,KAAUv6C,EACfmpE,GAAa5uB,EAAQv6C,EAAGu6C,GAAU6uB,EAAa17D,GAKjD,OAAOxF,EAAE6B,KAAM,MAGhB+zC,EAAOh/C,GAAGnC,OAAQ,CACjB6sE,UAAW,WACV,OAAO1rB,EAAOurB,MAAOhsE,KAAKosE,mBAE3BA,eAAgB,WACf,OAAOpsE,KAAKyV,KAAK,WAGhB,IAAI6zC,EAAW7I,EAAO9a,KAAM3lC,KAAM,YAClC,OAAOspD,EAAW7I,EAAOqB,UAAWwH,GAAatpD,QAC9CwF,QAAQ,WACX,IAAIsD,EAAO9I,KAAK8I,KAGhB,OAAO9I,KAAKM,OAASmgD,EAAQzgD,MAAO0P,GAAI,cACvCm8D,GAAanmE,KAAM1F,KAAKwlD,YAAeomB,GAAgBlmE,KAAMoD,KAC3D9I,KAAKgd,UAAYy6C,GAAe/xD,KAAMoD,OACtC2M,KAAK,SAAU2G,EAAI+kC,GACtB,IAAIxqC,EAAM8pC,EAAQzgD,MAAO2W,MAEzB,OAAY,MAAPA,EACG,KAGH9U,MAAM6L,QAASiJ,GACZ8pC,EAAOhrC,IAAKkB,GAAK,SAAUA,GACjC,MAAO,CAAErW,KAAM6gD,EAAK7gD,KAAMkZ,MAAO7C,EAAI9X,QAAS8sE,GAAO,YAIhD,CAAErrE,KAAM6gD,EAAK7gD,KAAMkZ,MAAO7C,EAAI9X,QAAS8sE,GAAO,YAClDt3D,SAKN,IACCg4D,GAAM,OACNC,GAAQ,OACRC,GAAa,gBACbC,GAAW,6BAIXC,GAAa,iBACbC,GAAY,QAWZjG,GAAa,GAObkG,GAAa,GAGbC,GAAW,KAAK9iE,OAAQ,KAGxB+iE,GAAevuE,EAASuI,cAAe,KAKxC,SAASimE,GAA6BC,GAGrC,OAAO,SAAUC,EAAoB78D,GAED,iBAAvB68D,IACX78D,EAAO68D,EACPA,EAAqB,KAGtB,IAAIC,EACHztE,EAAI,EACJ0tE,EAAYF,EAAmBtlE,cAAc6P,MAAO84C,IAAmB,GAExE,GAAK3kD,EAAYyE,GAGhB,KAAU88D,EAAWC,EAAW1tE,MAGR,MAAlBytE,EAAU,IACdA,EAAWA,EAASlrE,MAAO,IAAO,KAChCgrE,EAAWE,GAAaF,EAAWE,IAAc,IAAKt8D,QAASR,KAI/D48D,EAAWE,GAAaF,EAAWE,IAAc,IAAK1gE,KAAM4D,IAQnE,SAASg9D,GAA+BJ,EAAW7tE,EAAS6nE,EAAiBqG,GAE5E,IAAIC,EAAY,GACfC,EAAqBP,IAAcJ,GAEpC,SAASY,EAASN,GACjB,IAAIvsE,EAcJ,OAbA2sE,EAAWJ,IAAa,EACxBxsB,EAAOlhD,KAAMwtE,EAAWE,IAAc,IAAI,SAAU57C,EAAGm8C,GACtD,IAAIC,EAAsBD,EAAoBtuE,EAAS6nE,EAAiBqG,GACxE,MAAoC,iBAAxBK,GACVH,GAAqBD,EAAWI,GAKtBH,IACD5sE,EAAW+sE,QADf,GAHNvuE,EAAQguE,UAAUv8D,QAAS88D,GAC3BF,EAASE,IACF,MAKF/sE,EAGR,OAAO6sE,EAASruE,EAAQguE,UAAW,MAAUG,EAAW,MAASE,EAAS,KAM3E,SAASG,GAAYjmE,EAAQrJ,GAC5B,IAAIqN,EAAK+G,EACRm7D,EAAcltB,EAAOmtB,aAAaD,aAAe,GAElD,IAAMliE,KAAOrN,OACQP,IAAfO,EAAKqN,MACPkiE,EAAaliE,GAAQhE,EAAW+K,IAAUA,EAAO,KAAU/G,GAAQrN,EAAKqN,IAO5E,OAJK+G,GACJiuC,EAAOnhD,QAAQ,EAAMmI,EAAQ+K,GAGvB/K,EA/ERolE,GAAa57D,KAAOuY,GAASvY,KAgP7BwvC,EAAOnhD,OAAQ,CAGduuE,OAAQ,EAGRC,aAAc,GACdC,KAAM,GAENH,aAAc,CACbzqE,IAAKqmB,GAASvY,KACdnI,KAAM,MACNklE,QAxRgB,4DAwRQtoE,KAAM8jB,GAASykD,UACvCzyC,QAAQ,EACR0yC,aAAa,EACb55C,OAAO,EACP65C,YAAa,mDAcbC,QAAS,CACR,IAAKxB,GACLliE,KAAM,aACN9E,KAAM,YACN6kD,IAAK,4BACL4jB,KAAM,qCAGP9oE,SAAU,CACTklD,IAAK,UACL7kD,KAAM,SACNyoE,KAAM,YAGPC,eAAgB,CACf7jB,IAAK,cACL//C,KAAM,eACN2jE,KAAM,gBAKPE,WAAY,CAGX,SAAUpkE,OAGV,aAAa,EAGb,YAAagF,KAAKc,MAGlB,WAAYwwC,EAAO6qB,UAOpBqC,YAAa,CACZxqE,KAAK,EACL0c,SAAS,IAOX2uD,UAAW,SAAU/mE,EAAQ5C,GAC5B,OAAOA,EAGN6oE,GAAYA,GAAYjmE,EAAQg5C,EAAOmtB,cAAgB/oE,GAGvD6oE,GAAYjtB,EAAOmtB,aAAcnmE,IAGnCgnE,cAAe3B,GAA6BrG,IAC5CiI,cAAe5B,GAA6BH,IAG5C79D,KAAM,SAAU3L,EAAKjE,GAGA,iBAARiE,IACXjE,EAAUiE,EACVA,OAAMtF,GAIPqB,EAAUA,GAAW,GAErB,IAAIyvE,EAGHC,EAGAC,EACAC,EAGAC,EAGAC,EAGAt5B,EAGAu5B,EAGAzvE,EAGA0vE,EAGArkE,EAAI41C,EAAO+tB,UAAW,GAAItvE,GAG1BiwE,EAAkBtkE,EAAEgV,SAAWhV,EAG/BukE,EAAqBvkE,EAAEgV,UACpBsvD,EAAgBhuE,UAAYguE,EAAgBvuB,QAC9CH,EAAQ0uB,GACR1uB,EAAOt8B,MAGRytC,EAAWnR,EAAOgR,WAClB4d,EAAmB5uB,EAAOiQ,UAAW,eAGrC4e,EAAazkE,EAAEykE,YAAc,GAG7BC,EAAiB,GACjBC,EAAsB,GAGtBC,EAAW,WAGXrC,EAAQ,CACPnZ,WAAY,EAGZjlD,kBAAmB,SAAUvD,GAC5B,IAAI8L,EACJ,GAAKm+B,EAAY,CAChB,IAAMo5B,EAEL,IADAA,EAAkB,GACRv3D,EAAQi1D,GAASxmB,KAAM6oB,IAChCC,EAAiBv3D,EAAO,GAAI7P,cAAgB,MACzConE,EAAiBv3D,EAAO,GAAI7P,cAAgB,MAAS,IACrDoC,OAAQyN,EAAO,IAGpBA,EAAQu3D,EAAiBrjE,EAAI/D,cAAgB,KAE9C,OAAgB,MAAT6P,EAAgB,KAAOA,EAAM7K,KAAM,OAI3CgjE,sBAAuB,WACtB,OAAOh6B,EAAYm5B,EAAwB,MAI5Cc,iBAAkB,SAAUrvE,EAAMkZ,GAMjC,OALkB,MAAbk8B,IACJp1C,EAAOkvE,EAAqBlvE,EAAKoH,eAChC8nE,EAAqBlvE,EAAKoH,gBAAmBpH,EAC9CivE,EAAgBjvE,GAASkZ,GAEnBxZ,MAIR4vE,iBAAkB,SAAU9mE,GAI3B,OAHkB,MAAb4sC,IACJ7qC,EAAEglE,SAAW/mE,GAEP9I,MAIRsvE,WAAY,SAAU75D,GACrB,IAAIgY,EACJ,GAAKhY,EACJ,GAAKigC,EAGJ03B,EAAMzb,OAAQl8C,EAAK23D,EAAMzjE,cAIzB,IAAM8jB,KAAQhY,EACb65D,EAAY7hD,GAAS,CAAE6hD,EAAY7hD,GAAQhY,EAAKgY,IAInD,OAAOztB,MAIR8oB,MAAO,SAAUgnD,GAChB,IAAIC,EAAYD,GAAcL,EAK9B,OAJKd,GACJA,EAAU7lD,MAAOinD,GAElBxhE,EAAM,EAAGwhE,GACF/vE,OAoBV,GAfA4xD,EAAS3jC,QAASm/C,GAKlBviE,EAAE1H,MAAUA,GAAO0H,EAAE1H,KAAOqmB,GAASvY,MAAS,IAC5CpS,QAAS6tE,GAAWljD,GAASykD,SAAW,MAG1CpjE,EAAE/B,KAAO5J,EAAQkD,QAAUlD,EAAQ4J,MAAQ+B,EAAEzI,QAAUyI,EAAE/B,KAGzD+B,EAAEqiE,WAAcriE,EAAEoiE,UAAY,KAAMvlE,cAAc6P,MAAO84C,IAAmB,CAAE,IAGxD,MAAjBxlD,EAAEmlE,YAAsB,CAC5BhB,EAAY1wE,EAASuI,cAAe,KAKpC,IACCmoE,EAAU/9D,KAAOpG,EAAE1H,IAInB6rE,EAAU/9D,KAAO+9D,EAAU/9D,KAC3BpG,EAAEmlE,YAAcnD,GAAaoB,SAAW,KAAOpB,GAAaoD,MAC3DjB,EAAUf,SAAW,KAAOe,EAAUiB,KACtC,MAAQzoE,GAITqD,EAAEmlE,aAAc,GAalB,GARKnlE,EAAElL,MAAQkL,EAAEqjE,aAAiC,iBAAXrjE,EAAElL,OACxCkL,EAAElL,KAAO8gD,EAAOurB,MAAOnhE,EAAElL,KAAMkL,EAAEkhE,cAIlCoB,GAA+B1G,GAAY57D,EAAG3L,EAASkuE,GAGlD13B,EACJ,OAAO03B,EA8ER,IAAM5tE,KAzENyvE,EAAcxuB,EAAOt8B,OAAStZ,EAAE2wB,SAGQ,GAApBilB,EAAOotB,UAC1BptB,EAAOt8B,MAAMjf,QAAS,aAIvB2F,EAAE/B,KAAO+B,EAAE/B,KAAKgsD,cAGhBjqD,EAAEqlE,YAAczD,GAAW/mE,KAAMmF,EAAE/B,MAKnC8lE,EAAW/jE,EAAE1H,IAAItE,QAASytE,GAAO,IAG3BzhE,EAAEqlE,WAwBIrlE,EAAElL,MAAQkL,EAAEqjE,aACoD,KAAzErjE,EAAEsjE,aAAe,IAAKvvE,QAAS,uCACjCiM,EAAElL,KAAOkL,EAAElL,KAAKd,QAASwtE,GAAK,OAvB9B6C,EAAWrkE,EAAE1H,IAAIpB,MAAO6sE,EAASxtE,QAG5ByJ,EAAElL,OAAUkL,EAAEqjE,aAAiC,iBAAXrjE,EAAElL,QAC1CivE,IAAcvD,GAAO3lE,KAAMkpE,GAAa,IAAM,KAAQ/jE,EAAElL,YAGjDkL,EAAElL,OAIO,IAAZkL,EAAE+7C,QACNgoB,EAAWA,EAAS/vE,QAAS0tE,GAAY,MACzC2C,GAAa7D,GAAO3lE,KAAMkpE,GAAa,IAAM,KAAQ,KAASxuB,GAAM+B,OACnE+sB,GAIFrkE,EAAE1H,IAAMyrE,EAAWM,GASfrkE,EAAEslE,aACD1vB,EAAOqtB,aAAcc,IACzBxB,EAAMuC,iBAAkB,oBAAqBlvB,EAAOqtB,aAAcc,IAE9DnuB,EAAOstB,KAAMa,IACjBxB,EAAMuC,iBAAkB,gBAAiBlvB,EAAOstB,KAAMa,MAKnD/jE,EAAElL,MAAQkL,EAAEqlE,aAAgC,IAAlBrlE,EAAEsjE,aAAyBjvE,EAAQivE,cACjEf,EAAMuC,iBAAkB,eAAgB9kE,EAAEsjE,aAI3Cf,EAAMuC,iBACL,SACA9kE,EAAEqiE,UAAW,IAAOriE,EAAEujE,QAASvjE,EAAEqiE,UAAW,IAC3CriE,EAAEujE,QAASvjE,EAAEqiE,UAAW,KACA,MAArBriE,EAAEqiE,UAAW,GAAc,KAAON,GAAW,WAAa,IAC7D/hE,EAAEujE,QAAS,MAIFvjE,EAAEulE,QACZhD,EAAMuC,iBAAkBnwE,EAAGqL,EAAEulE,QAAS5wE,IAIvC,GAAKqL,EAAEwlE,cAC+C,IAAnDxlE,EAAEwlE,WAAWruE,KAAMmtE,EAAiB/B,EAAOviE,IAAiB6qC,GAG9D,OAAO03B,EAAMtkD,QAed,GAXA2mD,EAAW,QAGXJ,EAAiBh/D,IAAKxF,EAAEq8D,UACxBkG,EAAM7+D,KAAM1D,EAAEk8B,SACdqmC,EAAM/9D,KAAMxE,EAAE9H,OAGd4rE,EAAYxB,GAA+BR,GAAY9hE,EAAG3L,EAASkuE,GAK5D,CASN,GARAA,EAAMnZ,WAAa,EAGdgb,GACJG,EAAmBlqE,QAAS,WAAY,CAAEkoE,EAAOviE,IAI7C6qC,EACJ,OAAO03B,EAIHviE,EAAEypB,OAASzpB,EAAE+uC,QAAU,IAC3Bm1B,EAAexwE,EAAOqL,YAAY,WACjCwjE,EAAMtkD,MAAO,aACXje,EAAE+uC,UAGN,IACClE,GAAY,EACZi5B,EAAU2B,KAAMf,EAAgBhhE,GAC/B,MAAQ/G,GAGT,GAAKkuC,EACJ,MAAMluC,EAIP+G,GAAO,EAAG/G,SAhCX+G,GAAO,EAAG,gBAqCX,SAASA,EAAM5E,EAAQ4mE,EAAkBC,EAAWJ,GACnD,IAAIK,EAAW1pC,EAAShkC,EAAO2tE,EAAUC,EACxCb,EAAaS,EAGT76B,IAILA,GAAY,EAGPq5B,GACJxwE,EAAO0L,aAAc8kE,GAKtBJ,OAAY9wE,EAGZgxE,EAAwBuB,GAAW,GAGnChD,EAAMnZ,WAAatqD,EAAS,EAAI,EAAI,EAGpC8mE,EAAY9mE,GAAU,KAAOA,EAAS,KAAkB,MAAXA,EAGxC6mE,IACJE,EA7lBJ,SAA8B7lE,EAAGuiE,EAAOoD,GAOvC,IALA,IAAII,EAAI9nE,EAAM+nE,EAAeC,EAC5BvrE,EAAWsF,EAAEtF,SACb2nE,EAAYriE,EAAEqiE,UAGY,MAAnBA,EAAW,IAClBA,EAAUr7D,aACEhU,IAAP+yE,IACJA,EAAK/lE,EAAEglE,UAAYzC,EAAMp+D,kBAAmB,iBAK9C,GAAK4hE,EACJ,IAAM9nE,KAAQvD,EACb,GAAKA,EAAUuD,IAAUvD,EAAUuD,GAAOpD,KAAMkrE,GAAO,CACtD1D,EAAUv8D,QAAS7H,GACnB,MAMH,GAAKokE,EAAW,KAAOsD,EACtBK,EAAgB3D,EAAW,OACrB,CAGN,IAAMpkE,KAAQ0nE,EAAY,CACzB,IAAMtD,EAAW,IAAOriE,EAAE0jE,WAAYzlE,EAAO,IAAMokE,EAAW,IAAQ,CACrE2D,EAAgB/nE,EAChB,MAEKgoE,IACLA,EAAgBhoE,GAKlB+nE,EAAgBA,GAAiBC,EAMlC,GAAKD,EAIJ,OAHKA,IAAkB3D,EAAW,IACjCA,EAAUv8D,QAASkgE,GAEbL,EAAWK,GA0iBLE,CAAqBlmE,EAAGuiE,EAAOoD,KAIrCC,GACLhwB,EAAO5yC,QAAS,SAAUhD,EAAEqiE,YAAe,GAC3CzsB,EAAO5yC,QAAS,OAAQhD,EAAEqiE,WAAc,IACxCriE,EAAE0jE,WAAY,eAAkB,cAIjCmC,EA9iBH,SAAsB7lE,EAAG6lE,EAAUtD,EAAOqD,GACzC,IAAIO,EAAO1wC,EAAS2wC,EAAM9xE,EAAKuwB,EAC9B6+C,EAAa,GAGbrB,EAAYriE,EAAEqiE,UAAUnrE,QAGzB,GAAKmrE,EAAW,GACf,IAAM+D,KAAQpmE,EAAE0jE,WACfA,EAAY0C,EAAKvpE,eAAkBmD,EAAE0jE,WAAY0C,GAOnD,IAHA3wC,EAAU4sC,EAAUr7D,QAGZyuB,GAcP,GAZKz1B,EAAEyjE,eAAgBhuC,KACtB8sC,EAAOviE,EAAEyjE,eAAgBhuC,IAAcowC,IAIlChhD,GAAQ+gD,GAAa5lE,EAAEqmE,aAC5BR,EAAW7lE,EAAEqmE,WAAYR,EAAU7lE,EAAEoiE,WAGtCv9C,EAAO4Q,EACPA,EAAU4sC,EAAUr7D,QAKnB,GAAiB,MAAZyuB,EAEJA,EAAU5Q,OAGJ,GAAc,MAATA,GAAgBA,IAAS4Q,EAAU,CAM9C,KAHA2wC,EAAO1C,EAAY7+C,EAAO,IAAM4Q,IAAaiuC,EAAY,KAAOjuC,IAI/D,IAAM0wC,KAASzC,EAId,IADApvE,EAAM6xE,EAAMhyC,MAAO,MACT,KAAQsB,IAGjB2wC,EAAO1C,EAAY7+C,EAAO,IAAMvwB,EAAK,KACpCovE,EAAY,KAAOpvE,EAAK,KACb,EAGG,IAAT8xE,EACJA,EAAO1C,EAAYyC,IAGgB,IAAxBzC,EAAYyC,KACvB1wC,EAAUnhC,EAAK,GACf+tE,EAAUv8D,QAASxR,EAAK,KAEzB,MAOJ,IAAc,IAAT8xE,EAGJ,GAAKA,GAAQpmE,EAAEsmE,OACdT,EAAWO,EAAMP,QAEjB,IACCA,EAAWO,EAAMP,GAChB,MAAQlpE,GACT,MAAO,CACN9C,MAAO,cACP3B,MAAOkuE,EAAOzpE,EAAI,sBAAwBkoB,EAAO,OAAS4Q,IASjE,MAAO,CAAE57B,MAAO,UAAW/E,KAAM+wE,GAidpBU,CAAavmE,EAAG6lE,EAAUtD,EAAOqD,GAGvCA,GAGC5lE,EAAEslE,cACNQ,EAAWvD,EAAMp+D,kBAAmB,oBAEnCyxC,EAAOqtB,aAAcc,GAAa+B,IAEnCA,EAAWvD,EAAMp+D,kBAAmB,WAEnCyxC,EAAOstB,KAAMa,GAAa+B,IAKZ,MAAXhnE,GAA6B,SAAXkB,EAAE/B,KACxBgnE,EAAa,YAGS,MAAXnmE,EACXmmE,EAAa,eAIbA,EAAaY,EAAShsE,MACtBqiC,EAAU2pC,EAAS/wE,KAEnB8wE,IADA1tE,EAAQ2tE,EAAS3tE,UAMlBA,EAAQ+sE,GACHnmE,GAAWmmE,IACfA,EAAa,QACRnmE,EAAS,IACbA,EAAS,KAMZyjE,EAAMzjE,OAASA,EACfyjE,EAAM0C,YAAeS,GAAoBT,GAAe,GAGnDW,EACJ7e,EAASiB,YAAasc,EAAiB,CAAEpoC,EAAS+oC,EAAY1C,IAE9Dxb,EAASoB,WAAYmc,EAAiB,CAAE/B,EAAO0C,EAAY/sE,IAI5DqqE,EAAMkC,WAAYA,GAClBA,OAAazxE,EAERoxE,GACJG,EAAmBlqE,QAASurE,EAAY,cAAgB,YACvD,CAAErD,EAAOviE,EAAG4lE,EAAY1pC,EAAUhkC,IAIpCssE,EAAiB7d,SAAU2d,EAAiB,CAAE/B,EAAO0C,IAEhDb,IACJG,EAAmBlqE,QAAS,eAAgB,CAAEkoE,EAAOviE,MAG3C41C,EAAOotB,QAChBptB,EAAOt8B,MAAMjf,QAAS,cAKzB,OAAOkoE,GAGRiE,QAAS,SAAUluE,EAAKxD,EAAM4N,GAC7B,OAAOkzC,EAAOpsC,IAAKlR,EAAKxD,EAAM4N,EAAU,SAGzC+jE,UAAW,SAAUnuE,EAAKoK,GACzB,OAAOkzC,EAAOpsC,IAAKlR,OAAKtF,EAAW0P,EAAU,aAI/CkzC,EAAOlhD,KAAM,CAAE,MAAO,SAAU,SAAU6c,EAAIha,GAC7Cq+C,EAAQr+C,GAAW,SAAUe,EAAKxD,EAAM4N,EAAUzE,GAUjD,OAPK4C,EAAY/L,KAChBmJ,EAAOA,GAAQyE,EACfA,EAAW5N,EACXA,OAAO9B,GAID4iD,EAAO3xC,KAAM2xC,EAAOnhD,OAAQ,CAClC6D,IAAKA,EACL2F,KAAM1G,EACN6qE,SAAUnkE,EACVnJ,KAAMA,EACNonC,QAASx5B,GACPkzC,EAAOn+C,cAAea,IAASA,QAIpCs9C,EAAOguB,eAAe,SAAU5jE,GAC/B,IAAIrL,EACJ,IAAMA,KAAKqL,EAAEulE,QACa,iBAApB5wE,EAAEkI,gBACNmD,EAAEsjE,YAActjE,EAAEulE,QAAS5wE,IAAO,OAMrCihD,EAAOge,SAAW,SAAUt7D,EAAKjE,EAASm/C,GACzC,OAAOoC,EAAO3xC,KAAM,CACnB3L,IAAKA,EAGL2F,KAAM,MACNmkE,SAAU,SACVrmB,OAAO,EACPtyB,OAAO,EACPkH,QAAQ,EAKR+yC,WAAY,CACX,cAAe,cAEhB2C,WAAY,SAAUR,GACrBjwB,EAAOoB,WAAY6uB,EAAUxxE,EAASm/C,OAMzCoC,EAAOh/C,GAAGnC,OAAQ,CACjBiyE,QAAS,SAAU3rE,GAClB,IAAIqzD,EAyBJ,OAvBKj5D,KAAM,KACL0L,EAAY9F,KAChBA,EAAOA,EAAK5D,KAAMhC,KAAM,KAIzBi5D,EAAOxY,EAAQ76C,EAAM5F,KAAM,GAAI+lD,eAAgB3E,GAAI,GAAI/7C,OAAO,GAEzDrF,KAAM,GAAIgN,YACdisD,EAAK1lD,aAAcvT,KAAM,IAG1Bi5D,EAAKxjD,KAAK,WAGT,IAFA,IAAI0rC,EAAOnhD,KAEHmhD,EAAKqwB,mBACZrwB,EAAOA,EAAKqwB,kBAGb,OAAOrwB,KACJ9uC,OAAQrS,OAGNA,MAGRyxE,UAAW,SAAU7rE,GACpB,OAAK8F,EAAY9F,GACT5F,KAAKT,MAAM,SAAUC,GAC3BihD,EAAQzgD,MAAOyxE,UAAW7rE,EAAK5D,KAAMhC,KAAMR,OAItCQ,KAAKT,MAAM,WACjB,IAAI+e,EAAOmiC,EAAQzgD,MAClBuF,EAAW+Y,EAAK/Y,WAEZA,EAASnE,OACbmE,EAASgsE,QAAS3rE,GAGlB0Y,EAAKjM,OAAQzM,OAKhBqzD,KAAM,SAAUrzD,GACf,IAAI8rE,EAAiBhmE,EAAY9F,GAEjC,OAAO5F,KAAKT,MAAM,SAAUC,GAC3BihD,EAAQzgD,MAAOuxE,QAASG,EAAiB9rE,EAAK5D,KAAMhC,KAAMR,GAAMoG,OAIlE+rE,OAAQ,SAAUjxB,GAIjB,OAHA1gD,KAAKsE,OAAQo8C,GAAWz1C,IAAK,QAAS1L,MAAM,WAC3CkhD,EAAQzgD,MAAOuZ,YAAavZ,KAAKgT,eAE3BhT,QAKTygD,EAAOl+C,KAAKC,QAAQ0L,OAAS,SAAUizC,GACtC,OAAQV,EAAOl+C,KAAKC,QAAQ8Z,QAAS6kC,IAEtCV,EAAOl+C,KAAKC,QAAQ8Z,QAAU,SAAU6kC,GACvC,SAAWA,EAAKx5B,aAAew5B,EAAKv0C,cAAgBu0C,EAAK8iB,iBAAiB7iE,SAM3Eq/C,EAAOmtB,aAAagE,IAAM,WACzB,IACC,OAAO,IAAIrzE,EAAOszE,eACjB,MAAQrqE,MAGX,IAAIsqE,GAAmB,CAGrBC,EAAG,IAIHC,KAAM,KAEPC,GAAexxB,EAAOmtB,aAAagE,MAEpC3xB,EAAQiyB,OAASD,IAAkB,oBAAqBA,GACxDhyB,EAAQnxC,KAAOmjE,KAAiBA,GAEhCxxB,EAAOiuB,eAAe,SAAUxvE,GAC/B,IAAIqO,EAAU4kE,EAGd,GAAKlyB,EAAQiyB,MAAQD,KAAiB/yE,EAAQ8wE,YAC7C,MAAO,CACNM,KAAM,SAAUF,EAASlJ,GACxB,IAAI1nE,EACHoyE,EAAM1yE,EAAQ0yE,MAWf,GATAA,EAAI/7D,KACH3W,EAAQ4J,KACR5J,EAAQiE,IACRjE,EAAQo1B,MACRp1B,EAAQkzE,SACRlzE,EAAQ4sD,UAIJ5sD,EAAQmzE,UACZ,IAAM7yE,KAAKN,EAAQmzE,UAClBT,EAAKpyE,GAAMN,EAAQmzE,UAAW7yE,GAmBhC,IAAMA,KAdDN,EAAQ2wE,UAAY+B,EAAIhC,kBAC5BgC,EAAIhC,iBAAkB1wE,EAAQ2wE,UAQzB3wE,EAAQ8wE,aAAgBI,EAAS,sBACtCA,EAAS,oBAAuB,kBAItBA,EACVwB,EAAIjC,iBAAkBnwE,EAAG4wE,EAAS5wE,IAInC+N,EAAW,SAAUzE,GACpB,OAAO,WACDyE,IACJA,EAAW4kE,EAAgBP,EAAIU,OAC9BV,EAAIW,QAAUX,EAAIY,QAAUZ,EAAIa,UAC/Bb,EAAI3yB,mBAAqB,KAEb,UAATn2C,EACJ8oE,EAAI9oD,QACgB,UAAThgB,EAKgB,iBAAf8oE,EAAIjoE,OACfu9D,EAAU,EAAG,SAEbA,EAGC0K,EAAIjoE,OACJioE,EAAI9B,YAIN5I,EACC4K,GAAkBF,EAAIjoE,SAAYioE,EAAIjoE,OACtCioE,EAAI9B,WAK+B,UAAjC8B,EAAIc,cAAgB,SACM,iBAArBd,EAAIe,aACV,CAAEC,OAAQhB,EAAIlB,UACd,CAAEhmE,KAAMknE,EAAIe,cACbf,EAAIlC,4BAQTkC,EAAIU,OAAS/kE,IACb4kE,EAAgBP,EAAIW,QAAUX,EAAIa,UAAYllE,EAAU,cAKnC1P,IAAhB+zE,EAAIY,QACRZ,EAAIY,QAAUL,EAEdP,EAAI3yB,mBAAqB,WAGA,IAAnB2yB,EAAI3d,YAMR11D,EAAOqL,YAAY,WACb2D,GACJ4kE,QAQL5kE,EAAWA,EAAU,SAErB,IAGCqkE,EAAItB,KAAMpxE,EAAQgxE,YAAchxE,EAAQS,MAAQ,MAC/C,MAAQ6H,GAGT,GAAK+F,EACJ,MAAM/F,IAKTshB,MAAO,WACDvb,GACJA,SAWLkzC,EAAOguB,eAAe,SAAU5jE,GAC1BA,EAAEmlE,cACNnlE,EAAEtF,SAASy5C,QAAS,MAKtByB,EAAO+tB,UAAW,CACjBJ,QAAS,CACRpvB,OAAQ,6FAGTz5C,SAAU,CACTy5C,OAAQ,2BAETuvB,WAAY,CACX,cAAe,SAAU7jE,GAExB,OADA+1C,EAAOoB,WAAYn3C,GACZA,MAMV+1C,EAAOguB,cAAe,UAAU,SAAU5jE,QACxBhN,IAAZgN,EAAE+7C,QACN/7C,EAAE+7C,OAAQ,GAEN/7C,EAAEmlE,cACNnlE,EAAE/B,KAAO,UAKX23C,EAAOiuB,cAAe,UAAU,SAAU7jE,GAIxC,IAAIm0C,EAAQzxC,EADb,GAAK1C,EAAEmlE,aAAenlE,EAAEgoE,YAEvB,MAAO,CACNvC,KAAM,SAAUj/C,EAAG61C,GAClBloB,EAASyB,EAAQ,YACfpiD,KAAMwM,EAAEgoE,aAAe,IACvBltC,KAAM,CAAEmtC,QAASjoE,EAAEkoE,cAAe30E,IAAKyM,EAAE1H,MACzCoE,GAAI,aAAcgG,EAAW,SAAUylE,GACvCh0B,EAAOr5C,SACP4H,EAAW,KACNylE,GACJ9L,EAAuB,UAAb8L,EAAIlqE,KAAmB,IAAM,IAAKkqE,EAAIlqE,QAKnDxK,EAASiiD,KAAKv5C,YAAag4C,EAAQ,KAEpCl2B,MAAO,WACDvb,GACJA,SAUL,IAqGKgqD,GArGD0b,GAAe,GAClBC,GAAS,oBAGVzyB,EAAO+tB,UAAW,CACjB2E,MAAO,WACPC,cAAe,WACd,IAAI7lE,EAAW0lE,GAAax/C,OAAWgtB,EAAOiB,QAAU,IAAQtB,GAAM+B,OAEtE,OADAniD,KAAMuN,IAAa,EACZA,KAKTkzC,EAAOguB,cAAe,cAAc,SAAU5jE,EAAGwoE,EAAkBjG,GAElE,IAAIkG,EAAcC,EAAaC,EAC9BC,GAAuB,IAAZ5oE,EAAEsoE,QAAqBD,GAAOxtE,KAAMmF,EAAE1H,KAChD,MACkB,iBAAX0H,EAAElL,MAE6C,KADnDkL,EAAEsjE,aAAe,IACjBvvE,QAAS,sCACXs0E,GAAOxtE,KAAMmF,EAAElL,OAAU,QAI5B,GAAK8zE,GAAiC,UAArB5oE,EAAEqiE,UAAW,GA8D7B,OA3DAoG,EAAezoE,EAAEuoE,cAAgB1nE,EAAYb,EAAEuoE,eAC9CvoE,EAAEuoE,gBACFvoE,EAAEuoE,cAGEK,EACJ5oE,EAAG4oE,GAAa5oE,EAAG4oE,GAAW50E,QAASq0E,GAAQ,KAAOI,IAC/B,IAAZzoE,EAAEsoE,QACbtoE,EAAE1H,MAASkoE,GAAO3lE,KAAMmF,EAAE1H,KAAQ,IAAM,KAAQ0H,EAAEsoE,MAAQ,IAAMG,GAIjEzoE,EAAE0jE,WAAY,eAAkB,WAI/B,OAHMiF,GACL/yB,EAAO19C,MAAOuwE,EAAe,mBAEvBE,EAAmB,IAI3B3oE,EAAEqiE,UAAW,GAAM,OAGnBqG,EAAch1E,EAAQ+0E,GACtB/0E,EAAQ+0E,GAAiB,WACxBE,EAAoBvxE,WAIrBmrE,EAAMzb,QAAQ,gBAGQ9zD,IAAhB01E,EACJ9yB,EAAQliD,GAASurE,WAAYwJ,GAI7B/0E,EAAQ+0E,GAAiBC,EAIrB1oE,EAAGyoE,KAGPzoE,EAAEuoE,cAAgBC,EAAiBD,cAGnCH,GAAa1mE,KAAM+mE,IAIfE,GAAqB9nE,EAAY6nE,IACrCA,EAAaC,EAAmB,IAGjCA,EAAoBD,OAAc11E,KAI5B,YAYToiD,EAAQyzB,qBACHnc,GAAOj5D,EAASq1E,eAAeD,mBAAoB,IAAKnc,MACvDjkD,UAAY,6BACiB,IAA3BikD,GAAKvkD,WAAW5R,QAQxBq/C,EAAO5xC,UAAY,SAAUlP,EAAMkgB,EAAS+zD,GAC3C,MAAqB,iBAATj0E,EACJ,IAEgB,kBAAZkgB,IACX+zD,EAAc/zD,EACdA,GAAU,GAKLA,IAIAogC,EAAQyzB,qBAMZ/jC,GALA9vB,EAAUvhB,EAASq1E,eAAeD,mBAAoB,KAKvC7sE,cAAe,SACzBoK,KAAO3S,EAASkrB,SAASvY,KAC9B4O,EAAQ0gC,KAAKv5C,YAAa2oC,IAE1B9vB,EAAUvhB,GAKZy6D,GAAW6a,GAAe,IAD1Br1C,EAASkxB,EAAWzJ,KAAMrmD,IAKlB,CAAEkgB,EAAQhZ,cAAe03B,EAAQ,MAGzCA,EAASu6B,GAAe,CAAEn5D,GAAQkgB,EAASk5C,GAEtCA,GAAWA,EAAQ33D,QACvBq/C,EAAQsY,GAAUpzD,SAGZ86C,EAAOQ,MAAO,GAAI1iB,EAAOvrB,cAlChC,IAAI28B,EAAMpR,EAAQw6B,GAyCnBtY,EAAOh/C,GAAGq6D,KAAO,SAAU34D,EAAK0wE,EAAQtmE,GACvC,IAAImzC,EAAU53C,EAAM4nE,EACnBpyD,EAAOte,KACPF,EAAMqD,EAAIvE,QAAS,KAsDpB,OApDKkB,GAAO,IACX4gD,EAAWipB,GAAkBxmE,EAAIpB,MAAOjC,IACxCqD,EAAMA,EAAIpB,MAAO,EAAGjC,IAIhB4L,EAAYmoE,IAGhBtmE,EAAWsmE,EACXA,OAASh2E,GAGEg2E,GAA4B,iBAAXA,IAC5B/qE,EAAO,QAIHwV,EAAKld,OAAS,GAClBq/C,EAAO3xC,KAAM,CACZ3L,IAAKA,EAKL2F,KAAMA,GAAQ,MACdmkE,SAAU,OACVttE,KAAMk0E,IACHtlE,MAAM,SAAUokE,GAGnBjC,EAAWzuE,UAEXqc,EAAK1Y,KAAM86C,EAIVD,EAAQ,SAAUpuC,OAAQouC,EAAO5xC,UAAW8jE,IAAiBvtE,KAAMs7C,GAGnEiyB,MAKEhhB,OAAQpkD,GAAY,SAAU6/D,EAAOzjE,GACxC2U,EAAK/e,MAAM,WACVgO,EAASlL,MAAOrC,KAAM0wE,GAAY,CAAEtD,EAAMuF,aAAchpE,EAAQyjE,SAK5DptE,MAMRygD,EAAOl+C,KAAKC,QAAQsxE,SAAW,SAAU3yB,GACxC,OAAOV,EAAOa,KAAMb,EAAO8nB,QAAQ,SAAU9mE,GAC5C,OAAO0/C,IAAS1/C,EAAG0/C,QAChB//C,QAMLq/C,EAAOpgC,OAAS,CACf0zD,UAAW,SAAU5yB,EAAMjiD,EAASM,GACnC,IAAIw0E,EAAaC,EAASC,EAAWC,EAAQC,EAAWC,EACvD/xD,EAAWm+B,EAAOz7C,IAAKm8C,EAAM,YAC7BmzB,EAAU7zB,EAAQU,GAClBrN,EAAQ,GAGS,WAAbxxB,IACJ6+B,EAAKluC,MAAMqP,SAAW,YAGvB8xD,EAAYE,EAAQj0D,SACpB6zD,EAAYzzB,EAAOz7C,IAAKm8C,EAAM,OAC9BkzB,EAAa5zB,EAAOz7C,IAAKm8C,EAAM,SACI,aAAb7+B,GAAwC,UAAbA,KAC9C4xD,EAAYG,GAAaz1E,QAAS,SAAY,GAMhDu1E,GADAH,EAAcM,EAAQhyD,YACDnM,IACrB89D,EAAUD,EAAY99D,OAGtBi+D,EAAS1S,WAAYyS,IAAe,EACpCD,EAAUxS,WAAY4S,IAAgB,GAGlC3oE,EAAYxM,KAGhBA,EAAUA,EAAQ8C,KAAMm/C,EAAM3hD,EAAGihD,EAAOnhD,OAAQ,GAAI80E,KAGjC,MAAfl1E,EAAQiX,MACZ29B,EAAM39B,IAAQjX,EAAQiX,IAAMi+D,EAAUj+D,IAAQg+D,GAE1B,MAAhBj1E,EAAQgX,OACZ49B,EAAM59B,KAAShX,EAAQgX,KAAOk+D,EAAUl+D,KAAS+9D,GAG7C,UAAW/0E,EACfA,EAAQi8C,MAAMn5C,KAAMm/C,EAAMrN,GAG1BwgC,EAAQtvE,IAAK8uC,KAKhB2M,EAAOh/C,GAAGnC,OAAQ,CAGjB+gB,OAAQ,SAAUnhB,GAGjB,GAAK+C,UAAUb,OACd,YAAmBvD,IAAZqB,EACNc,KACAA,KAAKT,MAAM,SAAUC,GACpBihD,EAAOpgC,OAAO0zD,UAAW/zE,KAAMd,EAASM,MAI3C,IAAI+0E,EAAMC,EACTrzB,EAAOnhD,KAAM,GAEd,OAAMmhD,EAQAA,EAAK8iB,iBAAiB7iE,QAK5BmzE,EAAOpzB,EAAKqjB,wBACZgQ,EAAMrzB,EAAK4E,cAAckC,YAClB,CACN9xC,IAAKo+D,EAAKp+D,IAAMq+D,EAAI3tD,YACpB3Q,KAAMq+D,EAAKr+D,KAAOs+D,EAAI5tD,cARf,CAAEzQ,IAAK,EAAGD,KAAM,QATxB,GAuBDoM,SAAU,WACT,GAAMtiB,KAAM,GAAZ,CAIA,IAAIy0E,EAAcp0D,EAAQg+B,EACzB8C,EAAOnhD,KAAM,GACb00E,EAAe,CAAEv+D,IAAK,EAAGD,KAAM,GAGhC,GAAwC,UAAnCuqC,EAAOz7C,IAAKm8C,EAAM,YAGtB9gC,EAAS8gC,EAAKqjB,4BAER,CAON,IANAnkD,EAASrgB,KAAKqgB,SAIdg+B,EAAM8C,EAAK4E,cACX0uB,EAAetzB,EAAKszB,cAAgBp2B,EAAIU,gBAChC01B,IACLA,IAAiBp2B,EAAIkZ,MAAQkd,IAAiBp2B,EAAIU,kBACT,WAA3C0B,EAAOz7C,IAAKyvE,EAAc,aAE1BA,EAAeA,EAAaznE,WAExBynE,GAAgBA,IAAiBtzB,GAAkC,IAA1BszB,EAAatzE,YAG1DuzE,EAAej0B,EAAQg0B,GAAep0D,UACzBlK,KAAOsqC,EAAOz7C,IAAKyvE,EAAc,kBAAkB,GAChEC,EAAax+D,MAAQuqC,EAAOz7C,IAAKyvE,EAAc,mBAAmB,IAKpE,MAAO,CACNt+D,IAAKkK,EAAOlK,IAAMu+D,EAAav+D,IAAMsqC,EAAOz7C,IAAKm8C,EAAM,aAAa,GACpEjrC,KAAMmK,EAAOnK,KAAOw+D,EAAax+D,KAAOuqC,EAAOz7C,IAAKm8C,EAAM,cAAc,MAc1EszB,aAAc,WACb,OAAOz0E,KAAKyV,KAAK,WAGhB,IAFA,IAAIg/D,EAAez0E,KAAKy0E,aAEhBA,GAA2D,WAA3Ch0B,EAAOz7C,IAAKyvE,EAAc,aACjDA,EAAeA,EAAaA,aAG7B,OAAOA,GAAgB11B,SAM1B0B,EAAOlhD,KAAM,CAAEkU,WAAY,cAAeD,UAAW,gBAAiB,SAAUpR,EAAQujC,GACvF,IAAIxvB,EAAM,gBAAkBwvB,EAE5B8a,EAAOh/C,GAAIW,GAAW,SAAUuU,GAC/B,OAAOw9C,EAAQn0D,MAAM,SAAUmhD,EAAM/+C,EAAQuU,GAG5C,IAAI69D,EAOJ,GANKt0B,EAAUiB,GACdqzB,EAAMrzB,EACuB,IAAlBA,EAAKhgD,WAChBqzE,EAAMrzB,EAAK8G,kBAGCpqD,IAAR8Y,EACJ,OAAO69D,EAAMA,EAAK7uC,GAASwb,EAAM/+C,GAG7BoyE,EACJA,EAAIG,SACFx+D,EAAYq+D,EAAI5tD,YAAVjQ,EACPR,EAAMQ,EAAM69D,EAAI3tD,aAIjBs6B,EAAM/+C,GAAWuU,IAEhBvU,EAAQuU,EAAK1U,UAAUb,YAU5Bq/C,EAAOlhD,KAAM,CAAE,MAAO,SAAU,SAAU6c,EAAIupB,GAC7C8a,EAAO2jB,SAAUz+B,GAAS66B,GAAcvgB,EAAQ6hB,eAC/C,SAAU3gB,EAAM+e,GACf,GAAKA,EAIJ,OAHAA,EAAWD,GAAQ9e,EAAMxb,GAGlB85B,GAAU/5D,KAAMw6D,GACtBzf,EAAQU,GAAO7+B,WAAYqjB,GAAS,KACpCu6B,QAQLzf,EAAOlhD,KAAM,CAAEq1E,OAAQ,SAAUC,MAAO,UAAW,SAAUv0E,EAAMwI,GAClE23C,EAAOlhD,KAAM,CACZolE,QAAS,QAAUrkE,EACnB8vD,QAAStnD,EACT,GAAI,QAAUxI,IACZ,SAAUw0E,EAAcC,GAG1Bt0B,EAAOh/C,GAAIszE,GAAa,SAAUrQ,EAAQlrD,GACzC,IAAI46C,EAAYnyD,UAAUb,SAAY0zE,GAAkC,kBAAXpQ,GAC5Df,EAAQmR,KAA6B,IAAXpQ,IAA6B,IAAVlrD,EAAiB,SAAW,UAE1E,OAAO26C,EAAQn0D,MAAM,SAAUmhD,EAAMr4C,EAAM0Q,GAC1C,IAAI6kC,EAEJ,OAAK6B,EAAUiB,GAGyB,IAAhC4zB,EAASn2E,QAAS,SACxBuiD,EAAM,QAAU7gD,GAChB6gD,EAAK7iD,SAASygD,gBAAiB,SAAWz+C,GAIrB,IAAlB6gD,EAAKhgD,UACTk9C,EAAM8C,EAAKpC,gBAIJrlC,KAAKoR,IACXq2B,EAAKoW,KAAM,SAAWj3D,GAAQ+9C,EAAK,SAAW/9C,GAC9C6gD,EAAKoW,KAAM,SAAWj3D,GAAQ+9C,EAAK,SAAW/9C,GAC9C+9C,EAAK,SAAW/9C,UAIDzC,IAAV2b,EAGNinC,EAAOz7C,IAAKm8C,EAAMr4C,EAAM66D,GAGxBljB,EAAOxtC,MAAOkuC,EAAMr4C,EAAM0Q,EAAOmqD,KAChC76D,EAAMsrD,EAAYsQ,OAAS7mE,EAAWu2D,UAM5C3T,EAAOlhD,KAAM,CACZ,YACA,WACA,eACA,YACA,cACA,aACE,SAAU6c,EAAItT,GAChB23C,EAAOh/C,GAAIqH,GAAS,SAAUrH,GAC7B,OAAOzB,KAAKuH,GAAIuB,EAAMrH,OAOxBg/C,EAAOh/C,GAAGnC,OAAQ,CAEjB2F,KAAM,SAAU4mB,EAAOlsB,EAAM8B,GAC5B,OAAOzB,KAAKuH,GAAIskB,EAAO,KAAMlsB,EAAM8B,IAEpCwF,OAAQ,SAAU4kB,EAAOpqB,GACxB,OAAOzB,KAAKF,IAAK+rB,EAAO,KAAMpqB,IAG/BuzE,SAAU,SAAUt0B,EAAU70B,EAAOlsB,EAAM8B,GAC1C,OAAOzB,KAAKuH,GAAIskB,EAAO60B,EAAU/gD,EAAM8B,IAExCwzE,WAAY,SAAUv0B,EAAU70B,EAAOpqB,GAGtC,OAA4B,IAArBQ,UAAUb,OAChBpB,KAAKF,IAAK4gD,EAAU,MACpB1gD,KAAKF,IAAK+rB,EAAO60B,GAAY,KAAMj/C,IAGrCyzE,MAAO,SAAUC,EAAQC,GACxB,OAAOp1E,KAAKkL,WAAYiqE,GAASnqE,WAAYoqE,GAASD,MAIxD10B,EAAOlhD,KACN,wLAE4Dy/B,MAAO,MACnE,SAAU5iB,EAAI9b,GAGbmgD,EAAOh/C,GAAInB,GAAS,SAAUX,EAAM8B,GACnC,OAAOQ,UAAUb,OAAS,EACzBpB,KAAKuH,GAAIjH,EAAM,KAAMX,EAAM8B,GAC3BzB,KAAKkF,QAAS5E,OAYlB,IAAIyjD,GAAQ,sDAMZtD,EAAOz4C,MAAQ,SAAUvG,EAAIoe,GAC5B,IAAI1gB,EAAKyC,EAAMoG,EAUf,GARwB,iBAAZ6X,IACX1gB,EAAMsC,EAAIoe,GACVA,EAAUpe,EACVA,EAAKtC,GAKAuM,EAAYjK,GAalB,OARAG,EAAOG,EAAMC,KAAMC,UAAW,IAC9B+F,EAAQ,WACP,OAAOvG,EAAGY,MAAOwd,GAAW7f,KAAM4B,EAAKkI,OAAQ/H,EAAMC,KAAMC,eAItDkgD,KAAO1gD,EAAG0gD,KAAO1gD,EAAG0gD,MAAQ1B,EAAO0B,OAElCn6C,GAGRy4C,EAAO40B,UAAY,SAAUC,GACvBA,EACJ70B,EAAOsT,YAEPtT,EAAO37C,OAAO,IAGhB27C,EAAO/yC,QAAU7L,MAAM6L,QACvB+yC,EAAO80B,UAAYpmE,KAAKc,MACxBwwC,EAAO+E,SAAWA,EAClB/E,EAAO/0C,WAAaA,EACpB+0C,EAAOP,SAAWA,EAClBO,EAAOsU,UAAYA,EACnBtU,EAAO33C,KAAO03C,EAEdC,EAAO2b,IAAMl0D,KAAKk0D,IAElB3b,EAAO+0B,UAAY,SAAUv0E,GAK5B,IAAI6H,EAAO23C,EAAO33C,KAAM7H,GACxB,OAAkB,WAAT6H,GAA8B,WAATA,KAK5B2sE,MAAOx0E,EAAMwgE,WAAYxgE,KAG5Bw/C,EAAO1uC,KAAO,SAAUrH,GACvB,OAAe,MAARA,EACN,IACEA,EAAO,IAAK7L,QAASklD,GAAO,YAqB9B,KAFqB,EAAF,WACnB,OAAOtD,GACP,QAFiB,OAEjB,aAMF,IAGCi1B,GAAUn3E,EAAOkiD,OAGjBk1B,GAAKp3E,EAAOX,EAwBb,OAtBA6iD,EAAO5tB,WAAa,SAAUrgB,GAS7B,OARKjU,EAAOX,IAAM6iD,IACjBliD,EAAOX,EAAI+3E,IAGPnjE,GAAQjU,EAAOkiD,SAAWA,IAC9BliD,EAAOkiD,OAASi1B,IAGVj1B,QAMiB,IAAbf,IACXnhD,EAAOkiD,OAASliD,EAAOX,EAAI6iD,GAMrBA,M,iBC/uVP,IAAIm1B,EAGJA,EAAI,WACH,OAAO51E,KADJ,GAIJ,IAEC41E,EAAIA,GAAK,IAAIr5B,SAAS,cAAb,GACR,MAAO/0C,GAEc,iBAAXjJ,SAAqBq3E,EAAIr3E,QAOrCb,EAAO2vB,QAAUuoD,G,oBCnBjB,iCAC6B,oBAATt3D,MAAwBA,MAChC/f,OACR8D,EAAQk6C,SAASz6C,UAAUO,MAiB/B,SAASwzE,EAAQ91E,EAAI+1E,GACnB91E,KAAKC,IAAMF,EACXC,KAAK+1E,SAAWD,EAflBzoD,EAAQzjB,WAAa,WACnB,OAAO,IAAIisE,EAAQxzE,EAAML,KAAK4H,WAAYy8C,EAAOpkD,WAAYgI,eAE/DojB,EAAQ3G,YAAc,WACpB,OAAO,IAAImvD,EAAQxzE,EAAML,KAAK0kB,YAAa2/B,EAAOpkD,WAAYqkB,gBAEhE+G,EAAQpjB,aACRojB,EAAQ/G,cAAgB,SAASszB,GAC3BA,GACFA,EAAQo8B,SAQZH,EAAQ/zE,UAAUm0E,MAAQJ,EAAQ/zE,UAAU6iB,IAAM,aAClDkxD,EAAQ/zE,UAAUk0E,MAAQ,WACxBh2E,KAAK+1E,SAAS/zE,KAAKqkD,EAAOrmD,KAAKC,MAIjCotB,EAAQ6oD,OAAS,SAASn6D,EAAMo6D,GAC9BlsE,aAAa8R,EAAKq6D,gBAClBr6D,EAAKs6D,aAAeF,GAGtB9oD,EAAQipD,SAAW,SAASv6D,GAC1B9R,aAAa8R,EAAKq6D,gBAClBr6D,EAAKs6D,cAAgB,GAGvBhpD,EAAQkpD,aAAelpD,EAAQwgD,OAAS,SAAS9xD,GAC/C9R,aAAa8R,EAAKq6D,gBAElB,IAAID,EAAQp6D,EAAKs6D,aACbF,GAAS,IACXp6D,EAAKq6D,eAAiBxsE,YAAW,WAC3BmS,EAAKy6D,YACPz6D,EAAKy6D,eACNL,KAKP,EAAQ,KAIR9oD,EAAQqpB,aAAgC,oBAATp4B,MAAwBA,KAAKo4B,mBAClB,IAAXlb,GAA0BA,EAAOkb,cACxC12C,MAAQA,KAAK02C,aACrCrpB,EAAQmyB,eAAkC,oBAATlhC,MAAwBA,KAAKkhC,qBAClB,IAAXhkB,GAA0BA,EAAOgkB,gBACxCx/C,MAAQA,KAAKw/C,iB,mCC7DvC,IAOIi3B,EACAC,EARAxmD,EAAUxyB,EAAO2vB,QAAU,GAU/B,SAASspD,IACL,MAAM,IAAInpD,MAAM,mCAEpB,SAASopD,IACL,MAAM,IAAIppD,MAAM,qCAsBpB,SAASqpD,EAAWC,GAChB,GAAIL,IAAqB7sE,WAErB,OAAOA,WAAWktE,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqB7sE,WAEhE,OADA6sE,EAAmB7sE,WACZA,WAAWktE,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,GAC/B,MAAMtvE,GACJ,IAEI,OAAOivE,EAAiBz0E,KAAK,KAAM80E,EAAK,GAC1C,MAAMtvE,GAEJ,OAAOivE,EAAiBz0E,KAAKhC,KAAM82E,EAAK,MAvCnD,WACG,IAEQL,EADsB,mBAAf7sE,WACYA,WAEA+sE,EAEzB,MAAOnvE,GACLivE,EAAmBE,EAEvB,IAEQD,EADwB,mBAAjBzsE,aACcA,aAEA2sE,EAE3B,MAAOpvE,GACLkvE,EAAqBE,GAjB7B,GAwEA,IAEIG,EAFAlmD,EAAQ,GACRmmD,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaD,IAGlBC,GAAW,EACPD,EAAa31E,OACbyvB,EAAQkmD,EAAajtE,OAAO+mB,GAE5BomD,GAAc,EAEdpmD,EAAMzvB,QACN+1E,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAIp9B,EAAUi9B,EAAWK,GACzBF,GAAW,EAGX,IADA,IAAI3vC,EAAMxW,EAAMzvB,OACVimC,GAAK,CAGP,IAFA0vC,EAAelmD,EACfA,EAAQ,KACComD,EAAa5vC,GACd0vC,GACAA,EAAaE,GAAYx3B,MAGjCw3B,GAAc,EACd5vC,EAAMxW,EAAMzvB,OAEhB21E,EAAe,KACfC,GAAW,EAnEf,SAAyB/yD,GACrB,GAAIyyD,IAAuBzsE,aAEvB,OAAOA,aAAaga,GAGxB,IAAKyyD,IAAuBE,IAAwBF,IAAuBzsE,aAEvE,OADAysE,EAAqBzsE,aACdA,aAAaga,GAExB,IAEWyyD,EAAmBzyD,GAC5B,MAAOzc,GACL,IAEI,OAAOkvE,EAAmB10E,KAAK,KAAMiiB,GACvC,MAAOzc,GAGL,OAAOkvE,EAAmB10E,KAAKhC,KAAMikB,KAgD7CmzD,CAAgBx9B,IAiBpB,SAASy9B,EAAKP,EAAKl7D,GACf5b,KAAK82E,IAAMA,EACX92E,KAAK4b,MAAQA,EAYjB,SAAS5Y,KA5BTktB,EAAQ0mB,SAAW,SAAUkgC,GACzB,IAAIl1E,EAAO,IAAIC,MAAMI,UAAUb,OAAS,GACxC,GAAIa,UAAUb,OAAS,EACnB,IAAK,IAAI5B,EAAI,EAAGA,EAAIyC,UAAUb,OAAQ5B,IAClCoC,EAAKpC,EAAI,GAAKyC,UAAUzC,GAGhCqxB,EAAMtkB,KAAK,IAAI8qE,EAAKP,EAAKl1E,IACJ,IAAjBivB,EAAMzvB,QAAiB41E,GACvBH,EAAWM,IASnBE,EAAKv1E,UAAU29C,IAAM,WACjBz/C,KAAK82E,IAAIz0E,MAAM,KAAMrC,KAAK4b,QAE9BsU,EAAQxO,MAAQ,UAChBwO,EAAQonD,SAAU,EAClBpnD,EAAQmJ,IAAM,GACdnJ,EAAQqnD,KAAO,GACfrnD,EAAQ1xB,QAAU,GAClB0xB,EAAQytB,SAAW,GAInBztB,EAAQ3oB,GAAKvE,EACbktB,EAAQsnD,YAAcx0E,EACtBktB,EAAQkhC,KAAOpuD,EACfktB,EAAQpwB,IAAMkD,EACdktB,EAAQunD,eAAiBz0E,EACzBktB,EAAQwnD,mBAAqB10E,EAC7BktB,EAAQ8L,KAAOh5B,EACfktB,EAAQynD,gBAAkB30E,EAC1BktB,EAAQ0nD,oBAAsB50E,EAE9BktB,EAAQ2nD,UAAY,SAAUv3E,GAAQ,MAAO,IAE7C4vB,EAAQ4nD,QAAU,SAAUx3E,GACxB,MAAM,IAAIktB,MAAM,qCAGpB0C,EAAQ6nD,IAAM,WAAc,MAAO,KACnC7nD,EAAQ8nD,MAAQ,SAAU50E,GACtB,MAAM,IAAIoqB,MAAM,mCAEpB0C,EAAQ+nD,MAAQ,WAAa,OAAO","file":"assets/js/vendors~app~vendor.b5df3c06cbee9bfca6d2.chunk.js","sourcesContent":["module.exports = global[\"Promise\"] = require(\"-!.\\\\bluebird.js\");","module.exports = global[\"$\"] = require(\"-!E:\\\\bh2\\\\xml-data\\\\build-dir\\\\GRANT-GNTD12-EX\\\\Source\\\\DCIS.GMS\\\\Web.External\\\\node_modules\\\\expose-loader\\\\index.js?jQuery!.\\\\jquery.js\");","/*globals jQuery, define, module, exports, require, window, document, postMessage */\n(function (factory) {\n\t\"use strict\";\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(['jquery'], factory);\n\t}\n\telse if(typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = factory(require('jquery'));\n\t}\n\telse {\n\t\tfactory(jQuery);\n\t}\n}(function ($, undefined) {\n\t\"use strict\";\n/*!\n * jsTree 3.3.4\n * http://jstree.com/\n *\n * Copyright (c) 2014 Ivan Bozhanov (http://vakata.com)\n *\n * Licensed same as jquery - under the terms of the MIT License\n * http://www.opensource.org/licenses/mit-license.php\n */\n/*!\n * if using jslint please allow for the jQuery global and use following options:\n * jslint: loopfunc: true, browser: true, ass: true, bitwise: true, continue: true, nomen: true, plusplus: true, regexp: true, unparam: true, todo: true, white: true\n */\n/*jshint -W083 */\n\n\t// prevent another load? maybe there is a better way?\n\tif($.jstree) {\n\t\treturn;\n\t}\n\n\t/**\n\t * ### jsTree core functionality\n\t */\n\n\t// internal variables\n\tvar instance_counter = 0,\n\t\tccp_node = false,\n\t\tccp_mode = false,\n\t\tccp_inst = false,\n\t\tthemes_loaded = [],\n\t\tsrc = $('script:last').attr('src'),\n\t\tdocument = window.document; // local variable is always faster to access then a global\n\n\t/**\n\t * holds all jstree related functions and variables, including the actual class and methods to create, access and manipulate instances.\n\t * @name $.jstree\n\t */\n\t$.jstree = {\n\t\t/**\n\t\t * specifies the jstree version in use\n\t\t * @name $.jstree.version\n\t\t */\n\t\tversion : '3.3.4',\n\t\t/**\n\t\t * holds all the default options used when creating new instances\n\t\t * @name $.jstree.defaults\n\t\t */\n\t\tdefaults : {\n\t\t\t/**\n\t\t\t * configure which plugins will be active on an instance. Should be an array of strings, where each element is a plugin name. The default is `[]`\n\t\t\t * @name $.jstree.defaults.plugins\n\t\t\t */\n\t\t\tplugins : []\n\t\t},\n\t\t/**\n\t\t * stores all loaded jstree plugins (used internally)\n\t\t * @name $.jstree.plugins\n\t\t */\n\t\tplugins : {},\n\t\tpath : src && src.indexOf('/') !== -1 ? src.replace(/\\/[^\\/]+$/,'') : '',\n\t\tidregex : /[\\\\:&!^|()\\[\\]<>@*'+~#\";.,=\\- \\/${}%?`]/g,\n\t\troot : '#'\n\t};\n\t\n\t/**\n\t * creates a jstree instance\n\t * @name $.jstree.create(el [, options])\n\t * @param {DOMElement|jQuery|String} el the element to create the instance on, can be jQuery extended or a selector\n\t * @param {Object} options options for this instance (extends `$.jstree.defaults`)\n\t * @return {jsTree} the new instance\n\t */\n\t$.jstree.create = function (el, options) {\n\t\tvar tmp = new $.jstree.core(++instance_counter),\n\t\t\topt = options;\n\t\toptions = $.extend(true, {}, $.jstree.defaults, options);\n\t\tif(opt && opt.plugins) {\n\t\t\toptions.plugins = opt.plugins;\n\t\t}\n\t\t$.each(options.plugins, function (i, k) {\n\t\t\tif(i !== 'core') {\n\t\t\t\ttmp = tmp.plugin(k, options[k]);\n\t\t\t}\n\t\t});\n\t\t$(el).data('jstree', tmp);\n\t\ttmp.init(el, options);\n\t\treturn tmp;\n\t};\n\t/**\n\t * remove all traces of jstree from the DOM and destroy all instances\n\t * @name $.jstree.destroy()\n\t */\n\t$.jstree.destroy = function () {\n\t\t$('.jstree:jstree').jstree('destroy');\n\t\t$(document).off('.jstree');\n\t};\n\t/**\n\t * the jstree class constructor, used only internally\n\t * @private\n\t * @name $.jstree.core(id)\n\t * @param {Number} id this instance's index\n\t */\n\t$.jstree.core = function (id) {\n\t\tthis._id = id;\n\t\tthis._cnt = 0;\n\t\tthis._wrk = null;\n\t\tthis._data = {\n\t\t\tcore : {\n\t\t\t\tthemes : {\n\t\t\t\t\tname : false,\n\t\t\t\t\tdots : false,\n\t\t\t\t\ticons : false,\n\t\t\t\t\tellipsis : false\n\t\t\t\t},\n\t\t\t\tselected : [],\n\t\t\t\tlast_error : {},\n\t\t\t\tworking : false,\n\t\t\t\tworker_queue : [],\n\t\t\t\tfocused : null\n\t\t\t}\n\t\t};\n\t};\n\t/**\n\t * get a reference to an existing instance\n\t *\n\t * __Examples__\n\t *\n\t *\t// provided a container with an ID of \"tree\", and a nested node with an ID of \"branch\"\n\t *\t// all of there will return the same instance\n\t *\t$.jstree.reference('tree');\n\t *\t$.jstree.reference('#tree');\n\t *\t$.jstree.reference($('#tree'));\n\t *\t$.jstree.reference(document.getElementByID('tree'));\n\t *\t$.jstree.reference('branch');\n\t *\t$.jstree.reference('#branch');\n\t *\t$.jstree.reference($('#branch'));\n\t *\t$.jstree.reference(document.getElementByID('branch'));\n\t *\n\t * @name $.jstree.reference(needle)\n\t * @param {DOMElement|jQuery|String} needle\n\t * @return {jsTree|null} the instance or `null` if not found\n\t */\n\t$.jstree.reference = function (needle) {\n\t\tvar tmp = null,\n\t\t\tobj = null;\n\t\tif(needle && needle.id && (!needle.tagName || !needle.nodeType)) { needle = needle.id; }\n\n\t\tif(!obj || !obj.length) {\n\t\t\ttry { obj = $(needle); } catch (ignore) { }\n\t\t}\n\t\tif(!obj || !obj.length) {\n\t\t\ttry { obj = $('#' + needle.replace($.jstree.idregex,'\\\\$&')); } catch (ignore) { }\n\t\t}\n\t\tif(obj && obj.length && (obj = obj.closest('.jstree')).length && (obj = obj.data('jstree'))) {\n\t\t\ttmp = obj;\n\t\t}\n\t\telse {\n\t\t\t$('.jstree').each(function () {\n\t\t\t\tvar inst = $(this).data('jstree');\n\t\t\t\tif(inst && inst._model.data[needle]) {\n\t\t\t\t\ttmp = inst;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn tmp;\n\t};\n\t/**\n\t * Create an instance, get an instance or invoke a command on a instance.\n\t *\n\t * If there is no instance associated with the current node a new one is created and `arg` is used to extend `$.jstree.defaults` for this new instance. There would be no return value (chaining is not broken).\n\t *\n\t * If there is an existing instance and `arg` is a string the command specified by `arg` is executed on the instance, with any additional arguments passed to the function. If the function returns a value it will be returned (chaining could break depending on function).\n\t *\n\t * If there is an existing instance and `arg` is not a string the instance itself is returned (similar to `$.jstree.reference`).\n\t *\n\t * In any other case - nothing is returned and chaining is not broken.\n\t *\n\t * __Examples__\n\t *\n\t *\t$('#tree1').jstree(); // creates an instance\n\t *\t$('#tree2').jstree({ plugins : [] }); // create an instance with some options\n\t *\t$('#tree1').jstree('open_node', '#branch_1'); // call a method on an existing instance, passing additional arguments\n\t *\t$('#tree2').jstree(); // get an existing instance (or create an instance)\n\t *\t$('#tree2').jstree(true); // get an existing instance (will not create new instance)\n\t *\t$('#branch_1').jstree().select_node('#branch_1'); // get an instance (using a nested element and call a method)\n\t *\n\t * @name $().jstree([arg])\n\t * @param {String|Object} arg\n\t * @return {Mixed}\n\t */\n\t$.fn.jstree = function (arg) {\n\t\t// check for string argument\n\t\tvar is_method\t= (typeof arg === 'string'),\n\t\t\targs\t\t= Array.prototype.slice.call(arguments, 1),\n\t\t\tresult\t\t= null;\n\t\tif(arg === true && !this.length) { return false; }\n\t\tthis.each(function () {\n\t\t\t// get the instance (if there is one) and method (if it exists)\n\t\t\tvar instance = $.jstree.reference(this),\n\t\t\t\tmethod = is_method && instance ? instance[arg] : null;\n\t\t\t// if calling a method, and method is available - execute on the instance\n\t\t\tresult = is_method && method ?\n\t\t\t\tmethod.apply(instance, args) :\n\t\t\t\tnull;\n\t\t\t// if there is no instance and no method is being called - create one\n\t\t\tif(!instance && !is_method && (arg === undefined || $.isPlainObject(arg))) {\n\t\t\t\t$.jstree.create(this, arg);\n\t\t\t}\n\t\t\t// if there is an instance and no method is called - return the instance\n\t\t\tif( (instance && !is_method) || arg === true ) {\n\t\t\t\tresult = instance || false;\n\t\t\t}\n\t\t\t// if there was a method call which returned a result - break and return the value\n\t\t\tif(result !== null && result !== undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\t// if there was a method call with a valid return value - return that, otherwise continue the chain\n\t\treturn result !== null && result !== undefined ?\n\t\t\tresult : this;\n\t};\n\t/**\n\t * used to find elements containing an instance\n\t *\n\t * __Examples__\n\t *\n\t *\t$('div:jstree').each(function () {\n\t *\t\t$(this).jstree('destroy');\n\t *\t});\n\t *\n\t * @name $(':jstree')\n\t * @return {jQuery}\n\t */\n\t$.expr.pseudos.jstree = $.expr.createPseudo(function(search) {\n\t\treturn function(a) {\n\t\t\treturn $(a).hasClass('jstree') &&\n\t\t\t\t$(a).data('jstree') !== undefined;\n\t\t};\n\t});\n\n\t/**\n\t * stores all defaults for the core\n\t * @name $.jstree.defaults.core\n\t */\n\t$.jstree.defaults.core = {\n\t\t/**\n\t\t * data configuration\n\t\t *\n\t\t * If left as `false` the HTML inside the jstree container element is used to populate the tree (that should be an unordered list with list items).\n\t\t *\n\t\t * You can also pass in a HTML string or a JSON array here.\n\t\t *\n\t\t * It is possible to pass in a standard jQuery-like AJAX config and jstree will automatically determine if the response is JSON or HTML and use that to populate the tree.\n\t\t * In addition to the standard jQuery ajax options here you can suppy functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node is being loaded, the return value of those functions will be used.\n\t\t *\n\t\t * The last option is to specify a function, that function will receive the node being loaded as argument and a second param which is a function which should be called with the result.\n\t\t *\n\t\t * __Examples__\n\t\t *\n\t\t *\t// AJAX\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'data' : {\n\t\t *\t\t\t\t'url' : '/get/children/',\n\t\t *\t\t\t\t'data' : function (node) {\n\t\t *\t\t\t\t\treturn { 'id' : node.id };\n\t\t *\t\t\t\t}\n\t\t *\t\t\t}\n\t\t *\t\t});\n\t\t *\n\t\t *\t// direct data\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'data' : [\n\t\t *\t\t\t\t'Simple root node',\n\t\t *\t\t\t\t{\n\t\t *\t\t\t\t\t'id' : 'node_2',\n\t\t *\t\t\t\t\t'text' : 'Root node with options',\n\t\t *\t\t\t\t\t'state' : { 'opened' : true, 'selected' : true },\n\t\t *\t\t\t\t\t'children' : [ { 'text' : 'Child 1' }, 'Child 2']\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\t *\t// function\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'data' : function (obj, callback) {\n\t\t *\t\t\t\tcallback.call(this, ['Root 1', 'Root 2']);\n\t\t *\t\t\t}\n\t\t *\t\t});\n\t\t *\n\t\t * @name $.jstree.defaults.core.data\n\t\t */\n\t\tdata\t\t\t: false,\n\t\t/**\n\t\t * configure the various strings used throughout the tree\n\t\t *\n\t\t * You can use an object where the key is the string you need to replace and the value is your replacement.\n\t\t * Another option is to specify a function which will be called with an argument of the needed string and should return the replacement.\n\t\t * If left as `false` no replacement is made.\n\t\t *\n\t\t * __Examples__\n\t\t *\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'strings' : {\n\t\t *\t\t\t\t'Loading ...' : 'Please wait ...'\n\t\t *\t\t\t}\n\t\t *\t\t}\n\t\t *\t});\n\t\t *\n\t\t * @name $.jstree.defaults.core.strings\n\t\t */\n\t\tstrings\t\t\t: false,\n\t\t/**\n\t\t * determines what happens when a user tries to modify the structure of the tree\n\t\t * If left as `false` all operations like create, rename, delete, move or copy are prevented.\n\t\t * You can set this to `true` to allow all interactions or use a function to have better control.\n\t\t *\n\t\t * __Examples__\n\t\t *\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'check_callback' : function (operation, node, node_parent, node_position, more) {\n\t\t *\t\t\t\t// operation can be 'create_node', 'rename_node', 'delete_node', 'move_node', 'copy_node' or 'edit'\n\t\t *\t\t\t\t// in case of 'rename_node' node_position is filled with the new node name\n\t\t *\t\t\t\treturn operation === 'rename_node' ? true : false;\n\t\t *\t\t\t}\n\t\t *\t\t}\n\t\t *\t});\n\t\t *\n\t\t * @name $.jstree.defaults.core.check_callback\n\t\t */\n\t\tcheck_callback\t: false,\n\t\t/**\n\t\t * a callback called with a single object parameter in the instance's scope when something goes wrong (operation prevented, ajax failed, etc)\n\t\t * @name $.jstree.defaults.core.error\n\t\t */\n\t\terror\t\t\t: $.noop,\n\t\t/**\n\t\t * the open / close animation duration in milliseconds - set this to `false` to disable the animation (default is `200`)\n\t\t * @name $.jstree.defaults.core.animation\n\t\t */\n\t\tanimation\t\t: 200,\n\t\t/**\n\t\t * a boolean indicating if multiple nodes can be selected\n\t\t * @name $.jstree.defaults.core.multiple\n\t\t */\n\t\tmultiple\t\t: true,\n\t\t/**\n\t\t * theme configuration object\n\t\t * @name $.jstree.defaults.core.themes\n\t\t */\n\t\tthemes\t\t\t: {\n\t\t\t/**\n\t\t\t * the name of the theme to use (if left as `false` the default theme is used)\n\t\t\t * @name $.jstree.defaults.core.themes.name\n\t\t\t */\n\t\t\tname\t\t\t: false,\n\t\t\t/**\n\t\t\t * the URL of the theme's CSS file, leave this as `false` if you have manually included the theme CSS (recommended). You can set this to `true` too which will try to autoload the theme.\n\t\t\t * @name $.jstree.defaults.core.themes.url\n\t\t\t */\n\t\t\turl\t\t\t\t: false,\n\t\t\t/**\n\t\t\t * the location of all jstree themes - only used if `url` is set to `true`\n\t\t\t * @name $.jstree.defaults.core.themes.dir\n\t\t\t */\n\t\t\tdir\t\t\t\t: false,\n\t\t\t/**\n\t\t\t * a boolean indicating if connecting dots are shown\n\t\t\t * @name $.jstree.defaults.core.themes.dots\n\t\t\t */\n\t\t\tdots\t\t\t: true,\n\t\t\t/**\n\t\t\t * a boolean indicating if node icons are shown\n\t\t\t * @name $.jstree.defaults.core.themes.icons\n\t\t\t */\n\t\t\ticons\t\t\t: true,\n\t\t\t/**\n\t\t\t * a boolean indicating if node ellipsis should be shown - this only works with a fixed with on the container\n\t\t\t * @name $.jstree.defaults.core.themes.ellipsis\n\t\t\t */\n\t\t\tellipsis\t\t: false,\n\t\t\t/**\n\t\t\t * a boolean indicating if the tree background is striped\n\t\t\t * @name $.jstree.defaults.core.themes.stripes\n\t\t\t */\n\t\t\tstripes\t\t\t: false,\n\t\t\t/**\n\t\t\t * a string (or boolean `false`) specifying the theme variant to use (if the theme supports variants)\n\t\t\t * @name $.jstree.defaults.core.themes.variant\n\t\t\t */\n\t\t\tvariant\t\t\t: false,\n\t\t\t/**\n\t\t\t * a boolean specifying if a reponsive version of the theme should kick in on smaller screens (if the theme supports it). Defaults to `false`.\n\t\t\t * @name $.jstree.defaults.core.themes.responsive\n\t\t\t */\n\t\t\tresponsive\t\t: false\n\t\t},\n\t\t/**\n\t\t * if left as `true` all parents of all selected nodes will be opened once the tree loads (so that all selected nodes are visible to the user)\n\t\t * @name $.jstree.defaults.core.expand_selected_onload\n\t\t */\n\t\texpand_selected_onload : true,\n\t\t/**\n\t\t * if left as `true` web workers will be used to parse incoming JSON data where possible, so that the UI will not be blocked by large requests. Workers are however about 30% slower. Defaults to `true`\n\t\t * @name $.jstree.defaults.core.worker\n\t\t */\n\t\tworker : true,\n\t\t/**\n\t\t * Force node text to plain text (and escape HTML). Defaults to `false`\n\t\t * @name $.jstree.defaults.core.force_text\n\t\t */\n\t\tforce_text : false,\n\t\t/**\n\t\t * Should the node should be toggled if the text is double clicked . Defaults to `true`\n\t\t * @name $.jstree.defaults.core.dblclick_toggle\n\t\t */\n\t\tdblclick_toggle : true\n\t};\n\t$.jstree.core.prototype = {\n\t\t/**\n\t\t * used to decorate an instance with a plugin. Used internally.\n\t\t * @private\n\t\t * @name plugin(deco [, opts])\n\t\t * @param {String} deco the plugin to decorate with\n\t\t * @param {Object} opts options for the plugin\n\t\t * @return {jsTree}\n\t\t */\n\t\tplugin : function (deco, opts) {\n\t\t\tvar Child = $.jstree.plugins[deco];\n\t\t\tif(Child) {\n\t\t\t\tthis._data[deco] = {};\n\t\t\t\tChild.prototype = this;\n\t\t\t\treturn new Child(opts, this);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t/**\n\t\t * initialize the instance. Used internally.\n\t\t * @private\n\t\t * @name init(el, optons)\n\t\t * @param {DOMElement|jQuery|String} el the element we are transforming\n\t\t * @param {Object} options options for this instance\n\t\t * @trigger init.jstree, loading.jstree, loaded.jstree, ready.jstree, changed.jstree\n\t\t */\n\t\tinit : function (el, options) {\n\t\t\tthis._model = {\n\t\t\t\tdata : {},\n\t\t\t\tchanged : [],\n\t\t\t\tforce_full_redraw : false,\n\t\t\t\tredraw_timeout : false,\n\t\t\t\tdefault_state : {\n\t\t\t\t\tloaded : true,\n\t\t\t\t\topened : false,\n\t\t\t\t\tselected : false,\n\t\t\t\t\tdisabled : false\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis._model.data[$.jstree.root] = {\n\t\t\t\tid : $.jstree.root,\n\t\t\t\tparent : null,\n\t\t\t\tparents : [],\n\t\t\t\tchildren : [],\n\t\t\t\tchildren_d : [],\n\t\t\t\tstate : { loaded : false }\n\t\t\t};\n\n\t\t\tthis.element = $(el).addClass('jstree jstree-' + this._id);\n\t\t\tthis.settings = options;\n\n\t\t\tthis._data.core.ready = false;\n\t\t\tthis._data.core.loaded = false;\n\t\t\tthis._data.core.rtl = (this.element.css(\"direction\") === \"rtl\");\n\t\t\tthis.element[this._data.core.rtl ? 'addClass' : 'removeClass'](\"jstree-rtl\");\n\t\t\tthis.element.attr('role','tree');\n\t\t\tif(this.settings.core.multiple) {\n\t\t\t\tthis.element.attr('aria-multiselectable', true);\n\t\t\t}\n\t\t\tif(!this.element.attr('tabindex')) {\n\t\t\t\tthis.element.attr('tabindex','0');\n\t\t\t}\n\n\t\t\tthis.bind();\n\t\t\t/**\n\t\t\t * triggered after all events are bound\n\t\t\t * @event\n\t\t\t * @name init.jstree\n\t\t\t */\n\t\t\tthis.trigger(\"init\");\n\n\t\t\tthis._data.core.original_container_html = this.element.find(\" > ul > li\").clone(true);\n\t\t\tthis._data.core.original_container_html\n\t\t\t\t.find(\"li\").addBack()\n\t\t\t\t.contents().filter(function() {\n\t\t\t\t\treturn this.nodeType === 3 && (!this.nodeValue || /^\\s+$/.test(this.nodeValue));\n\t\t\t\t})\n\t\t\t\t.remove();\n\t\t\tthis.element.html(\"<\"+\"ul class='jstree-container-ul jstree-children' role='group'><\"+\"li id='j\"+this._id+\"_loading' class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='tree-item'><\"+\"a class='jstree-anchor' href='#'>\" + this.get_string(\"Loading ...\") + \"\");\n\t\t\tthis.element.attr('aria-activedescendant','j' + this._id + '_loading');\n\t\t\tthis._data.core.li_height = this.get_container_ul().children(\"li\").first().outerHeight() || 24;\n\t\t\tthis._data.core.node = this._create_prototype_node();\n\t\t\t/**\n\t\t\t * triggered after the loading text is shown and before loading starts\n\t\t\t * @event\n\t\t\t * @name loading.jstree\n\t\t\t */\n\t\t\tthis.trigger(\"loading\");\n\t\t\tthis.load_node($.jstree.root);\n\t\t},\n\t\t/**\n\t\t * destroy an instance\n\t\t * @name destroy()\n\t\t * @param {Boolean} keep_html if not set to `true` the container will be emptied, otherwise the current DOM elements will be kept intact\n\t\t */\n\t\tdestroy : function (keep_html) {\n\t\t\t/**\n\t\t\t * triggered before the tree is destroyed\n\t\t\t * @event\n\t\t\t * @name destroy.jstree\n\t\t\t */\n\t\t\tthis.trigger(\"destroy\");\n\t\t\tif(this._wrk) {\n\t\t\t\ttry {\n\t\t\t\t\twindow.URL.revokeObjectURL(this._wrk);\n\t\t\t\t\tthis._wrk = null;\n\t\t\t\t}\n\t\t\t\tcatch (ignore) { }\n\t\t\t}\n\t\t\tif(!keep_html) { this.element.empty(); }\n\t\t\tthis.teardown();\n\t\t},\n\t\t/**\n\t\t * Create prototype node\n\t\t */\n\t\t_create_prototype_node : function () {\n\t\t\tvar _node = document.createElement('LI'), _temp1, _temp2;\n\t\t\t_node.setAttribute('role', 'treeitem');\n\t\t\t_temp1 = document.createElement('I');\n\t\t\t_temp1.className = 'jstree-icon jstree-ocl';\n\t\t\t_temp1.setAttribute('role', 'presentation');\n\t\t\t_node.appendChild(_temp1);\n\t\t\t_temp1 = document.createElement('A');\n\t\t\t_temp1.className = 'jstree-anchor';\n\t\t\t_temp1.setAttribute('href','#');\n\t\t\t_temp1.setAttribute('tabindex','-1');\n\t\t\t_temp2 = document.createElement('I');\n\t\t\t_temp2.className = 'jstree-icon jstree-themeicon';\n\t\t\t_temp2.setAttribute('role', 'presentation');\n\t\t\t_temp1.appendChild(_temp2);\n\t\t\t_node.appendChild(_temp1);\n\t\t\t_temp1 = _temp2 = null;\n\n\t\t\treturn _node;\n\t\t},\n\t\t/**\n\t\t * part of the destroying of an instance. Used internally.\n\t\t * @private\n\t\t * @name teardown()\n\t\t */\n\t\tteardown : function () {\n\t\t\tthis.unbind();\n\t\t\tthis.element\n\t\t\t\t.removeClass('jstree')\n\t\t\t\t.removeData('jstree')\n\t\t\t\t.find(\"[class^='jstree']\")\n\t\t\t\t\t.addBack()\n\t\t\t\t\t.attr(\"class\", function () { return this.className.replace(/jstree[^ ]*|$/ig,''); });\n\t\t\tthis.element = null;\n\t\t},\n\t\t/**\n\t\t * bind all events. Used internally.\n\t\t * @private\n\t\t * @name bind()\n\t\t */\n\t\tbind : function () {\n\t\t\tvar word = '',\n\t\t\t\ttout = null,\n\t\t\t\twas_click = 0;\n\t\t\tthis.element\n\t\t\t\t.on(\"dblclick.jstree\", function (e) {\n\t\t\t\t\t\tif(e.target.tagName && e.target.tagName.toLowerCase() === \"input\") { return true; }\n\t\t\t\t\t\tif(document.selection && document.selection.empty) {\n\t\t\t\t\t\t\tdocument.selection.empty();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif(window.getSelection) {\n\t\t\t\t\t\t\t\tvar sel = window.getSelection();\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tsel.removeAllRanges();\n\t\t\t\t\t\t\t\t\tsel.collapse();\n\t\t\t\t\t\t\t\t} catch (ignore) { }\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.on(\"mousedown.jstree\", $.proxy(function (e) {\n\t\t\t\t\t\tif(e.target === this.element[0]) {\n\t\t\t\t\t\t\te.preventDefault(); // prevent losing focus when clicking scroll arrows (FF, Chrome)\n\t\t\t\t\t\t\twas_click = +(new Date()); // ie does not allow to prevent losing focus\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"mousedown.jstree\", \".jstree-ocl\", function (e) {\n\t\t\t\t\t\te.preventDefault(); // prevent any node inside from losing focus when clicking the open/close icon\n\t\t\t\t\t})\n\t\t\t\t.on(\"click.jstree\", \".jstree-ocl\", $.proxy(function (e) {\n\t\t\t\t\t\tthis.toggle_node(e.target);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"dblclick.jstree\", \".jstree-anchor\", $.proxy(function (e) {\n\t\t\t\t\t\tif(e.target.tagName && e.target.tagName.toLowerCase() === \"input\") { return true; }\n\t\t\t\t\t\tif(this.settings.core.dblclick_toggle) {\n\t\t\t\t\t\t\tthis.toggle_node(e.target);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"click.jstree\", \".jstree-anchor\", $.proxy(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tif(e.currentTarget !== document.activeElement) { $(e.currentTarget).focus(); }\n\t\t\t\t\t\tthis.activate_node(e.currentTarget, e);\n\t\t\t\t\t}, this))\n\t\t\t\t.on('keydown.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tif(e.target.tagName && e.target.tagName.toLowerCase() === \"input\") { return true; }\n\t\t\t\t\t\tif(e.which !== 32 && e.which !== 13 && (e.shiftKey || e.ctrlKey || e.altKey || e.metaKey)) { return true; }\n\t\t\t\t\t\tvar o = null;\n\t\t\t\t\t\tif(this._data.core.rtl) {\n\t\t\t\t\t\t\tif(e.which === 37) { e.which = 39; }\n\t\t\t\t\t\t\telse if(e.which === 39) { e.which = 37; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch(e.which) {\n\t\t\t\t\t\t\tcase 32: // aria defines space only with Ctrl\n\t\t\t\t\t\t\t\tif(e.ctrlKey) {\n\t\t\t\t\t\t\t\t\te.type = \"click\";\n\t\t\t\t\t\t\t\t\t$(e.currentTarget).trigger(e);\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\tcase 13: // enter\n\t\t\t\t\t\t\t\te.type = \"click\";\n\t\t\t\t\t\t\t\t$(e.currentTarget).trigger(e);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 37: // left\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tif(this.is_open(e.currentTarget)) {\n\t\t\t\t\t\t\t\t\tthis.close_node(e.currentTarget);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\to = this.get_parent(e.currentTarget);\n\t\t\t\t\t\t\t\t\tif(o && o.id !== $.jstree.root) { this.get_node(o, true).children('.jstree-anchor').focus(); }\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\tcase 38: // up\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this.get_prev_dom(e.currentTarget);\n\t\t\t\t\t\t\t\tif(o && o.length) { o.children('.jstree-anchor').focus(); }\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 39: // right\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tif(this.is_closed(e.currentTarget)) {\n\t\t\t\t\t\t\t\t\tthis.open_node(e.currentTarget, function (o) { this.get_node(o, true).children('.jstree-anchor').focus(); });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (this.is_open(e.currentTarget)) {\n\t\t\t\t\t\t\t\t\to = this.get_node(e.currentTarget, true).children('.jstree-children')[0];\n\t\t\t\t\t\t\t\t\tif(o) { $(this._firstChild(o)).children('.jstree-anchor').focus(); }\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\tcase 40: // down\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this.get_next_dom(e.currentTarget);\n\t\t\t\t\t\t\t\tif(o && o.length) { o.children('.jstree-anchor').focus(); }\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 106: // aria defines * on numpad as open_all - not very common\n\t\t\t\t\t\t\t\tthis.open_all();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 36: // home\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this._firstChild(this.get_container_ul()[0]);\n\t\t\t\t\t\t\t\tif(o) { $(o).children('.jstree-anchor').filter(':visible').focus(); }\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 35: // end\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tthis.element.find('.jstree-anchor').filter(':visible').last().focus();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 113: // f2 - safe to include - if check_callback is false it will fail\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tthis.edit(e.currentTarget);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\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// delete\n\t\t\t\t\t\t\tcase 46:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this.get_node(e.currentTarget);\n\t\t\t\t\t\t\t\tif(o && o.id && o.id !== $.jstree.root) {\n\t\t\t\t\t\t\t\t\to = this.is_selected(o) ? this.get_selected() : o;\n\t\t\t\t\t\t\t\t\tthis.delete_node(o);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"load_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tif(data.status) {\n\t\t\t\t\t\t\tif(data.node.id === $.jstree.root && !this._data.core.loaded) {\n\t\t\t\t\t\t\t\tthis._data.core.loaded = true;\n\t\t\t\t\t\t\t\tif(this._firstChild(this.get_container_ul()[0])) {\n\t\t\t\t\t\t\t\t\tthis.element.attr('aria-activedescendant',this._firstChild(this.get_container_ul()[0]).id);\n\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 * triggered after the root node is loaded for the first time\n\t\t\t\t\t\t\t\t * @event\n\t\t\t\t\t\t\t\t * @name loaded.jstree\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tthis.trigger(\"loaded\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!this._data.core.ready) {\n\t\t\t\t\t\t\t\tsetTimeout($.proxy(function() {\n\t\t\t\t\t\t\t\t\tif(this.element && !this.get_container_ul().find('.jstree-loading').length) {\n\t\t\t\t\t\t\t\t\t\tthis._data.core.ready = true;\n\t\t\t\t\t\t\t\t\t\tif(this._data.core.selected.length) {\n\t\t\t\t\t\t\t\t\t\t\tif(this.settings.core.expand_selected_onload) {\n\t\t\t\t\t\t\t\t\t\t\t\tvar tmp = [], i, j;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(i = 0, j = this._data.core.selected.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttmp = tmp.concat(this._model.data[this._data.core.selected[i]].parents);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\ttmp = $.vakata.array_unique(tmp);\n\t\t\t\t\t\t\t\t\t\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.open_node(tmp[i], false, 0);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tthis.trigger('changed', { 'action' : 'ready', 'selected' : this._data.core.selected });\n\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\t * triggered after all nodes are finished loading\n\t\t\t\t\t\t\t\t\t\t * @event\n\t\t\t\t\t\t\t\t\t\t * @name ready.jstree\n\t\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\t\tthis.trigger(\"ready\");\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}, this), 0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t// quick searching when the tree is focused\n\t\t\t\t.on('keypress.jstree', $.proxy(function (e) {\n\t\t\t\t\t\tif(e.target.tagName && e.target.tagName.toLowerCase() === \"input\") { return true; }\n\t\t\t\t\t\tif(tout) { clearTimeout(tout); }\n\t\t\t\t\t\ttout = setTimeout(function () {\n\t\t\t\t\t\t\tword = '';\n\t\t\t\t\t\t}, 500);\n\n\t\t\t\t\t\tvar chr = String.fromCharCode(e.which).toLowerCase(),\n\t\t\t\t\t\t\tcol = this.element.find('.jstree-anchor').filter(':visible'),\n\t\t\t\t\t\t\tind = col.index(document.activeElement) || 0,\n\t\t\t\t\t\t\tend = false;\n\t\t\t\t\t\tword += chr;\n\n\t\t\t\t\t\t// match for whole word from current node down (including the current node)\n\t\t\t\t\t\tif(word.length > 1) {\n\t\t\t\t\t\t\tcol.slice(ind).each($.proxy(function (i, v) {\n\t\t\t\t\t\t\t\tif($(v).text().toLowerCase().indexOf(word) === 0) {\n\t\t\t\t\t\t\t\t\t$(v).focus();\n\t\t\t\t\t\t\t\t\tend = true;\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this));\n\t\t\t\t\t\t\tif(end) { return; }\n\n\t\t\t\t\t\t\t// match for whole word from the beginning of the tree\n\t\t\t\t\t\t\tcol.slice(0, ind).each($.proxy(function (i, v) {\n\t\t\t\t\t\t\t\tif($(v).text().toLowerCase().indexOf(word) === 0) {\n\t\t\t\t\t\t\t\t\t$(v).focus();\n\t\t\t\t\t\t\t\t\tend = true;\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this));\n\t\t\t\t\t\t\tif(end) { return; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// list nodes that start with that letter (only if word consists of a single char)\n\t\t\t\t\t\tif(new RegExp('^' + chr.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&') + '+$').test(word)) {\n\t\t\t\t\t\t\t// search for the next node starting with that letter\n\t\t\t\t\t\t\tcol.slice(ind + 1).each($.proxy(function (i, v) {\n\t\t\t\t\t\t\t\tif($(v).text().toLowerCase().charAt(0) === chr) {\n\t\t\t\t\t\t\t\t\t$(v).focus();\n\t\t\t\t\t\t\t\t\tend = true;\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this));\n\t\t\t\t\t\t\tif(end) { return; }\n\n\t\t\t\t\t\t\t// search from the beginning\n\t\t\t\t\t\t\tcol.slice(0, ind + 1).each($.proxy(function (i, v) {\n\t\t\t\t\t\t\t\tif($(v).text().toLowerCase().charAt(0) === chr) {\n\t\t\t\t\t\t\t\t\t$(v).focus();\n\t\t\t\t\t\t\t\t\tend = true;\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this));\n\t\t\t\t\t\t\tif(end) { return; }\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t// THEME RELATED\n\t\t\t\t.on(\"init.jstree\", $.proxy(function () {\n\t\t\t\t\t\tvar s = this.settings.core.themes;\n\t\t\t\t\t\tthis._data.core.themes.dots\t\t\t= s.dots;\n\t\t\t\t\t\tthis._data.core.themes.stripes\t\t= s.stripes;\n\t\t\t\t\t\tthis._data.core.themes.icons\t\t= s.icons;\n\t\t\t\t\t\tthis._data.core.themes.ellipsis\t\t= s.ellipsis;\n\t\t\t\t\t\tthis.set_theme(s.name || \"default\", s.url);\n\t\t\t\t\t\tthis.set_theme_variant(s.variant);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"loading.jstree\", $.proxy(function () {\n\t\t\t\t\t\tthis[ this._data.core.themes.dots ? \"show_dots\" : \"hide_dots\" ]();\n\t\t\t\t\t\tthis[ this._data.core.themes.icons ? \"show_icons\" : \"hide_icons\" ]();\n\t\t\t\t\t\tthis[ this._data.core.themes.stripes ? \"show_stripes\" : \"hide_stripes\" ]();\n\t\t\t\t\t\tthis[ this._data.core.themes.ellipsis ? \"show_ellipsis\" : \"hide_ellipsis\" ]();\n\t\t\t\t\t}, this))\n\t\t\t\t.on('blur.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tthis._data.core.focused = null;\n\t\t\t\t\t\t$(e.currentTarget).filter('.jstree-hovered').mouseleave();\n\t\t\t\t\t\tthis.element.attr('tabindex', '0');\n\t\t\t\t\t}, this))\n\t\t\t\t.on('focus.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tvar tmp = this.get_node(e.currentTarget);\n\t\t\t\t\t\tif(tmp && tmp.id) {\n\t\t\t\t\t\t\tthis._data.core.focused = tmp.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.element.find('.jstree-hovered').not(e.currentTarget).mouseleave();\n\t\t\t\t\t\t$(e.currentTarget).mouseenter();\n\t\t\t\t\t\tthis.element.attr('tabindex', '-1');\n\t\t\t\t\t}, this))\n\t\t\t\t.on('focus.jstree', $.proxy(function () {\n\t\t\t\t\t\tif(+(new Date()) - was_click > 500 && !this._data.core.focused) {\n\t\t\t\t\t\t\twas_click = 0;\n\t\t\t\t\t\t\tvar act = this.get_node(this.element.attr('aria-activedescendant'), true);\n\t\t\t\t\t\t\tif(act) {\n\t\t\t\t\t\t\t\tact.find('> .jstree-anchor').focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on('mouseenter.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tthis.hover_node(e.currentTarget);\n\t\t\t\t\t}, this))\n\t\t\t\t.on('mouseleave.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tthis.dehover_node(e.currentTarget);\n\t\t\t\t\t}, this));\n\t\t},\n\t\t/**\n\t\t * part of the destroying of an instance. Used internally.\n\t\t * @private\n\t\t * @name unbind()\n\t\t */\n\t\tunbind : function () {\n\t\t\tthis.element.off('.jstree');\n\t\t\t$(document).off('.jstree-' + this._id);\n\t\t},\n\t\t/**\n\t\t * trigger an event. Used internally.\n\t\t * @private\n\t\t * @name trigger(ev [, data])\n\t\t * @param {String} ev the name of the event to trigger\n\t\t * @param {Object} data additional data to pass with the event\n\t\t */\n\t\ttrigger : function (ev, data) {\n\t\t\tif(!data) {\n\t\t\t\tdata = {};\n\t\t\t}\n\t\t\tdata.instance = this;\n\t\t\tthis.element.triggerHandler(ev.replace('.jstree','') + '.jstree', data);\n\t\t},\n\t\t/**\n\t\t * returns the jQuery extended instance container\n\t\t * @name get_container()\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_container : function () {\n\t\t\treturn this.element;\n\t\t},\n\t\t/**\n\t\t * returns the jQuery extended main UL node inside the instance container. Used internally.\n\t\t * @private\n\t\t * @name get_container_ul()\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_container_ul : function () {\n\t\t\treturn this.element.children(\".jstree-children\").first();\n\t\t},\n\t\t/**\n\t\t * gets string replacements (localization). Used internally.\n\t\t * @private\n\t\t * @name get_string(key)\n\t\t * @param {String} key\n\t\t * @return {String}\n\t\t */\n\t\tget_string : function (key) {\n\t\t\tvar a = this.settings.core.strings;\n\t\t\tif($.isFunction(a)) { return a.call(this, key); }\n\t\t\tif(a && a[key]) { return a[key]; }\n\t\t\treturn key;\n\t\t},\n\t\t/**\n\t\t * gets the first child of a DOM node. Used internally.\n\t\t * @private\n\t\t * @name _firstChild(dom)\n\t\t * @param {DOMElement} dom\n\t\t * @return {DOMElement}\n\t\t */\n\t\t_firstChild : function (dom) {\n\t\t\tdom = dom ? dom.firstChild : null;\n\t\t\twhile(dom !== null && dom.nodeType !== 1) {\n\t\t\t\tdom = dom.nextSibling;\n\t\t\t}\n\t\t\treturn dom;\n\t\t},\n\t\t/**\n\t\t * gets the next sibling of a DOM node. Used internally.\n\t\t * @private\n\t\t * @name _nextSibling(dom)\n\t\t * @param {DOMElement} dom\n\t\t * @return {DOMElement}\n\t\t */\n\t\t_nextSibling : function (dom) {\n\t\t\tdom = dom ? dom.nextSibling : null;\n\t\t\twhile(dom !== null && dom.nodeType !== 1) {\n\t\t\t\tdom = dom.nextSibling;\n\t\t\t}\n\t\t\treturn dom;\n\t\t},\n\t\t/**\n\t\t * gets the previous sibling of a DOM node. Used internally.\n\t\t * @private\n\t\t * @name _previousSibling(dom)\n\t\t * @param {DOMElement} dom\n\t\t * @return {DOMElement}\n\t\t */\n\t\t_previousSibling : function (dom) {\n\t\t\tdom = dom ? dom.previousSibling : null;\n\t\t\twhile(dom !== null && dom.nodeType !== 1) {\n\t\t\t\tdom = dom.previousSibling;\n\t\t\t}\n\t\t\treturn dom;\n\t\t},\n\t\t/**\n\t\t * get the JSON representation of a node (or the actual jQuery extended DOM node) by using any input (child DOM element, ID string, selector, etc)\n\t\t * @name get_node(obj [, as_dom])\n\t\t * @param {mixed} obj\n\t\t * @param {Boolean} as_dom\n\t\t * @return {Object|jQuery}\n\t\t */\n\t\tget_node : function (obj, as_dom) {\n\t\t\tif(obj && obj.id) {\n\t\t\t\tobj = obj.id;\n\t\t\t}\n\t\t\tvar dom;\n\t\t\ttry {\n\t\t\t\tif(this._model.data[obj]) {\n\t\t\t\t\tobj = this._model.data[obj];\n\t\t\t\t}\n\t\t\t\telse if(typeof obj === \"string\" && this._model.data[obj.replace(/^#/, '')]) {\n\t\t\t\t\tobj = this._model.data[obj.replace(/^#/, '')];\n\t\t\t\t}\n\t\t\t\telse if(typeof obj === \"string\" && (dom = $('#' + obj.replace($.jstree.idregex,'\\\\$&'), this.element)).length && this._model.data[dom.closest('.jstree-node').attr('id')]) {\n\t\t\t\t\tobj = this._model.data[dom.closest('.jstree-node').attr('id')];\n\t\t\t\t}\n\t\t\t\telse if((dom = $(obj, this.element)).length && this._model.data[dom.closest('.jstree-node').attr('id')]) {\n\t\t\t\t\tobj = this._model.data[dom.closest('.jstree-node').attr('id')];\n\t\t\t\t}\n\t\t\t\telse if((dom = $(obj, this.element)).length && dom.hasClass('jstree')) {\n\t\t\t\t\tobj = this._model.data[$.jstree.root];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif(as_dom) {\n\t\t\t\t\tobj = obj.id === $.jstree.root ? this.element : $('#' + obj.id.replace($.jstree.idregex,'\\\\$&'), this.element);\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t} catch (ex) { return false; }\n\t\t},\n\t\t/**\n\t\t * get the path to a node, either consisting of node texts, or of node IDs, optionally glued together (otherwise an array)\n\t\t * @name get_path(obj [, glue, ids])\n\t\t * @param {mixed} obj the node\n\t\t * @param {String} glue if you want the path as a string - pass the glue here (for example '/'), if a falsy value is supplied here, an array is returned\n\t\t * @param {Boolean} ids if set to true build the path using ID, otherwise node text is used\n\t\t * @return {mixed}\n\t\t */\n\t\tget_path : function (obj, glue, ids) {\n\t\t\tobj = obj.parents ? obj : this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root || !obj.parents) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar i, j, p = [];\n\t\t\tp.push(ids ? obj.id : obj.text);\n\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\tp.push(ids ? obj.parents[i] : this.get_text(obj.parents[i]));\n\t\t\t}\n\t\t\tp = p.reverse().slice(1);\n\t\t\treturn glue ? p.join(glue) : p;\n\t\t},\n\t\t/**\n\t\t * get the next visible node that is below the `obj` node. If `strict` is set to `true` only sibling nodes are returned.\n\t\t * @name get_next_dom(obj [, strict])\n\t\t * @param {mixed} obj\n\t\t * @param {Boolean} strict\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_next_dom : function (obj, strict) {\n\t\t\tvar tmp;\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(obj[0] === this.element[0]) {\n\t\t\t\ttmp = this._firstChild(this.get_container_ul()[0]);\n\t\t\t\twhile (tmp && tmp.offsetHeight === 0) {\n\t\t\t\t\ttmp = this._nextSibling(tmp);\n\t\t\t\t}\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\tif(!obj || !obj.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(strict) {\n\t\t\t\ttmp = obj[0];\n\t\t\t\tdo {\n\t\t\t\t\ttmp = this._nextSibling(tmp);\n\t\t\t\t} while (tmp && tmp.offsetHeight === 0);\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\tif(obj.hasClass(\"jstree-open\")) {\n\t\t\t\ttmp = this._firstChild(obj.children('.jstree-children')[0]);\n\t\t\t\twhile (tmp && tmp.offsetHeight === 0) {\n\t\t\t\t\ttmp = this._nextSibling(tmp);\n\t\t\t\t}\n\t\t\t\tif(tmp !== null) {\n\t\t\t\t\treturn $(tmp);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = obj[0];\n\t\t\tdo {\n\t\t\t\ttmp = this._nextSibling(tmp);\n\t\t\t} while (tmp && tmp.offsetHeight === 0);\n\t\t\tif(tmp !== null) {\n\t\t\t\treturn $(tmp);\n\t\t\t}\n\t\t\treturn obj.parentsUntil(\".jstree\",\".jstree-node\").nextAll(\".jstree-node:visible\").first();\n\t\t},\n\t\t/**\n\t\t * get the previous visible node that is above the `obj` node. If `strict` is set to `true` only sibling nodes are returned.\n\t\t * @name get_prev_dom(obj [, strict])\n\t\t * @param {mixed} obj\n\t\t * @param {Boolean} strict\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_prev_dom : function (obj, strict) {\n\t\t\tvar tmp;\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(obj[0] === this.element[0]) {\n\t\t\t\ttmp = this.get_container_ul()[0].lastChild;\n\t\t\t\twhile (tmp && tmp.offsetHeight === 0) {\n\t\t\t\t\ttmp = this._previousSibling(tmp);\n\t\t\t\t}\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\tif(!obj || !obj.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(strict) {\n\t\t\t\ttmp = obj[0];\n\t\t\t\tdo {\n\t\t\t\t\ttmp = this._previousSibling(tmp);\n\t\t\t\t} while (tmp && tmp.offsetHeight === 0);\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\ttmp = obj[0];\n\t\t\tdo {\n\t\t\t\ttmp = this._previousSibling(tmp);\n\t\t\t} while (tmp && tmp.offsetHeight === 0);\n\t\t\tif(tmp !== null) {\n\t\t\t\tobj = $(tmp);\n\t\t\t\twhile(obj.hasClass(\"jstree-open\")) {\n\t\t\t\t\tobj = obj.children(\".jstree-children\").first().children(\".jstree-node:visible:last\");\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\ttmp = obj[0].parentNode.parentNode;\n\t\t\treturn tmp && tmp.className && tmp.className.indexOf('jstree-node') !== -1 ? $(tmp) : false;\n\t\t},\n\t\t/**\n\t\t * get the parent ID of a node\n\t\t * @name get_parent(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {String}\n\t\t */\n\t\tget_parent : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn obj.parent;\n\t\t},\n\t\t/**\n\t\t * get a jQuery collection of all the children of a node (node must be rendered)\n\t\t * @name get_children_dom(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_children_dom : function (obj) {\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(obj[0] === this.element[0]) {\n\t\t\t\treturn this.get_container_ul().children(\".jstree-node\");\n\t\t\t}\n\t\t\tif(!obj || !obj.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn obj.children(\".jstree-children\").children(\".jstree-node\");\n\t\t},\n\t\t/**\n\t\t * checks if a node has children\n\t\t * @name is_parent(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_parent : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && (obj.state.loaded === false || obj.children.length > 0);\n\t\t},\n\t\t/**\n\t\t * checks if a node is loaded (its children are available)\n\t\t * @name is_loaded(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_loaded : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state.loaded;\n\t\t},\n\t\t/**\n\t\t * check if a node is currently loading (fetching children)\n\t\t * @name is_loading(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_loading : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state && obj.state.loading;\n\t\t},\n\t\t/**\n\t\t * check if a node is opened\n\t\t * @name is_open(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_open : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state.opened;\n\t\t},\n\t\t/**\n\t\t * check if a node is in a closed state\n\t\t * @name is_closed(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_closed : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && this.is_parent(obj) && !obj.state.opened;\n\t\t},\n\t\t/**\n\t\t * check if a node has no children\n\t\t * @name is_leaf(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_leaf : function (obj) {\n\t\t\treturn !this.is_parent(obj);\n\t\t},\n\t\t/**\n\t\t * loads a node (fetches its children using the `core.data` setting). Multiple nodes can be passed to by using an array.\n\t\t * @name load_node(obj [, callback])\n\t\t * @param {mixed} obj\n\t\t * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives two arguments - the node and a boolean status\n\t\t * @return {Boolean}\n\t\t * @trigger load_node.jstree\n\t\t */\n\t\tload_node : function (obj, callback) {\n\t\t\tvar k, l, i, j, c;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tthis._load_nodes(obj.slice(), callback);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) {\n\t\t\t\tif(callback) { callback.call(this, obj, false); }\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// if(obj.state.loading) { } // the node is already loading - just wait for it to load and invoke callback? but if called implicitly it should be loaded again?\n\t\t\tif(obj.state.loaded) {\n\t\t\t\tobj.state.loaded = false;\n\t\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\t\tthis._model.data[obj.parents[i]].children_d = $.vakata.array_filter(this._model.data[obj.parents[i]].children_d, function (v) {\n\t\t\t\t\t\treturn $.inArray(v, obj.children_d) === -1;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tfor(k = 0, l = obj.children_d.length; k < l; k++) {\n\t\t\t\t\tif(this._model.data[obj.children_d[k]].state.selected) {\n\t\t\t\t\t\tc = true;\n\t\t\t\t\t}\n\t\t\t\t\tdelete this._model.data[obj.children_d[k]];\n\t\t\t\t}\n\t\t\t\tif (c) {\n\t\t\t\t\tthis._data.core.selected = $.vakata.array_filter(this._data.core.selected, function (v) {\n\t\t\t\t\t\treturn $.inArray(v, obj.children_d) === -1;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tobj.children = [];\n\t\t\t\tobj.children_d = [];\n\t\t\t\tif(c) {\n\t\t\t\t\tthis.trigger('changed', { 'action' : 'load_node', 'node' : obj, 'selected' : this._data.core.selected });\n\t\t\t\t}\n\t\t\t}\n\t\t\tobj.state.failed = false;\n\t\t\tobj.state.loading = true;\n\t\t\tthis.get_node(obj, true).addClass(\"jstree-loading\").attr('aria-busy',true);\n\t\t\tthis._load_node(obj, $.proxy(function (status) {\n\t\t\t\tobj = this._model.data[obj.id];\n\t\t\t\tobj.state.loading = false;\n\t\t\t\tobj.state.loaded = status;\n\t\t\t\tobj.state.failed = !obj.state.loaded;\n\t\t\t\tvar dom = this.get_node(obj, true), i = 0, j = 0, m = this._model.data, has_children = false;\n\t\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\t\tif(m[obj.children[i]] && !m[obj.children[i]].state.hidden) {\n\t\t\t\t\t\thas_children = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(obj.state.loaded && dom && dom.length) {\n\t\t\t\t\tdom.removeClass('jstree-closed jstree-open jstree-leaf');\n\t\t\t\t\tif (!has_children) {\n\t\t\t\t\t\tdom.addClass('jstree-leaf');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (obj.id !== '#') {\n\t\t\t\t\t\t\tdom.addClass(obj.state.opened ? 'jstree-open' : 'jstree-closed');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdom.removeClass(\"jstree-loading\").attr('aria-busy',false);\n\t\t\t\t/**\n\t\t\t\t * triggered after a node is loaded\n\t\t\t\t * @event\n\t\t\t\t * @name load_node.jstree\n\t\t\t\t * @param {Object} node the node that was loading\n\t\t\t\t * @param {Boolean} status was the node loaded successfully\n\t\t\t\t */\n\t\t\t\tthis.trigger('load_node', { \"node\" : obj, \"status\" : status });\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback.call(this, obj, status);\n\t\t\t\t}\n\t\t\t}, this));\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * load an array of nodes (will also load unavailable nodes as soon as the appear in the structure). Used internally.\n\t\t * @private\n\t\t * @name _load_nodes(nodes [, callback])\n\t\t * @param {array} nodes\n\t\t * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives one argument - the array passed to _load_nodes\n\t\t */\n\t\t_load_nodes : function (nodes, callback, is_callback, force_reload) {\n\t\t\tvar r = true,\n\t\t\t\tc = function () { this._load_nodes(nodes, callback, true); },\n\t\t\t\tm = this._model.data, i, j, tmp = [];\n\t\t\tfor(i = 0, j = nodes.length; i < j; i++) {\n\t\t\t\tif(m[nodes[i]] && ( (!m[nodes[i]].state.loaded && !m[nodes[i]].state.failed) || (!is_callback && force_reload) )) {\n\t\t\t\t\tif(!this.is_loading(nodes[i])) {\n\t\t\t\t\t\tthis.load_node(nodes[i], c);\n\t\t\t\t\t}\n\t\t\t\t\tr = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(r) {\n\t\t\t\tfor(i = 0, j = nodes.length; i < j; i++) {\n\t\t\t\t\tif(m[nodes[i]] && m[nodes[i]].state.loaded) {\n\t\t\t\t\t\ttmp.push(nodes[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(callback && !callback.done) {\n\t\t\t\t\tcallback.call(this, tmp);\n\t\t\t\t\tcallback.done = true;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * loads all unloaded nodes\n\t\t * @name load_all([obj, callback])\n\t\t * @param {mixed} obj the node to load recursively, omit to load all nodes in the tree\n\t\t * @param {function} callback a function to be executed once loading all the nodes is complete,\n\t\t * @trigger load_all.jstree\n\t\t */\n\t\tload_all : function (obj, callback) {\n\t\t\tif(!obj) { obj = $.jstree.root; }\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tvar to_load = [],\n\t\t\t\tm = this._model.data,\n\t\t\t\tc = m[obj.id].children_d,\n\t\t\t\ti, j;\n\t\t\tif(obj.state && !obj.state.loaded) {\n\t\t\t\tto_load.push(obj.id);\n\t\t\t}\n\t\t\tfor(i = 0, j = c.length; i < j; i++) {\n\t\t\t\tif(m[c[i]] && m[c[i]].state && !m[c[i]].state.loaded) {\n\t\t\t\t\tto_load.push(c[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(to_load.length) {\n\t\t\t\tthis._load_nodes(to_load, function () {\n\t\t\t\t\tthis.load_all(obj, callback);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\t/**\n\t\t\t\t * triggered after a load_all call completes\n\t\t\t\t * @event\n\t\t\t\t * @name load_all.jstree\n\t\t\t\t * @param {Object} node the recursively loaded node\n\t\t\t\t */\n\t\t\t\tif(callback) { callback.call(this, obj); }\n\t\t\t\tthis.trigger('load_all', { \"node\" : obj });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * handles the actual loading of a node. Used only internally.\n\t\t * @private\n\t\t * @name _load_node(obj [, callback])\n\t\t * @param {mixed} obj\n\t\t * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives one argument - a boolean status\n\t\t * @return {Boolean}\n\t\t */\n\t\t_load_node : function (obj, callback) {\n\t\t\tvar s = this.settings.core.data, t;\n\t\t\tvar notTextOrCommentNode = function notTextOrCommentNode () {\n\t\t\t\treturn this.nodeType !== 3 && this.nodeType !== 8;\n\t\t\t};\n\t\t\t// use original HTML\n\t\t\tif(!s) {\n\t\t\t\tif(obj.id === $.jstree.root) {\n\t\t\t\t\treturn this._append_html_data(obj, this._data.core.original_container_html.clone(true), function (status) {\n\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t}\n\t\t\t\t// return callback.call(this, obj.id === $.jstree.root ? this._append_html_data(obj, this._data.core.original_container_html.clone(true)) : false);\n\t\t\t}\n\t\t\tif($.isFunction(s)) {\n\t\t\t\treturn s.call(this, obj, $.proxy(function (d) {\n\t\t\t\t\tif(d === false) {\n\t\t\t\t\t\tcallback.call(this, false);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis[typeof d === 'string' ? '_append_html_data' : '_append_json_data'](obj, typeof d === 'string' ? $($.parseHTML(d)).filter(notTextOrCommentNode) : d, function (status) {\n\t\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t// return d === false ? callback.call(this, false) : callback.call(this, this[typeof d === 'string' ? '_append_html_data' : '_append_json_data'](obj, typeof d === 'string' ? $(d) : d));\n\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(typeof s === 'object') {\n\t\t\t\tif(s.url) {\n\t\t\t\t\ts = $.extend(true, {}, s);\n\t\t\t\t\tif($.isFunction(s.url)) {\n\t\t\t\t\t\ts.url = s.url.call(this, obj);\n\t\t\t\t\t}\n\t\t\t\t\tif($.isFunction(s.data)) {\n\t\t\t\t\t\ts.data = s.data.call(this, obj);\n\t\t\t\t\t}\n\t\t\t\t\treturn $.ajax(s)\n\t\t\t\t\t\t.done($.proxy(function (d,t,x) {\n\t\t\t\t\t\t\t\tvar type = x.getResponseHeader('Content-Type');\n\t\t\t\t\t\t\t\tif((type && type.indexOf('json') !== -1) || typeof d === \"object\") {\n\t\t\t\t\t\t\t\t\treturn this._append_json_data(obj, d, function (status) { callback.call(this, status); });\n\t\t\t\t\t\t\t\t\t//return callback.call(this, this._append_json_data(obj, d));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif((type && type.indexOf('html') !== -1) || typeof d === \"string\") {\n\t\t\t\t\t\t\t\t\treturn this._append_html_data(obj, $($.parseHTML(d)).filter(notTextOrCommentNode), function (status) { callback.call(this, status); });\n\t\t\t\t\t\t\t\t\t// return callback.call(this, this._append_html_data(obj, $(d)));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : x }) };\n\t\t\t\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t\t\t\t}, this))\n\t\t\t\t\t\t.fail($.proxy(function (f) {\n\t\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : f }) };\n\t\t\t\t\t\t\t\tcallback.call(this, false);\n\t\t\t\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\tif ($.isArray(s)) {\n\t\t\t\t\tt = $.extend(true, [], s);\n\t\t\t\t} else if ($.isPlainObject(s)) {\n\t\t\t\t\tt = $.extend(true, {}, s);\n\t\t\t\t} else {\n\t\t\t\t\tt = s;\n\t\t\t\t}\n\t\t\t\tif(obj.id === $.jstree.root) {\n\t\t\t\t\treturn this._append_json_data(obj, t, function (status) {\n\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'nodata', 'plugin' : 'core', 'id' : 'core_05', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id }) };\n\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t}\n\t\t\t\t//return callback.call(this, (obj.id === $.jstree.root ? this._append_json_data(obj, t) : false) );\n\t\t\t}\n\t\t\tif(typeof s === 'string') {\n\t\t\t\tif(obj.id === $.jstree.root) {\n\t\t\t\t\treturn this._append_html_data(obj, $($.parseHTML(s)).filter(notTextOrCommentNode), function (status) {\n\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'nodata', 'plugin' : 'core', 'id' : 'core_06', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id }) };\n\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t}\n\t\t\t\t//return callback.call(this, (obj.id === $.jstree.root ? this._append_html_data(obj, $(s)) : false) );\n\t\t\t}\n\t\t\treturn callback.call(this, false);\n\t\t},\n\t\t/**\n\t\t * adds a node to the list of nodes to redraw. Used only internally.\n\t\t * @private\n\t\t * @name _node_changed(obj [, callback])\n\t\t * @param {mixed} obj\n\t\t */\n\t\t_node_changed : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(obj) {\n\t\t\t\tthis._model.changed.push(obj.id);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * appends HTML content to the tree. Used internally.\n\t\t * @private\n\t\t * @name _append_html_data(obj, data)\n\t\t * @param {mixed} obj the node to append to\n\t\t * @param {String} data the HTML string to parse and append\n\t\t * @trigger model.jstree, changed.jstree\n\t\t */\n\t\t_append_html_data : function (dom, data, cb) {\n\t\t\tdom = this.get_node(dom);\n\t\t\tdom.children = [];\n\t\t\tdom.children_d = [];\n\t\t\tvar dat = data.is('ul') ? data.children() : data,\n\t\t\t\tpar = dom.id,\n\t\t\t\tchd = [],\n\t\t\t\tdpc = [],\n\t\t\t\tm = this._model.data,\n\t\t\t\tp = m[par],\n\t\t\t\ts = this._data.core.selected.length,\n\t\t\t\ttmp, i, j;\n\t\t\tdat.each($.proxy(function (i, v) {\n\t\t\t\ttmp = this._parse_model_from_html($(v), par, p.parents.concat());\n\t\t\t\tif(tmp) {\n\t\t\t\t\tchd.push(tmp);\n\t\t\t\t\tdpc.push(tmp);\n\t\t\t\t\tif(m[tmp].children_d.length) {\n\t\t\t\t\t\tdpc = dpc.concat(m[tmp].children_d);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this));\n\t\t\tp.children = chd;\n\t\t\tp.children_d = dpc;\n\t\t\tfor(i = 0, j = p.parents.length; i < j; i++) {\n\t\t\t\tm[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc);\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when new data is inserted to the tree model\n\t\t\t * @event\n\t\t\t * @name model.jstree\n\t\t\t * @param {Array} nodes an array of node IDs\n\t\t\t * @param {String} parent the parent ID of the nodes\n\t\t\t */\n\t\t\tthis.trigger('model', { \"nodes\" : dpc, 'parent' : par });\n\t\t\tif(par !== $.jstree.root) {\n\t\t\t\tthis._node_changed(par);\n\t\t\t\tthis.redraw();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.get_container_ul().children('.jstree-initial-node').remove();\n\t\t\t\tthis.redraw(true);\n\t\t\t}\n\t\t\tif(this._data.core.selected.length !== s) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'model', 'selected' : this._data.core.selected });\n\t\t\t}\n\t\t\tcb.call(this, true);\n\t\t},\n\t\t/**\n\t\t * appends JSON content to the tree. Used internally.\n\t\t * @private\n\t\t * @name _append_json_data(obj, data)\n\t\t * @param {mixed} obj the node to append to\n\t\t * @param {String} data the JSON object to parse and append\n\t\t * @param {Boolean} force_processing internal param - do not set\n\t\t * @trigger model.jstree, changed.jstree\n\t\t */\n\t\t_append_json_data : function (dom, data, cb, force_processing) {\n\t\t\tif(this.element === null) { return; }\n\t\t\tdom = this.get_node(dom);\n\t\t\tdom.children = [];\n\t\t\tdom.children_d = [];\n\t\t\t// *%$@!!!\n\t\t\tif(data.d) {\n\t\t\t\tdata = data.d;\n\t\t\t\tif(typeof data === \"string\") {\n\t\t\t\t\tdata = JSON.parse(data);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!$.isArray(data)) { data = [data]; }\n\t\t\tvar w = null,\n\t\t\t\targs = {\n\t\t\t\t\t'df'\t: this._model.default_state,\n\t\t\t\t\t'dat'\t: data,\n\t\t\t\t\t'par'\t: dom.id,\n\t\t\t\t\t'm'\t\t: this._model.data,\n\t\t\t\t\t't_id'\t: this._id,\n\t\t\t\t\t't_cnt'\t: this._cnt,\n\t\t\t\t\t'sel'\t: this._data.core.selected\n\t\t\t\t},\n\t\t\t\tfunc = function (data, undefined) {\n\t\t\t\t\tif(data.data) { data = data.data; }\n\t\t\t\t\tvar dat = data.dat,\n\t\t\t\t\t\tpar = data.par,\n\t\t\t\t\t\tchd = [],\n\t\t\t\t\t\tdpc = [],\n\t\t\t\t\t\tadd = [],\n\t\t\t\t\t\tdf = data.df,\n\t\t\t\t\t\tt_id = data.t_id,\n\t\t\t\t\t\tt_cnt = data.t_cnt,\n\t\t\t\t\t\tm = data.m,\n\t\t\t\t\t\tp = m[par],\n\t\t\t\t\t\tsel = data.sel,\n\t\t\t\t\t\ttmp, i, j, rslt,\n\t\t\t\t\t\tparse_flat = function (d, p, ps) {\n\t\t\t\t\t\t\tif(!ps) { ps = []; }\n\t\t\t\t\t\t\telse { ps = ps.concat(); }\n\t\t\t\t\t\t\tif(p) { ps.unshift(p); }\n\t\t\t\t\t\t\tvar tid = d.id.toString(),\n\t\t\t\t\t\t\t\ti, j, c, e,\n\t\t\t\t\t\t\t\ttmp = {\n\t\t\t\t\t\t\t\t\tid\t\t\t: tid,\n\t\t\t\t\t\t\t\t\ttext\t\t: d.text || '',\n\t\t\t\t\t\t\t\t\ticon\t\t: d.icon !== undefined ? d.icon : true,\n\t\t\t\t\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\t\t\t\t\tchildren\t: d.children || [],\n\t\t\t\t\t\t\t\t\tchildren_d\t: d.children_d || [],\n\t\t\t\t\t\t\t\t\tdata\t\t: d.data,\n\t\t\t\t\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\t\t\t\t\toriginal\t: false\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor(i in df) {\n\t\t\t\t\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\t\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(tmp.icon === undefined || tmp.icon === null || tmp.icon === \"\") {\n\t\t\t\t\t\t\t\ttmp.icon = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.data) {\n\t\t\t\t\t\t\t\ttmp.data = d.data;\n\t\t\t\t\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\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\tif(d && typeof d.state === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.state) {\n\t\t\t\t\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.state[i];\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\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\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\tif(!tmp.li_attr.id) {\n\t\t\t\t\t\t\t\ttmp.li_attr.id = tid;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\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\tif(d && d.children && d.children === true) {\n\t\t\t\t\t\t\t\ttmp.state.loaded = false;\n\t\t\t\t\t\t\t\ttmp.children = [];\n\t\t\t\t\t\t\t\ttmp.children_d = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tm[tmp.id] = tmp;\n\t\t\t\t\t\t\tfor(i = 0, j = tmp.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\tc = parse_flat(m[tmp.children[i]], tmp.id, ps);\n\t\t\t\t\t\t\t\te = m[c];\n\t\t\t\t\t\t\t\ttmp.children_d.push(c);\n\t\t\t\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdelete d.data;\n\t\t\t\t\t\t\tdelete d.children;\n\t\t\t\t\t\t\tm[tmp.id].original = d;\n\t\t\t\t\t\t\tif(tmp.state.selected) {\n\t\t\t\t\t\t\t\tadd.push(tmp.id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn tmp.id;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tparse_nest = function (d, p, ps) {\n\t\t\t\t\t\t\tif(!ps) { ps = []; }\n\t\t\t\t\t\t\telse { ps = ps.concat(); }\n\t\t\t\t\t\t\tif(p) { ps.unshift(p); }\n\t\t\t\t\t\t\tvar tid = false, i, j, c, e, tmp;\n\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\ttid = 'j' + t_id + '_' + (++t_cnt);\n\t\t\t\t\t\t\t} while(m[tid]);\n\n\t\t\t\t\t\t\ttmp = {\n\t\t\t\t\t\t\t\tid\t\t\t: false,\n\t\t\t\t\t\t\t\ttext\t\t: typeof d === 'string' ? d : '',\n\t\t\t\t\t\t\t\ticon\t\t: typeof d === 'object' && d.icon !== undefined ? d.icon : true,\n\t\t\t\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\t\t\t\tchildren\t: [],\n\t\t\t\t\t\t\t\tchildren_d\t: [],\n\t\t\t\t\t\t\t\tdata\t\t: null,\n\t\t\t\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\t\t\t\toriginal\t: false\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor(i in df) {\n\t\t\t\t\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.id) { tmp.id = d.id.toString(); }\n\t\t\t\t\t\t\tif(d && d.text) { tmp.text = d.text; }\n\t\t\t\t\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\t\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(tmp.icon === undefined || tmp.icon === null || tmp.icon === \"\") {\n\t\t\t\t\t\t\t\ttmp.icon = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.data) {\n\t\t\t\t\t\t\t\ttmp.data = d.data;\n\t\t\t\t\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\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\tif(d && typeof d.state === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.state) {\n\t\t\t\t\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.state[i];\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\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\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\tif(tmp.li_attr.id && !tmp.id) {\n\t\t\t\t\t\t\t\ttmp.id = tmp.li_attr.id.toString();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!tmp.id) {\n\t\t\t\t\t\t\t\ttmp.id = tid;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!tmp.li_attr.id) {\n\t\t\t\t\t\t\t\ttmp.li_attr.id = tmp.id;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\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\tif(d && d.children && d.children.length) {\n\t\t\t\t\t\t\t\tfor(i = 0, j = d.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tc = parse_nest(d.children[i], tmp.id, ps);\n\t\t\t\t\t\t\t\t\te = m[c];\n\t\t\t\t\t\t\t\t\ttmp.children.push(c);\n\t\t\t\t\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\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\ttmp.children_d = tmp.children_d.concat(tmp.children);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.children && d.children === true) {\n\t\t\t\t\t\t\t\ttmp.state.loaded = false;\n\t\t\t\t\t\t\t\ttmp.children = [];\n\t\t\t\t\t\t\t\ttmp.children_d = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdelete d.data;\n\t\t\t\t\t\t\tdelete d.children;\n\t\t\t\t\t\t\ttmp.original = d;\n\t\t\t\t\t\t\tm[tmp.id] = tmp;\n\t\t\t\t\t\t\tif(tmp.state.selected) {\n\t\t\t\t\t\t\t\tadd.push(tmp.id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn tmp.id;\n\t\t\t\t\t\t};\n\n\t\t\t\t\tif(dat.length && dat[0].id !== undefined && dat[0].parent !== undefined) {\n\t\t\t\t\t\t// Flat JSON support (for easy import from DB):\n\t\t\t\t\t\t// 1) convert to object (foreach)\n\t\t\t\t\t\tfor(i = 0, j = dat.length; i < j; i++) {\n\t\t\t\t\t\t\tif(!dat[i].children) {\n\t\t\t\t\t\t\t\tdat[i].children = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tm[dat[i].id.toString()] = dat[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// 2) populate children (foreach)\n\t\t\t\t\t\tfor(i = 0, j = dat.length; i < j; i++) {\n\t\t\t\t\t\t\tm[dat[i].parent.toString()].children.push(dat[i].id.toString());\n\t\t\t\t\t\t\t// populate parent.children_d\n\t\t\t\t\t\t\tp.children_d.push(dat[i].id.toString());\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// 3) normalize && populate parents and children_d with recursion\n\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp = parse_flat(m[p.children[i]], par, p.parents.concat());\n\t\t\t\t\t\t\tdpc.push(tmp);\n\t\t\t\t\t\t\tif(m[tmp].children_d.length) {\n\t\t\t\t\t\t\t\tdpc = dpc.concat(m[tmp].children_d);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(i = 0, j = p.parents.length; i < j; i++) {\n\t\t\t\t\t\t\tm[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ?) three_state selection - p.state.selected && t - (if three_state foreach(dat => ch) -> foreach(parents) if(parent.selected) child.selected = true;\n\t\t\t\t\t\trslt = {\n\t\t\t\t\t\t\t'cnt' : t_cnt,\n\t\t\t\t\t\t\t'mod' : m,\n\t\t\t\t\t\t\t'sel' : sel,\n\t\t\t\t\t\t\t'par' : par,\n\t\t\t\t\t\t\t'dpc' : dpc,\n\t\t\t\t\t\t\t'add' : add\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\tfor(i = 0, j = dat.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp = parse_nest(dat[i], par, p.parents.concat());\n\t\t\t\t\t\t\tif(tmp) {\n\t\t\t\t\t\t\t\tchd.push(tmp);\n\t\t\t\t\t\t\t\tdpc.push(tmp);\n\t\t\t\t\t\t\t\tif(m[tmp].children_d.length) {\n\t\t\t\t\t\t\t\t\tdpc = dpc.concat(m[tmp].children_d);\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\tp.children = chd;\n\t\t\t\t\t\tp.children_d = dpc;\n\t\t\t\t\t\tfor(i = 0, j = p.parents.length; i < j; i++) {\n\t\t\t\t\t\t\tm[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trslt = {\n\t\t\t\t\t\t\t'cnt' : t_cnt,\n\t\t\t\t\t\t\t'mod' : m,\n\t\t\t\t\t\t\t'sel' : sel,\n\t\t\t\t\t\t\t'par' : par,\n\t\t\t\t\t\t\t'dpc' : dpc,\n\t\t\t\t\t\t\t'add' : add\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof window === 'undefined' || typeof window.document === 'undefined') {\n\t\t\t\t\t\tpostMessage(rslt);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treturn rslt;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trslt = function (rslt, worker) {\n\t\t\t\t\tif(this.element === null) { return; }\n\t\t\t\t\tthis._cnt = rslt.cnt;\n\t\t\t\t\tvar i, m = this._model.data;\n\t\t\t\t\tfor (i in m) {\n\t\t\t\t\t\tif (m.hasOwnProperty(i) && m[i].state && m[i].state.loading && rslt.mod[i]) {\n\t\t\t\t\t\t\trslt.mod[i].state.loading = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis._model.data = rslt.mod; // breaks the reference in load_node - careful\n\n\t\t\t\t\tif(worker) {\n\t\t\t\t\t\tvar j, a = rslt.add, r = rslt.sel, s = this._data.core.selected.slice();\n\t\t\t\t\t\tm = this._model.data;\n\t\t\t\t\t\t// if selection was changed while calculating in worker\n\t\t\t\t\t\tif(r.length !== s.length || $.vakata.array_unique(r.concat(s)).length !== r.length) {\n\t\t\t\t\t\t\t// deselect nodes that are no longer selected\n\t\t\t\t\t\t\tfor(i = 0, j = r.length; i < j; i++) {\n\t\t\t\t\t\t\t\tif($.inArray(r[i], a) === -1 && $.inArray(r[i], s) === -1) {\n\t\t\t\t\t\t\t\t\tm[r[i]].state.selected = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// select nodes that were selected in the mean time\n\t\t\t\t\t\t\tfor(i = 0, j = s.length; i < j; i++) {\n\t\t\t\t\t\t\t\tif($.inArray(s[i], r) === -1) {\n\t\t\t\t\t\t\t\t\tm[s[i]].state.selected = true;\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\tif(rslt.add.length) {\n\t\t\t\t\t\tthis._data.core.selected = this._data.core.selected.concat(rslt.add);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.trigger('model', { \"nodes\" : rslt.dpc, 'parent' : rslt.par });\n\n\t\t\t\t\tif(rslt.par !== $.jstree.root) {\n\t\t\t\t\t\tthis._node_changed(rslt.par);\n\t\t\t\t\t\tthis.redraw();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// this.get_container_ul().children('.jstree-initial-node').remove();\n\t\t\t\t\t\tthis.redraw(true);\n\t\t\t\t\t}\n\t\t\t\t\tif(rslt.add.length) {\n\t\t\t\t\t\tthis.trigger('changed', { 'action' : 'model', 'selected' : this._data.core.selected });\n\t\t\t\t\t}\n\t\t\t\t\tcb.call(this, true);\n\t\t\t\t};\n\t\t\tif(this.settings.core.worker && window.Blob && window.URL && window.Worker) {\n\t\t\t\ttry {\n\t\t\t\t\tif(this._wrk === null) {\n\t\t\t\t\t\tthis._wrk = window.URL.createObjectURL(\n\t\t\t\t\t\t\tnew window.Blob(\n\t\t\t\t\t\t\t\t['self.onmessage = ' + func.toString()],\n\t\t\t\t\t\t\t\t{type:\"text/javascript\"}\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\tif(!this._data.core.working || force_processing) {\n\t\t\t\t\t\tthis._data.core.working = true;\n\t\t\t\t\t\tw = new window.Worker(this._wrk);\n\t\t\t\t\t\tw.onmessage = $.proxy(function (e) {\n\t\t\t\t\t\t\trslt.call(this, e.data, true);\n\t\t\t\t\t\t\ttry { w.terminate(); w = null; } catch(ignore) { }\n\t\t\t\t\t\t\tif(this._data.core.worker_queue.length) {\n\t\t\t\t\t\t\t\tthis._append_json_data.apply(this, this._data.core.worker_queue.shift());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tthis._data.core.working = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t\tif(!args.par) {\n\t\t\t\t\t\t\tif(this._data.core.worker_queue.length) {\n\t\t\t\t\t\t\t\tthis._append_json_data.apply(this, this._data.core.worker_queue.shift());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tthis._data.core.working = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tw.postMessage(args);\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\tthis._data.core.worker_queue.push([dom, data, cb, true]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\trslt.call(this, func(args), false);\n\t\t\t\t\tif(this._data.core.worker_queue.length) {\n\t\t\t\t\t\tthis._append_json_data.apply(this, this._data.core.worker_queue.shift());\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._data.core.working = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\trslt.call(this, func(args), false);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * parses a node from a jQuery object and appends them to the in memory tree model. Used internally.\n\t\t * @private\n\t\t * @name _parse_model_from_html(d [, p, ps])\n\t\t * @param {jQuery} d the jQuery object to parse\n\t\t * @param {String} p the parent ID\n\t\t * @param {Array} ps list of all parents\n\t\t * @return {String} the ID of the object added to the model\n\t\t */\n\t\t_parse_model_from_html : function (d, p, ps) {\n\t\t\tif(!ps) { ps = []; }\n\t\t\telse { ps = [].concat(ps); }\n\t\t\tif(p) { ps.unshift(p); }\n\t\t\tvar c, e, m = this._model.data,\n\t\t\t\tdata = {\n\t\t\t\t\tid\t\t\t: false,\n\t\t\t\t\ttext\t\t: false,\n\t\t\t\t\ticon\t\t: true,\n\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\tchildren\t: [],\n\t\t\t\t\tchildren_d\t: [],\n\t\t\t\t\tdata\t\t: null,\n\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\toriginal\t: false\n\t\t\t\t}, i, tmp, tid;\n\t\t\tfor(i in this._model.default_state) {\n\t\t\t\tif(this._model.default_state.hasOwnProperty(i)) {\n\t\t\t\t\tdata.state[i] = this._model.default_state[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = $.vakata.attributes(d, true);\n\t\t\t$.each(tmp, function (i, v) {\n\t\t\t\tv = $.trim(v);\n\t\t\t\tif(!v.length) { return true; }\n\t\t\t\tdata.li_attr[i] = v;\n\t\t\t\tif(i === 'id') {\n\t\t\t\t\tdata.id = v.toString();\n\t\t\t\t}\n\t\t\t});\n\t\t\ttmp = d.children('a').first();\n\t\t\tif(tmp.length) {\n\t\t\t\ttmp = $.vakata.attributes(tmp, true);\n\t\t\t\t$.each(tmp, function (i, v) {\n\t\t\t\t\tv = $.trim(v);\n\t\t\t\t\tif(v.length) {\n\t\t\t\t\t\tdata.a_attr[i] = v;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\ttmp = d.children(\"a\").first().length ? d.children(\"a\").first().clone() : d.clone();\n\t\t\ttmp.children(\"ins, i, ul\").remove();\n\t\t\ttmp = tmp.html();\n\t\t\ttmp = $('
').html(tmp);\n\t\t\tdata.text = this.settings.core.force_text ? tmp.text() : tmp.html();\n\t\t\ttmp = d.data();\n\t\t\tdata.data = tmp ? $.extend(true, {}, tmp) : null;\n\t\t\tdata.state.opened = d.hasClass('jstree-open');\n\t\t\tdata.state.selected = d.children('a').hasClass('jstree-clicked');\n\t\t\tdata.state.disabled = d.children('a').hasClass('jstree-disabled');\n\t\t\tif(data.data && data.data.jstree) {\n\t\t\t\tfor(i in data.data.jstree) {\n\t\t\t\t\tif(data.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\tdata.state[i] = data.data.jstree[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = d.children(\"a\").children(\".jstree-themeicon\");\n\t\t\tif(tmp.length) {\n\t\t\t\tdata.icon = tmp.hasClass('jstree-themeicon-hidden') ? false : tmp.attr('rel');\n\t\t\t}\n\t\t\tif(data.state.icon !== undefined) {\n\t\t\t\tdata.icon = data.state.icon;\n\t\t\t}\n\t\t\tif(data.icon === undefined || data.icon === null || data.icon === \"\") {\n\t\t\t\tdata.icon = true;\n\t\t\t}\n\t\t\ttmp = d.children(\"ul\").children(\"li\");\n\t\t\tdo {\n\t\t\t\ttid = 'j' + this._id + '_' + (++this._cnt);\n\t\t\t} while(m[tid]);\n\t\t\tdata.id = data.li_attr.id ? data.li_attr.id.toString() : tid;\n\t\t\tif(tmp.length) {\n\t\t\t\ttmp.each($.proxy(function (i, v) {\n\t\t\t\t\tc = this._parse_model_from_html($(v), data.id, ps);\n\t\t\t\t\te = this._model.data[c];\n\t\t\t\t\tdata.children.push(c);\n\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\tdata.children_d = data.children_d.concat(e.children_d);\n\t\t\t\t\t}\n\t\t\t\t}, this));\n\t\t\t\tdata.children_d = data.children_d.concat(data.children);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif(d.hasClass('jstree-closed')) {\n\t\t\t\t\tdata.state.loaded = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(data.li_attr['class']) {\n\t\t\t\tdata.li_attr['class'] = data.li_attr['class'].replace('jstree-closed','').replace('jstree-open','');\n\t\t\t}\n\t\t\tif(data.a_attr['class']) {\n\t\t\t\tdata.a_attr['class'] = data.a_attr['class'].replace('jstree-clicked','').replace('jstree-disabled','');\n\t\t\t}\n\t\t\tm[data.id] = data;\n\t\t\tif(data.state.selected) {\n\t\t\t\tthis._data.core.selected.push(data.id);\n\t\t\t}\n\t\t\treturn data.id;\n\t\t},\n\t\t/**\n\t\t * parses a node from a JSON object (used when dealing with flat data, which has no nesting of children, but has id and parent properties) and appends it to the in memory tree model. Used internally.\n\t\t * @private\n\t\t * @name _parse_model_from_flat_json(d [, p, ps])\n\t\t * @param {Object} d the JSON object to parse\n\t\t * @param {String} p the parent ID\n\t\t * @param {Array} ps list of all parents\n\t\t * @return {String} the ID of the object added to the model\n\t\t */\n\t\t_parse_model_from_flat_json : function (d, p, ps) {\n\t\t\tif(!ps) { ps = []; }\n\t\t\telse { ps = ps.concat(); }\n\t\t\tif(p) { ps.unshift(p); }\n\t\t\tvar tid = d.id.toString(),\n\t\t\t\tm = this._model.data,\n\t\t\t\tdf = this._model.default_state,\n\t\t\t\ti, j, c, e,\n\t\t\t\ttmp = {\n\t\t\t\t\tid\t\t\t: tid,\n\t\t\t\t\ttext\t\t: d.text || '',\n\t\t\t\t\ticon\t\t: d.icon !== undefined ? d.icon : true,\n\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\tchildren\t: d.children || [],\n\t\t\t\t\tchildren_d\t: d.children_d || [],\n\t\t\t\t\tdata\t\t: d.data,\n\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\toriginal\t: false\n\t\t\t\t};\n\t\t\tfor(i in df) {\n\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t}\n\t\t\tif(tmp.icon === undefined || tmp.icon === null || tmp.icon === \"\") {\n\t\t\t\ttmp.icon = true;\n\t\t\t}\n\t\t\tif(d && d.data) {\n\t\t\t\ttmp.data = d.data;\n\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\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\tif(d && typeof d.state === 'object') {\n\t\t\t\tfor (i in d.state) {\n\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.state[i] = d.state[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!tmp.li_attr.id) {\n\t\t\t\ttmp.li_attr.id = tid;\n\t\t\t}\n\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.children && d.children === true) {\n\t\t\t\ttmp.state.loaded = false;\n\t\t\t\ttmp.children = [];\n\t\t\t\ttmp.children_d = [];\n\t\t\t}\n\t\t\tm[tmp.id] = tmp;\n\t\t\tfor(i = 0, j = tmp.children.length; i < j; i++) {\n\t\t\t\tc = this._parse_model_from_flat_json(m[tmp.children[i]], tmp.id, ps);\n\t\t\t\te = m[c];\n\t\t\t\ttmp.children_d.push(c);\n\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\n\t\t\t\t}\n\t\t\t}\n\t\t\tdelete d.data;\n\t\t\tdelete d.children;\n\t\t\tm[tmp.id].original = d;\n\t\t\tif(tmp.state.selected) {\n\t\t\t\tthis._data.core.selected.push(tmp.id);\n\t\t\t}\n\t\t\treturn tmp.id;\n\t\t},\n\t\t/**\n\t\t * parses a node from a JSON object and appends it to the in memory tree model. Used internally.\n\t\t * @private\n\t\t * @name _parse_model_from_json(d [, p, ps])\n\t\t * @param {Object} d the JSON object to parse\n\t\t * @param {String} p the parent ID\n\t\t * @param {Array} ps list of all parents\n\t\t * @return {String} the ID of the object added to the model\n\t\t */\n\t\t_parse_model_from_json : function (d, p, ps) {\n\t\t\tif(!ps) { ps = []; }\n\t\t\telse { ps = ps.concat(); }\n\t\t\tif(p) { ps.unshift(p); }\n\t\t\tvar tid = false, i, j, c, e, m = this._model.data, df = this._model.default_state, tmp;\n\t\t\tdo {\n\t\t\t\ttid = 'j' + this._id + '_' + (++this._cnt);\n\t\t\t} while(m[tid]);\n\n\t\t\ttmp = {\n\t\t\t\tid\t\t\t: false,\n\t\t\t\ttext\t\t: typeof d === 'string' ? d : '',\n\t\t\t\ticon\t\t: typeof d === 'object' && d.icon !== undefined ? d.icon : true,\n\t\t\t\tparent\t\t: p,\n\t\t\t\tparents\t\t: ps,\n\t\t\t\tchildren\t: [],\n\t\t\t\tchildren_d\t: [],\n\t\t\t\tdata\t\t: null,\n\t\t\t\tstate\t\t: { },\n\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\toriginal\t: false\n\t\t\t};\n\t\t\tfor(i in df) {\n\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.id) { tmp.id = d.id.toString(); }\n\t\t\tif(d && d.text) { tmp.text = d.text; }\n\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t}\n\t\t\tif(tmp.icon === undefined || tmp.icon === null || tmp.icon === \"\") {\n\t\t\t\ttmp.icon = true;\n\t\t\t}\n\t\t\tif(d && d.data) {\n\t\t\t\ttmp.data = d.data;\n\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\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\tif(d && typeof d.state === 'object') {\n\t\t\t\tfor (i in d.state) {\n\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.state[i] = d.state[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(tmp.li_attr.id && !tmp.id) {\n\t\t\t\ttmp.id = tmp.li_attr.id.toString();\n\t\t\t}\n\t\t\tif(!tmp.id) {\n\t\t\t\ttmp.id = tid;\n\t\t\t}\n\t\t\tif(!tmp.li_attr.id) {\n\t\t\t\ttmp.li_attr.id = tmp.id;\n\t\t\t}\n\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.children && d.children.length) {\n\t\t\t\tfor(i = 0, j = d.children.length; i < j; i++) {\n\t\t\t\t\tc = this._parse_model_from_json(d.children[i], tmp.id, ps);\n\t\t\t\t\te = m[c];\n\t\t\t\t\ttmp.children.push(c);\n\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttmp.children_d = tmp.children_d.concat(tmp.children);\n\t\t\t}\n\t\t\tif(d && d.children && d.children === true) {\n\t\t\t\ttmp.state.loaded = false;\n\t\t\t\ttmp.children = [];\n\t\t\t\ttmp.children_d = [];\n\t\t\t}\n\t\t\tdelete d.data;\n\t\t\tdelete d.children;\n\t\t\ttmp.original = d;\n\t\t\tm[tmp.id] = tmp;\n\t\t\tif(tmp.state.selected) {\n\t\t\t\tthis._data.core.selected.push(tmp.id);\n\t\t\t}\n\t\t\treturn tmp.id;\n\t\t},\n\t\t/**\n\t\t * redraws all nodes that need to be redrawn. Used internally.\n\t\t * @private\n\t\t * @name _redraw()\n\t\t * @trigger redraw.jstree\n\t\t */\n\t\t_redraw : function () {\n\t\t\tvar nodes = this._model.force_full_redraw ? this._model.data[$.jstree.root].children.concat([]) : this._model.changed.concat([]),\n\t\t\t\tf = document.createElement('UL'), tmp, i, j, fe = this._data.core.focused;\n\t\t\tfor(i = 0, j = nodes.length; i < j; i++) {\n\t\t\t\ttmp = this.redraw_node(nodes[i], true, this._model.force_full_redraw);\n\t\t\t\tif(tmp && this._model.force_full_redraw) {\n\t\t\t\t\tf.appendChild(tmp);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this._model.force_full_redraw) {\n\t\t\t\tf.className = this.get_container_ul()[0].className;\n\t\t\t\tf.setAttribute('role','group');\n\t\t\t\tthis.element.empty().append(f);\n\t\t\t\t//this.get_container_ul()[0].appendChild(f);\n\t\t\t}\n\t\t\tif(fe !== null) {\n\t\t\t\ttmp = this.get_node(fe, true);\n\t\t\t\tif(tmp && tmp.length && tmp.children('.jstree-anchor')[0] !== document.activeElement) {\n\t\t\t\t\ttmp.children('.jstree-anchor').focus();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._data.core.focused = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._model.force_full_redraw = false;\n\t\t\tthis._model.changed = [];\n\t\t\t/**\n\t\t\t * triggered after nodes are redrawn\n\t\t\t * @event\n\t\t\t * @name redraw.jstree\n\t\t\t * @param {array} nodes the redrawn nodes\n\t\t\t */\n\t\t\tthis.trigger('redraw', { \"nodes\" : nodes });\n\t\t},\n\t\t/**\n\t\t * redraws all nodes that need to be redrawn or optionally - the whole tree\n\t\t * @name redraw([full])\n\t\t * @param {Boolean} full if set to `true` all nodes are redrawn.\n\t\t */\n\t\tredraw : function (full) {\n\t\t\tif(full) {\n\t\t\t\tthis._model.force_full_redraw = true;\n\t\t\t}\n\t\t\t//if(this._model.redraw_timeout) {\n\t\t\t//\tclearTimeout(this._model.redraw_timeout);\n\t\t\t//}\n\t\t\t//this._model.redraw_timeout = setTimeout($.proxy(this._redraw, this),0);\n\t\t\tthis._redraw();\n\t\t},\n\t\t/**\n\t\t * redraws a single node's children. Used internally.\n\t\t * @private\n\t\t * @name draw_children(node)\n\t\t * @param {mixed} node the node whose children will be redrawn\n\t\t */\n\t\tdraw_children : function (node) {\n\t\t\tvar obj = this.get_node(node),\n\t\t\t\ti = false,\n\t\t\t\tj = false,\n\t\t\t\tk = false,\n\t\t\t\td = document;\n\t\t\tif(!obj) { return false; }\n\t\t\tif(obj.id === $.jstree.root) { return this.redraw(true); }\n\t\t\tnode = this.get_node(node, true);\n\t\t\tif(!node || !node.length) { return false; } // TODO: quick toggle\n\n\t\t\tnode.children('.jstree-children').remove();\n\t\t\tnode = node[0];\n\t\t\tif(obj.children.length && obj.state.loaded) {\n\t\t\t\tk = d.createElement('UL');\n\t\t\t\tk.setAttribute('role', 'group');\n\t\t\t\tk.className = 'jstree-children';\n\t\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\t\tk.appendChild(this.redraw_node(obj.children[i], true, true));\n\t\t\t\t}\n\t\t\t\tnode.appendChild(k);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * redraws a single node. Used internally.\n\t\t * @private\n\t\t * @name redraw_node(node, deep, is_callback, force_render)\n\t\t * @param {mixed} node the node to redraw\n\t\t * @param {Boolean} deep should child nodes be redrawn too\n\t\t * @param {Boolean} is_callback is this a recursion call\n\t\t * @param {Boolean} force_render should children of closed parents be drawn anyway\n\t\t */\n\t\tredraw_node : function (node, deep, is_callback, force_render) {\n\t\t\tvar obj = this.get_node(node),\n\t\t\t\tpar = false,\n\t\t\t\tind = false,\n\t\t\t\told = false,\n\t\t\t\ti = false,\n\t\t\t\tj = false,\n\t\t\t\tk = false,\n\t\t\t\tc = '',\n\t\t\t\td = document,\n\t\t\t\tm = this._model.data,\n\t\t\t\tf = false,\n\t\t\t\ts = false,\n\t\t\t\ttmp = null,\n\t\t\t\tt = 0,\n\t\t\t\tl = 0,\n\t\t\t\thas_children = false,\n\t\t\t\tlast_sibling = false;\n\t\t\tif(!obj) { return false; }\n\t\t\tif(obj.id === $.jstree.root) { return this.redraw(true); }\n\t\t\tdeep = deep || obj.children.length === 0;\n\t\t\tnode = !document.querySelector ? document.getElementById(obj.id) : this.element[0].querySelector('#' + (\"0123456789\".indexOf(obj.id[0]) !== -1 ? '\\\\3' + obj.id[0] + ' ' + obj.id.substr(1).replace($.jstree.idregex,'\\\\$&') : obj.id.replace($.jstree.idregex,'\\\\$&')) ); //, this.element);\n\t\t\tif(!node) {\n\t\t\t\tdeep = true;\n\t\t\t\t//node = d.createElement('LI');\n\t\t\t\tif(!is_callback) {\n\t\t\t\t\tpar = obj.parent !== $.jstree.root ? $('#' + obj.parent.replace($.jstree.idregex,'\\\\$&'), this.element)[0] : null;\n\t\t\t\t\tif(par !== null && (!par || !m[obj.parent].state.opened)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tind = $.inArray(obj.id, par === null ? m[$.jstree.root].children : m[obj.parent].children);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnode = $(node);\n\t\t\t\tif(!is_callback) {\n\t\t\t\t\tpar = node.parent().parent()[0];\n\t\t\t\t\tif(par === this.element[0]) {\n\t\t\t\t\t\tpar = null;\n\t\t\t\t\t}\n\t\t\t\t\tind = node.index();\n\t\t\t\t}\n\t\t\t\t// m[obj.id].data = node.data(); // use only node's data, no need to touch jquery storage\n\t\t\t\tif(!deep && obj.children.length && !node.children('.jstree-children').length) {\n\t\t\t\t\tdeep = true;\n\t\t\t\t}\n\t\t\t\tif(!deep) {\n\t\t\t\t\told = node.children('.jstree-children')[0];\n\t\t\t\t}\n\t\t\t\tf = node.children('.jstree-anchor')[0] === document.activeElement;\n\t\t\t\tnode.remove();\n\t\t\t\t//node = d.createElement('LI');\n\t\t\t\t//node = node[0];\n\t\t\t}\n\t\t\tnode = this._data.core.node.cloneNode(true);\n\t\t\t// node is DOM, deep is boolean\n\n\t\t\tc = 'jstree-node ';\n\t\t\tfor(i in obj.li_attr) {\n\t\t\t\tif(obj.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\tif(i === 'id') { continue; }\n\t\t\t\t\tif(i !== 'class') {\n\t\t\t\t\t\tnode.setAttribute(i, obj.li_attr[i]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tc += obj.li_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!obj.a_attr.id) {\n\t\t\t\tobj.a_attr.id = obj.id + '_anchor';\n\t\t\t}\n\t\t\tnode.setAttribute('aria-selected', !!obj.state.selected);\n\t\t\tnode.setAttribute('aria-level', obj.parents.length);\n\t\t\tnode.setAttribute('aria-labelledby', obj.a_attr.id);\n\t\t\tif(obj.state.disabled) {\n\t\t\t\tnode.setAttribute('aria-disabled', true);\n\t\t\t}\n\n\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\tif(!m[obj.children[i]].state.hidden) {\n\t\t\t\t\thas_children = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(obj.parent !== null && m[obj.parent] && !obj.state.hidden) {\n\t\t\t\ti = $.inArray(obj.id, m[obj.parent].children);\n\t\t\t\tlast_sibling = obj.id;\n\t\t\t\tif(i !== -1) {\n\t\t\t\t\ti++;\n\t\t\t\t\tfor(j = m[obj.parent].children.length; i < j; i++) {\n\t\t\t\t\t\tif(!m[m[obj.parent].children[i]].state.hidden) {\n\t\t\t\t\t\t\tlast_sibling = m[obj.parent].children[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(last_sibling !== obj.id) {\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}\n\t\t\t}\n\n\t\t\tif(obj.state.hidden) {\n\t\t\t\tc += ' jstree-hidden';\n\t\t\t}\n\t\t\tif(obj.state.loaded && !has_children) {\n\t\t\t\tc += ' jstree-leaf';\n\t\t\t}\n\t\t\telse {\n\t\t\t\tc += obj.state.opened && obj.state.loaded ? ' jstree-open' : ' jstree-closed';\n\t\t\t\tnode.setAttribute('aria-expanded', (obj.state.opened && obj.state.loaded) );\n\t\t\t}\n\t\t\tif(last_sibling === obj.id) {\n\t\t\t\tc += ' jstree-last';\n\t\t\t}\n\t\t\tnode.id = obj.id;\n\t\t\tnode.className = c;\n\t\t\tc = ( obj.state.selected ? ' jstree-clicked' : '') + ( obj.state.disabled ? ' jstree-disabled' : '');\n\t\t\tfor(j in obj.a_attr) {\n\t\t\t\tif(obj.a_attr.hasOwnProperty(j)) {\n\t\t\t\t\tif(j === 'href' && obj.a_attr[j] === '#') { continue; }\n\t\t\t\t\tif(j !== 'class') {\n\t\t\t\t\t\tnode.childNodes[1].setAttribute(j, obj.a_attr[j]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tc += ' ' + obj.a_attr[j];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(c.length) {\n\t\t\t\tnode.childNodes[1].className = 'jstree-anchor ' + c;\n\t\t\t}\n\t\t\tif((obj.icon && obj.icon !== true) || obj.icon === false) {\n\t\t\t\tif(obj.icon === false) {\n\t\t\t\t\tnode.childNodes[1].childNodes[0].className += ' jstree-themeicon-hidden';\n\t\t\t\t}\n\t\t\t\telse if(obj.icon.indexOf('/') === -1 && obj.icon.indexOf('.') === -1) {\n\t\t\t\t\tnode.childNodes[1].childNodes[0].className += ' ' + obj.icon + ' jstree-themeicon-custom';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnode.childNodes[1].childNodes[0].style.backgroundImage = 'url(\"'+obj.icon+'\")';\n\t\t\t\t\tnode.childNodes[1].childNodes[0].style.backgroundPosition = 'center center';\n\t\t\t\t\tnode.childNodes[1].childNodes[0].style.backgroundSize = 'auto';\n\t\t\t\t\tnode.childNodes[1].childNodes[0].className += ' jstree-themeicon-custom';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.settings.core.force_text) {\n\t\t\t\tnode.childNodes[1].appendChild(d.createTextNode(obj.text));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnode.childNodes[1].innerHTML += obj.text;\n\t\t\t}\n\n\n\t\t\tif(deep && obj.children.length && (obj.state.opened || force_render) && obj.state.loaded) {\n\t\t\t\tk = d.createElement('UL');\n\t\t\t\tk.setAttribute('role', 'group');\n\t\t\t\tk.className = 'jstree-children';\n\t\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\t\tk.appendChild(this.redraw_node(obj.children[i], deep, true));\n\t\t\t\t}\n\t\t\t\tnode.appendChild(k);\n\t\t\t}\n\t\t\tif(old) {\n\t\t\t\tnode.appendChild(old);\n\t\t\t}\n\t\t\tif(!is_callback) {\n\t\t\t\t// append back using par / ind\n\t\t\t\tif(!par) {\n\t\t\t\t\tpar = this.element[0];\n\t\t\t\t}\n\t\t\t\tfor(i = 0, j = par.childNodes.length; i < j; i++) {\n\t\t\t\t\tif(par.childNodes[i] && par.childNodes[i].className && par.childNodes[i].className.indexOf('jstree-children') !== -1) {\n\t\t\t\t\t\ttmp = par.childNodes[i];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!tmp) {\n\t\t\t\t\ttmp = d.createElement('UL');\n\t\t\t\t\ttmp.setAttribute('role', 'group');\n\t\t\t\t\ttmp.className = 'jstree-children';\n\t\t\t\t\tpar.appendChild(tmp);\n\t\t\t\t}\n\t\t\t\tpar = tmp;\n\n\t\t\t\tif(ind < par.childNodes.length) {\n\t\t\t\t\tpar.insertBefore(node, par.childNodes[ind]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpar.appendChild(node);\n\t\t\t\t}\n\t\t\t\tif(f) {\n\t\t\t\t\tt = this.element[0].scrollTop;\n\t\t\t\t\tl = this.element[0].scrollLeft;\n\t\t\t\t\tnode.childNodes[1].focus();\n\t\t\t\t\tthis.element[0].scrollTop = t;\n\t\t\t\t\tthis.element[0].scrollLeft = l;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(obj.state.opened && !obj.state.loaded) {\n\t\t\t\tobj.state.opened = false;\n\t\t\t\tsetTimeout($.proxy(function () {\n\t\t\t\t\tthis.open_node(obj.id, false, 0);\n\t\t\t\t}, this), 0);\n\t\t\t}\n\t\t\treturn node;\n\t\t},\n\t\t/**\n\t\t * opens a node, revaling its children. If the node is not loaded it will be loaded and opened once ready.\n\t\t * @name open_node(obj [, callback, animation])\n\t\t * @param {mixed} obj the node to open\n\t\t * @param {Function} callback a function to execute once the node is opened\n\t\t * @param {Number} animation the animation duration in milliseconds when opening the node (overrides the `core.animation` setting). Use `false` for no animation.\n\t\t * @trigger open_node.jstree, after_open.jstree, before_open.jstree\n\t\t */\n\t\topen_node : function (obj, callback, animation) {\n\t\t\tvar t1, t2, d, t;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.open_node(obj[t1], callback, animation);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tanimation = animation === undefined ? this.settings.core.animation : animation;\n\t\t\tif(!this.is_closed(obj)) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback.call(this, obj, false);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(!this.is_loaded(obj)) {\n\t\t\t\tif(this.is_loading(obj)) {\n\t\t\t\t\treturn setTimeout($.proxy(function () {\n\t\t\t\t\t\tthis.open_node(obj, callback, animation);\n\t\t\t\t\t}, this), 500);\n\t\t\t\t}\n\t\t\t\tthis.load_node(obj, function (o, ok) {\n\t\t\t\t\treturn ok ? this.open_node(o, callback, animation) : (callback ? callback.call(this, o, false) : false);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\td = this.get_node(obj, true);\n\t\t\t\tt = this;\n\t\t\t\tif(d.length) {\n\t\t\t\t\tif(animation && d.children(\".jstree-children\").length) {\n\t\t\t\t\t\td.children(\".jstree-children\").stop(true, true);\n\t\t\t\t\t}\n\t\t\t\t\tif(obj.children.length && !this._firstChild(d.children('.jstree-children')[0])) {\n\t\t\t\t\t\tthis.draw_children(obj);\n\t\t\t\t\t\t//d = this.get_node(obj, true);\n\t\t\t\t\t}\n\t\t\t\t\tif(!animation) {\n\t\t\t\t\t\tthis.trigger('before_open', { \"node\" : obj });\n\t\t\t\t\t\td[0].className = d[0].className.replace('jstree-closed', 'jstree-open');\n\t\t\t\t\t\td[0].setAttribute(\"aria-expanded\", true);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.trigger('before_open', { \"node\" : obj });\n\t\t\t\t\t\td\n\t\t\t\t\t\t\t.children(\".jstree-children\").css(\"display\",\"none\").end()\n\t\t\t\t\t\t\t.removeClass(\"jstree-closed\").addClass(\"jstree-open\").attr(\"aria-expanded\", true)\n\t\t\t\t\t\t\t.children(\".jstree-children\").stop(true, true)\n\t\t\t\t\t\t\t\t.slideDown(animation, function () {\n\t\t\t\t\t\t\t\t\tthis.style.display = \"\";\n\t\t\t\t\t\t\t\t\tif (t.element) {\n\t\t\t\t\t\t\t\t\t\tt.trigger(\"after_open\", { \"node\" : obj });\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}\n\t\t\t\t}\n\t\t\t\tobj.state.opened = true;\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback.call(this, obj, true);\n\t\t\t\t}\n\t\t\t\tif(!d.length) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when a node is about to be opened (if the node is supposed to be in the DOM, it will be, but it won't be visible yet)\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name before_open.jstree\n\t\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger('before_open', { \"node\" : obj });\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when a node is opened (if there is an animation it will not be completed yet)\n\t\t\t\t * @event\n\t\t\t\t * @name open_node.jstree\n\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t */\n\t\t\t\tthis.trigger('open_node', { \"node\" : obj });\n\t\t\t\tif(!animation || !d.length) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when a node is opened and the animation is complete\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name after_open.jstree\n\t\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger(\"after_open\", { \"node\" : obj });\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * opens every parent of a node (node should be loaded)\n\t\t * @name _open_to(obj)\n\t\t * @param {mixed} obj the node to reveal\n\t\t * @private\n\t\t */\n\t\t_open_to : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar i, j, p = obj.parents;\n\t\t\tfor(i = 0, j = p.length; i < j; i+=1) {\n\t\t\t\tif(i !== $.jstree.root) {\n\t\t\t\t\tthis.open_node(p[i], false, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $('#' + obj.id.replace($.jstree.idregex,'\\\\$&'), this.element);\n\t\t},\n\t\t/**\n\t\t * closes a node, hiding its children\n\t\t * @name close_node(obj [, animation])\n\t\t * @param {mixed} obj the node to close\n\t\t * @param {Number} animation the animation duration in milliseconds when closing the node (overrides the `core.animation` setting). Use `false` for no animation.\n\t\t * @trigger close_node.jstree, after_close.jstree\n\t\t */\n\t\tclose_node : function (obj, animation) {\n\t\t\tvar t1, t2, t, d;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.close_node(obj[t1], animation);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(this.is_closed(obj)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tanimation = animation === undefined ? this.settings.core.animation : animation;\n\t\t\tt = this;\n\t\t\td = this.get_node(obj, true);\n\n\t\t\tobj.state.opened = false;\n\t\t\t/**\n\t\t\t * triggered when a node is closed (if there is an animation it will not be complete yet)\n\t\t\t * @event\n\t\t\t * @name close_node.jstree\n\t\t\t * @param {Object} node the closed node\n\t\t\t */\n\t\t\tthis.trigger('close_node',{ \"node\" : obj });\n\t\t\tif(!d.length) {\n\t\t\t\t/**\n\t\t\t\t * triggered when a node is closed and the animation is complete\n\t\t\t\t * @event\n\t\t\t\t * @name after_close.jstree\n\t\t\t\t * @param {Object} node the closed node\n\t\t\t\t */\n\t\t\t\tthis.trigger(\"after_close\", { \"node\" : obj });\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif(!animation) {\n\t\t\t\t\td[0].className = d[0].className.replace('jstree-open', 'jstree-closed');\n\t\t\t\t\td.attr(\"aria-expanded\", false).children('.jstree-children').remove();\n\t\t\t\t\tthis.trigger(\"after_close\", { \"node\" : obj });\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\td\n\t\t\t\t\t\t.children(\".jstree-children\").attr(\"style\",\"display:block !important\").end()\n\t\t\t\t\t\t.removeClass(\"jstree-open\").addClass(\"jstree-closed\").attr(\"aria-expanded\", false)\n\t\t\t\t\t\t.children(\".jstree-children\").stop(true, true).slideUp(animation, function () {\n\t\t\t\t\t\t\tthis.style.display = \"\";\n\t\t\t\t\t\t\td.children('.jstree-children').remove();\n\t\t\t\t\t\t\tif (t.element) {\n\t\t\t\t\t\t\t\tt.trigger(\"after_close\", { \"node\" : obj });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * toggles a node - closing it if it is open, opening it if it is closed\n\t\t * @name toggle_node(obj)\n\t\t * @param {mixed} obj the node to toggle\n\t\t */\n\t\ttoggle_node : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.toggle_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.is_closed(obj)) {\n\t\t\t\treturn this.open_node(obj);\n\t\t\t}\n\t\t\tif(this.is_open(obj)) {\n\t\t\t\treturn this.close_node(obj);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * opens all nodes within a node (or the tree), revaling their children. If the node is not loaded it will be loaded and opened once ready.\n\t\t * @name open_all([obj, animation, original_obj])\n\t\t * @param {mixed} obj the node to open recursively, omit to open all nodes in the tree\n\t\t * @param {Number} animation the animation duration in milliseconds when opening the nodes, the default is no animation\n\t\t * @param {jQuery} reference to the node that started the process (internal use)\n\t\t * @trigger open_all.jstree\n\t\t */\n\t\topen_all : function (obj, animation, original_obj) {\n\t\t\tif(!obj) { obj = $.jstree.root; }\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tvar dom = obj.id === $.jstree.root ? this.get_container_ul() : this.get_node(obj, true), i, j, _this;\n\t\t\tif(!dom.length) {\n\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\tif(this.is_closed(this._model.data[obj.children_d[i]])) {\n\t\t\t\t\t\tthis._model.data[obj.children_d[i]].state.opened = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.trigger('open_all', { \"node\" : obj });\n\t\t\t}\n\t\t\toriginal_obj = original_obj || dom;\n\t\t\t_this = this;\n\t\t\tdom = this.is_closed(obj) ? dom.find('.jstree-closed').addBack() : dom.find('.jstree-closed');\n\t\t\tdom.each(function () {\n\t\t\t\t_this.open_node(\n\t\t\t\t\tthis,\n\t\t\t\t\tfunction(node, status) { if(status && this.is_parent(node)) { this.open_all(node, animation, original_obj); } },\n\t\t\t\t\tanimation || 0\n\t\t\t\t);\n\t\t\t});\n\t\t\tif(original_obj.find('.jstree-closed').length === 0) {\n\t\t\t\t/**\n\t\t\t\t * triggered when an `open_all` call completes\n\t\t\t\t * @event\n\t\t\t\t * @name open_all.jstree\n\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t */\n\t\t\t\tthis.trigger('open_all', { \"node\" : this.get_node(original_obj) });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * closes all nodes within a node (or the tree), revaling their children\n\t\t * @name close_all([obj, animation])\n\t\t * @param {mixed} obj the node to close recursively, omit to close all nodes in the tree\n\t\t * @param {Number} animation the animation duration in milliseconds when closing the nodes, the default is no animation\n\t\t * @trigger close_all.jstree\n\t\t */\n\t\tclose_all : function (obj, animation) {\n\t\t\tif(!obj) { obj = $.jstree.root; }\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tvar dom = obj.id === $.jstree.root ? this.get_container_ul() : this.get_node(obj, true),\n\t\t\t\t_this = this, i, j;\n\t\t\tif(dom.length) {\n\t\t\t\tdom = this.is_open(obj) ? dom.find('.jstree-open').addBack() : dom.find('.jstree-open');\n\t\t\t\t$(dom.get().reverse()).each(function () { _this.close_node(this, animation || 0); });\n\t\t\t}\n\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\tthis._model.data[obj.children_d[i]].state.opened = false;\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when an `close_all` call completes\n\t\t\t * @event\n\t\t\t * @name close_all.jstree\n\t\t\t * @param {Object} node the closed node\n\t\t\t */\n\t\t\tthis.trigger('close_all', { \"node\" : obj });\n\t\t},\n\t\t/**\n\t\t * checks if a node is disabled (not selectable)\n\t\t * @name is_disabled(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_disabled : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state && obj.state.disabled;\n\t\t},\n\t\t/**\n\t\t * enables a node - so that it can be selected\n\t\t * @name enable_node(obj)\n\t\t * @param {mixed} obj the node to enable\n\t\t * @trigger enable_node.jstree\n\t\t */\n\t\tenable_node : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.enable_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj.state.disabled = false;\n\t\t\tthis.get_node(obj,true).children('.jstree-anchor').removeClass('jstree-disabled').attr('aria-disabled', false);\n\t\t\t/**\n\t\t\t * triggered when an node is enabled\n\t\t\t * @event\n\t\t\t * @name enable_node.jstree\n\t\t\t * @param {Object} node the enabled node\n\t\t\t */\n\t\t\tthis.trigger('enable_node', { 'node' : obj });\n\t\t},\n\t\t/**\n\t\t * disables a node - so that it can not be selected\n\t\t * @name disable_node(obj)\n\t\t * @param {mixed} obj the node to disable\n\t\t * @trigger disable_node.jstree\n\t\t */\n\t\tdisable_node : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.disable_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj.state.disabled = true;\n\t\t\tthis.get_node(obj,true).children('.jstree-anchor').addClass('jstree-disabled').attr('aria-disabled', true);\n\t\t\t/**\n\t\t\t * triggered when an node is disabled\n\t\t\t * @event\n\t\t\t * @name disable_node.jstree\n\t\t\t * @param {Object} node the disabled node\n\t\t\t */\n\t\t\tthis.trigger('disable_node', { 'node' : obj });\n\t\t},\n\t\t/**\n\t\t * determines if a node is hidden\n\t\t * @name is_hidden(obj)\n\t\t * @param {mixed} obj the node\n\t\t */\n\t\tis_hidden : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj.state.hidden === true;\n\t\t},\n\t\t/**\n\t\t * hides a node - it is still in the structure but will not be visible\n\t\t * @name hide_node(obj)\n\t\t * @param {mixed} obj the node to hide\n\t\t * @param {Boolean} skip_redraw internal parameter controlling if redraw is called\n\t\t * @trigger hide_node.jstree\n\t\t */\n\t\thide_node : function (obj, skip_redraw) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.hide_node(obj[t1], true);\n\t\t\t\t}\n\t\t\t\tif (!skip_redraw) {\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(!obj.state.hidden) {\n\t\t\t\tobj.state.hidden = true;\n\t\t\t\tthis._node_changed(obj.parent);\n\t\t\t\tif(!skip_redraw) {\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is hidden\n\t\t\t\t * @event\n\t\t\t\t * @name hide_node.jstree\n\t\t\t\t * @param {Object} node the hidden node\n\t\t\t\t */\n\t\t\t\tthis.trigger('hide_node', { 'node' : obj });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * shows a node\n\t\t * @name show_node(obj)\n\t\t * @param {mixed} obj the node to show\n\t\t * @param {Boolean} skip_redraw internal parameter controlling if redraw is called\n\t\t * @trigger show_node.jstree\n\t\t */\n\t\tshow_node : function (obj, skip_redraw) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.show_node(obj[t1], true);\n\t\t\t\t}\n\t\t\t\tif (!skip_redraw) {\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(obj.state.hidden) {\n\t\t\t\tobj.state.hidden = false;\n\t\t\t\tthis._node_changed(obj.parent);\n\t\t\t\tif(!skip_redraw) {\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is shown\n\t\t\t\t * @event\n\t\t\t\t * @name show_node.jstree\n\t\t\t\t * @param {Object} node the shown node\n\t\t\t\t */\n\t\t\t\tthis.trigger('show_node', { 'node' : obj });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * hides all nodes\n\t\t * @name hide_all()\n\t\t * @trigger hide_all.jstree\n\t\t */\n\t\thide_all : function (skip_redraw) {\n\t\t\tvar i, m = this._model.data, ids = [];\n\t\t\tfor(i in m) {\n\t\t\t\tif(m.hasOwnProperty(i) && i !== $.jstree.root && !m[i].state.hidden) {\n\t\t\t\t\tm[i].state.hidden = true;\n\t\t\t\t\tids.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._model.force_full_redraw = true;\n\t\t\tif(!skip_redraw) {\n\t\t\t\tthis.redraw();\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when all nodes are hidden\n\t\t\t * @event\n\t\t\t * @name hide_all.jstree\n\t\t\t * @param {Array} nodes the IDs of all hidden nodes\n\t\t\t */\n\t\t\tthis.trigger('hide_all', { 'nodes' : ids });\n\t\t\treturn ids;\n\t\t},\n\t\t/**\n\t\t * shows all nodes\n\t\t * @name show_all()\n\t\t * @trigger show_all.jstree\n\t\t */\n\t\tshow_all : function (skip_redraw) {\n\t\t\tvar i, m = this._model.data, ids = [];\n\t\t\tfor(i in m) {\n\t\t\t\tif(m.hasOwnProperty(i) && i !== $.jstree.root && m[i].state.hidden) {\n\t\t\t\t\tm[i].state.hidden = false;\n\t\t\t\t\tids.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._model.force_full_redraw = true;\n\t\t\tif(!skip_redraw) {\n\t\t\t\tthis.redraw();\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when all nodes are shown\n\t\t\t * @event\n\t\t\t * @name show_all.jstree\n\t\t\t * @param {Array} nodes the IDs of all shown nodes\n\t\t\t */\n\t\t\tthis.trigger('show_all', { 'nodes' : ids });\n\t\t\treturn ids;\n\t\t},\n\t\t/**\n\t\t * called when a node is selected by the user. Used internally.\n\t\t * @private\n\t\t * @name activate_node(obj, e)\n\t\t * @param {mixed} obj the node\n\t\t * @param {Object} e the related event\n\t\t * @trigger activate_node.jstree, changed.jstree\n\t\t */\n\t\tactivate_node : function (obj, e) {\n\t\t\tif(this.is_disabled(obj)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(!e || typeof e !== 'object') {\n\t\t\t\te = {};\n\t\t\t}\n\n\t\t\t// ensure last_clicked is still in the DOM, make it fresh (maybe it was moved?) and make sure it is still selected, if not - make last_clicked the last selected node\n\t\t\tthis._data.core.last_clicked = this._data.core.last_clicked && this._data.core.last_clicked.id !== undefined ? this.get_node(this._data.core.last_clicked.id) : null;\n\t\t\tif(this._data.core.last_clicked && !this._data.core.last_clicked.state.selected) { this._data.core.last_clicked = null; }\n\t\t\tif(!this._data.core.last_clicked && this._data.core.selected.length) { this._data.core.last_clicked = this.get_node(this._data.core.selected[this._data.core.selected.length - 1]); }\n\n\t\t\tif(!this.settings.core.multiple || (!e.metaKey && !e.ctrlKey && !e.shiftKey) || (e.shiftKey && (!this._data.core.last_clicked || !this.get_parent(obj) || this.get_parent(obj) !== this._data.core.last_clicked.parent ) )) {\n\t\t\t\tif(!this.settings.core.multiple && (e.metaKey || e.ctrlKey || e.shiftKey) && this.is_selected(obj)) {\n\t\t\t\t\tthis.deselect_node(obj, false, e);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.deselect_all(true);\n\t\t\t\t\tthis.select_node(obj, false, false, e);\n\t\t\t\t\tthis._data.core.last_clicked = this.get_node(obj);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif(e.shiftKey) {\n\t\t\t\t\tvar o = this.get_node(obj).id,\n\t\t\t\t\t\tl = this._data.core.last_clicked.id,\n\t\t\t\t\t\tp = this.get_node(this._data.core.last_clicked.parent).children,\n\t\t\t\t\t\tc = false,\n\t\t\t\t\t\ti, j;\n\t\t\t\t\tfor(i = 0, j = p.length; i < j; i += 1) {\n\t\t\t\t\t\t// separate IFs work whem o and l are the same\n\t\t\t\t\t\tif(p[i] === o) {\n\t\t\t\t\t\t\tc = !c;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(p[i] === l) {\n\t\t\t\t\t\t\tc = !c;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(!this.is_disabled(p[i]) && (c || p[i] === o || p[i] === l)) {\n\t\t\t\t\t\t\tif (!this.is_hidden(p[i])) {\n\t\t\t\t\t\t\t\tthis.select_node(p[i], true, false, e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.deselect_node(p[i], true, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.trigger('changed', { 'action' : 'select_node', 'node' : this.get_node(obj), 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(!this.is_selected(obj)) {\n\t\t\t\t\t\tthis.select_node(obj, false, false, e);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.deselect_node(obj, false, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when an node is clicked or intercated with by the user\n\t\t\t * @event\n\t\t\t * @name activate_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {Object} event the ooriginal event (if any) which triggered the call (may be an empty object)\n\t\t\t */\n\t\t\tthis.trigger('activate_node', { 'node' : this.get_node(obj), 'event' : e });\n\t\t},\n\t\t/**\n\t\t * applies the hover state on a node, called when a node is hovered by the user. Used internally.\n\t\t * @private\n\t\t * @name hover_node(obj)\n\t\t * @param {mixed} obj\n\t\t * @trigger hover_node.jstree\n\t\t */\n\t\thover_node : function (obj) {\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(!obj || !obj.length || obj.children('.jstree-hovered').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar o = this.element.find('.jstree-hovered'), t = this.element;\n\t\t\tif(o && o.length) { this.dehover_node(o); }\n\n\t\t\tobj.children('.jstree-anchor').addClass('jstree-hovered');\n\t\t\t/**\n\t\t\t * triggered when an node is hovered\n\t\t\t * @event\n\t\t\t * @name hover_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t */\n\t\t\tthis.trigger('hover_node', { 'node' : this.get_node(obj) });\n\t\t\tsetTimeout(function () { t.attr('aria-activedescendant', obj[0].id); }, 0);\n\t\t},\n\t\t/**\n\t\t * removes the hover state from a nodecalled when a node is no longer hovered by the user. Used internally.\n\t\t * @private\n\t\t * @name dehover_node(obj)\n\t\t * @param {mixed} obj\n\t\t * @trigger dehover_node.jstree\n\t\t */\n\t\tdehover_node : function (obj) {\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(!obj || !obj.length || !obj.children('.jstree-hovered').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj.children('.jstree-anchor').removeClass('jstree-hovered');\n\t\t\t/**\n\t\t\t * triggered when an node is no longer hovered\n\t\t\t * @event\n\t\t\t * @name dehover_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t */\n\t\t\tthis.trigger('dehover_node', { 'node' : this.get_node(obj) });\n\t\t},\n\t\t/**\n\t\t * select a node\n\t\t * @name select_node(obj [, supress_event, prevent_open])\n\t\t * @param {mixed} obj an array can be used to select multiple nodes\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @param {Boolean} prevent_open if set to `true` parents of the selected node won't be opened\n\t\t * @trigger select_node.jstree, changed.jstree\n\t\t */\n\t\tselect_node : function (obj, supress_event, prevent_open, e) {\n\t\t\tvar dom, t1, t2, th;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.select_node(obj[t1], supress_event, prevent_open, e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(!obj.state.selected) {\n\t\t\t\tobj.state.selected = true;\n\t\t\t\tthis._data.core.selected.push(obj.id);\n\t\t\t\tif(!prevent_open) {\n\t\t\t\t\tdom = this._open_to(obj);\n\t\t\t\t}\n\t\t\t\tif(dom && dom.length) {\n\t\t\t\t\tdom.attr('aria-selected', true).children('.jstree-anchor').addClass('jstree-clicked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is selected\n\t\t\t\t * @event\n\t\t\t\t * @name select_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this select_node\n\t\t\t\t */\n\t\t\t\tthis.trigger('select_node', { 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\tif(!supress_event) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when selection changes\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name changed.jstree\n\t\t\t\t\t * @param {Object} node\n\t\t\t\t\t * @param {Object} action the action that caused the selection to change\n\t\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t\t * @param {Object} event the event (if any) that triggered this changed event\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger('changed', { 'action' : 'select_node', 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * deselect a node\n\t\t * @name deselect_node(obj [, supress_event])\n\t\t * @param {mixed} obj an array can be used to deselect multiple nodes\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @trigger deselect_node.jstree, changed.jstree\n\t\t */\n\t\tdeselect_node : function (obj, supress_event, e) {\n\t\t\tvar t1, t2, dom;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.deselect_node(obj[t1], supress_event, e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(obj.state.selected) {\n\t\t\t\tobj.state.selected = false;\n\t\t\t\tthis._data.core.selected = $.vakata.array_remove_item(this._data.core.selected, obj.id);\n\t\t\t\tif(dom.length) {\n\t\t\t\t\tdom.attr('aria-selected', false).children('.jstree-anchor').removeClass('jstree-clicked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is deselected\n\t\t\t\t * @event\n\t\t\t\t * @name deselect_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this deselect_node\n\t\t\t\t */\n\t\t\t\tthis.trigger('deselect_node', { 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\tif(!supress_event) {\n\t\t\t\t\tthis.trigger('changed', { 'action' : 'deselect_node', 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * select all nodes in the tree\n\t\t * @name select_all([supress_event])\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @trigger select_all.jstree, changed.jstree\n\t\t */\n\t\tselect_all : function (supress_event) {\n\t\t\tvar tmp = this._data.core.selected.concat([]), i, j;\n\t\t\tthis._data.core.selected = this._model.data[$.jstree.root].children_d.concat();\n\t\t\tfor(i = 0, j = this._data.core.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.core.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.core.selected[i]].state.selected = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.redraw(true);\n\t\t\t/**\n\t\t\t * triggered when all nodes are selected\n\t\t\t * @event\n\t\t\t * @name select_all.jstree\n\t\t\t * @param {Array} selected the current selection\n\t\t\t */\n\t\t\tthis.trigger('select_all', { 'selected' : this._data.core.selected });\n\t\t\tif(!supress_event) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'select_all', 'selected' : this._data.core.selected, 'old_selection' : tmp });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * deselect all selected nodes\n\t\t * @name deselect_all([supress_event])\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @trigger deselect_all.jstree, changed.jstree\n\t\t */\n\t\tdeselect_all : function (supress_event) {\n\t\t\tvar tmp = this._data.core.selected.concat([]), i, j;\n\t\t\tfor(i = 0, j = this._data.core.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.core.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.core.selected[i]].state.selected = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._data.core.selected = [];\n\t\t\tthis.element.find('.jstree-clicked').removeClass('jstree-clicked').parent().attr('aria-selected', false);\n\t\t\t/**\n\t\t\t * triggered when all nodes are deselected\n\t\t\t * @event\n\t\t\t * @name deselect_all.jstree\n\t\t\t * @param {Object} node the previous selection\n\t\t\t * @param {Array} selected the current selection\n\t\t\t */\n\t\t\tthis.trigger('deselect_all', { 'selected' : this._data.core.selected, 'node' : tmp });\n\t\t\tif(!supress_event) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'deselect_all', 'selected' : this._data.core.selected, 'old_selection' : tmp });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * checks if a node is selected\n\t\t * @name is_selected(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_selected : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn obj.state.selected;\n\t\t},\n\t\t/**\n\t\t * get an array of all selected nodes\n\t\t * @name get_selected([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t */\n\t\tget_selected : function (full) {\n\t\t\treturn full ? $.map(this._data.core.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.core.selected.slice();\n\t\t},\n\t\t/**\n\t\t * get an array of all top level selected nodes (ignoring children of selected nodes)\n\t\t * @name get_top_selected([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t */\n\t\tget_top_selected : function (full) {\n\t\t\tvar tmp = this.get_selected(true),\n\t\t\t\tobj = {}, i, j, k, l;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tobj[tmp[i].id] = tmp[i];\n\t\t\t}\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tfor(k = 0, l = tmp[i].children_d.length; k < l; k++) {\n\t\t\t\t\tif(obj[tmp[i].children_d[k]]) {\n\t\t\t\t\t\tdelete obj[tmp[i].children_d[k]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = [];\n\t\t\tfor(i in obj) {\n\t\t\t\tif(obj.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp;\n\t\t},\n\t\t/**\n\t\t * get an array of all bottom level selected nodes (ignoring selected parents)\n\t\t * @name get_bottom_selected([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t */\n\t\tget_bottom_selected : function (full) {\n\t\t\tvar tmp = this.get_selected(true),\n\t\t\t\tobj = [], i, j;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tif(!tmp[i].children.length) {\n\t\t\t\t\tobj.push(tmp[i].id);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj;\n\t\t},\n\t\t/**\n\t\t * gets the current state of the tree so that it can be restored later with `set_state(state)`. Used internally.\n\t\t * @name get_state()\n\t\t * @private\n\t\t * @return {Object}\n\t\t */\n\t\tget_state : function () {\n\t\t\tvar state\t= {\n\t\t\t\t'core' : {\n\t\t\t\t\t'open' : [],\n\t\t\t\t\t'scroll' : {\n\t\t\t\t\t\t'left' : this.element.scrollLeft(),\n\t\t\t\t\t\t'top' : this.element.scrollTop()\n\t\t\t\t\t},\n\t\t\t\t\t/*!\n\t\t\t\t\t'themes' : {\n\t\t\t\t\t\t'name' : this.get_theme(),\n\t\t\t\t\t\t'icons' : this._data.core.themes.icons,\n\t\t\t\t\t\t'dots' : this._data.core.themes.dots\n\t\t\t\t\t},\n\t\t\t\t\t*/\n\t\t\t\t\t'selected' : []\n\t\t\t\t}\n\t\t\t}, i;\n\t\t\tfor(i in this._model.data) {\n\t\t\t\tif(this._model.data.hasOwnProperty(i)) {\n\t\t\t\t\tif(i !== $.jstree.root) {\n\t\t\t\t\t\tif(this._model.data[i].state.opened) {\n\t\t\t\t\t\t\tstate.core.open.push(i);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this._model.data[i].state.selected) {\n\t\t\t\t\t\t\tstate.core.selected.push(i);\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 state;\n\t\t},\n\t\t/**\n\t\t * sets the state of the tree. Used internally.\n\t\t * @name set_state(state [, callback])\n\t\t * @private\n\t\t * @param {Object} state the state to restore. Keep in mind this object is passed by reference and jstree will modify it.\n\t\t * @param {Function} callback an optional function to execute once the state is restored.\n\t\t * @trigger set_state.jstree\n\t\t */\n\t\tset_state : function (state, callback) {\n\t\t\tif(state) {\n\t\t\t\tif(state.core && state.core.selected && state.core.initial_selection === undefined) {\n\t\t\t\t\tstate.core.initial_selection = this._data.core.selected.concat([]).sort().join(',');\n\t\t\t\t}\n\t\t\t\tif(state.core) {\n\t\t\t\t\tvar res, n, t, _this, i;\n\t\t\t\t\tif(state.core.open) {\n\t\t\t\t\t\tif(!$.isArray(state.core.open) || !state.core.open.length) {\n\t\t\t\t\t\t\tdelete state.core.open;\n\t\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._load_nodes(state.core.open, function (nodes) {\n\t\t\t\t\t\t\t\tthis.open_node(nodes, false, 0);\n\t\t\t\t\t\t\t\tdelete state.core.open;\n\t\t\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif(state.core.scroll) {\n\t\t\t\t\t\tif(state.core.scroll && state.core.scroll.left !== undefined) {\n\t\t\t\t\t\t\tthis.element.scrollLeft(state.core.scroll.left);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(state.core.scroll && state.core.scroll.top !== undefined) {\n\t\t\t\t\t\t\tthis.element.scrollTop(state.core.scroll.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete state.core.scroll;\n\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif(state.core.selected) {\n\t\t\t\t\t\t_this = this;\n\t\t\t\t\t\tif (state.core.initial_selection === undefined ||\n\t\t\t\t\t\t\tstate.core.initial_selection === this._data.core.selected.concat([]).sort().join(',')\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis.deselect_all();\n\t\t\t\t\t\t\t$.each(state.core.selected, function (i, v) {\n\t\t\t\t\t\t\t\t_this.select_node(v, false, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete state.core.initial_selection;\n\t\t\t\t\t\tdelete state.core.selected;\n\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tfor(i in state) {\n\t\t\t\t\t\tif(state.hasOwnProperty(i) && i !== \"core\" && $.inArray(i, this.settings.plugins) === -1) {\n\t\t\t\t\t\t\tdelete state[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif($.isEmptyObject(state.core)) {\n\t\t\t\t\t\tdelete state.core;\n\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif($.isEmptyObject(state)) {\n\t\t\t\t\tstate = null;\n\t\t\t\t\tif(callback) { callback.call(this); }\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when a `set_state` call completes\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name set_state.jstree\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger('set_state');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t/**\n\t\t * refreshes the tree - all nodes are reloaded with calls to `load_node`.\n\t\t * @name refresh()\n\t\t * @param {Boolean} skip_loading an option to skip showing the loading indicator\n\t\t * @param {Mixed} forget_state if set to `true` state will not be reapplied, if set to a function (receiving the current state as argument) the result of that function will be used as state\n\t\t * @trigger refresh.jstree\n\t\t */\n\t\trefresh : function (skip_loading, forget_state) {\n\t\t\tthis._data.core.state = forget_state === true ? {} : this.get_state();\n\t\t\tif(forget_state && $.isFunction(forget_state)) { this._data.core.state = forget_state.call(this, this._data.core.state); }\n\t\t\tthis._cnt = 0;\n\t\t\tthis._model.data = {};\n\t\t\tthis._model.data[$.jstree.root] = {\n\t\t\t\tid : $.jstree.root,\n\t\t\t\tparent : null,\n\t\t\t\tparents : [],\n\t\t\t\tchildren : [],\n\t\t\t\tchildren_d : [],\n\t\t\t\tstate : { loaded : false }\n\t\t\t};\n\t\t\tthis._data.core.selected = [];\n\t\t\tthis._data.core.last_clicked = null;\n\t\t\tthis._data.core.focused = null;\n\n\t\t\tvar c = this.get_container_ul()[0].className;\n\t\t\tif(!skip_loading) {\n\t\t\t\tthis.element.html(\"<\"+\"ul class='\"+c+\"' role='group'><\"+\"li class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='treeitem' id='j\"+this._id+\"_loading'><\"+\"a class='jstree-anchor' href='#'>\" + this.get_string(\"Loading ...\") + \"\");\n\t\t\t\tthis.element.attr('aria-activedescendant','j'+this._id+'_loading');\n\t\t\t}\n\t\t\tthis.load_node($.jstree.root, function (o, s) {\n\t\t\t\tif(s) {\n\t\t\t\t\tthis.get_container_ul()[0].className = c;\n\t\t\t\t\tif(this._firstChild(this.get_container_ul()[0])) {\n\t\t\t\t\t\tthis.element.attr('aria-activedescendant',this._firstChild(this.get_container_ul()[0]).id);\n\t\t\t\t\t}\n\t\t\t\t\tthis.set_state($.extend(true, {}, this._data.core.state), function () {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * triggered when a `refresh` call completes\n\t\t\t\t\t\t * @event\n\t\t\t\t\t\t * @name refresh.jstree\n\t\t\t\t\t\t */\n\t\t\t\t\t\tthis.trigger('refresh');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis._data.core.state = null;\n\t\t\t});\n\t\t},\n\t\t/**\n\t\t * refreshes a node in the tree (reload its children) all opened nodes inside that node are reloaded with calls to `load_node`.\n\t\t * @name refresh_node(obj)\n\t\t * @param {mixed} obj the node\n\t\t * @trigger refresh_node.jstree\n\t\t */\n\t\trefresh_node : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) { return false; }\n\t\t\tvar opened = [], to_load = [], s = this._data.core.selected.concat([]);\n\t\t\tto_load.push(obj.id);\n\t\t\tif(obj.state.opened === true) { opened.push(obj.id); }\n\t\t\tthis.get_node(obj, true).find('.jstree-open').each(function() { to_load.push(this.id); opened.push(this.id); });\n\t\t\tthis._load_nodes(to_load, $.proxy(function (nodes) {\n\t\t\t\tthis.open_node(opened, false, 0);\n\t\t\t\tthis.select_node(s);\n\t\t\t\t/**\n\t\t\t\t * triggered when a node is refreshed\n\t\t\t\t * @event\n\t\t\t\t * @name refresh_node.jstree\n\t\t\t\t * @param {Object} node - the refreshed node\n\t\t\t\t * @param {Array} nodes - an array of the IDs of the nodes that were reloaded\n\t\t\t\t */\n\t\t\t\tthis.trigger('refresh_node', { 'node' : obj, 'nodes' : nodes });\n\t\t\t}, this), false, true);\n\t\t},\n\t\t/**\n\t\t * set (change) the ID of a node\n\t\t * @name set_id(obj, id)\n\t\t * @param {mixed} obj the node\n\t\t * @param {String} id the new ID\n\t\t * @return {Boolean}\n\t\t * @trigger set_id.jstree\n\t\t */\n\t\tset_id : function (obj, id) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) { return false; }\n\t\t\tvar i, j, m = this._model.data, old = obj.id;\n\t\t\tid = id.toString();\n\t\t\t// update parents (replace current ID with new one in children and children_d)\n\t\t\tm[obj.parent].children[$.inArray(obj.id, m[obj.parent].children)] = id;\n\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\tm[obj.parents[i]].children_d[$.inArray(obj.id, m[obj.parents[i]].children_d)] = id;\n\t\t\t}\n\t\t\t// update children (replace current ID with new one in parent and parents)\n\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\tm[obj.children[i]].parent = id;\n\t\t\t}\n\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\tm[obj.children_d[i]].parents[$.inArray(obj.id, m[obj.children_d[i]].parents)] = id;\n\t\t\t}\n\t\t\ti = $.inArray(obj.id, this._data.core.selected);\n\t\t\tif(i !== -1) { this._data.core.selected[i] = id; }\n\t\t\t// update model and obj itself (obj.id, this._model.data[KEY])\n\t\t\ti = this.get_node(obj.id, true);\n\t\t\tif(i) {\n\t\t\t\ti.attr('id', id); //.children('.jstree-anchor').attr('id', id + '_anchor').end().attr('aria-labelledby', id + '_anchor');\n\t\t\t\tif(this.element.attr('aria-activedescendant') === obj.id) {\n\t\t\t\t\tthis.element.attr('aria-activedescendant', id);\n\t\t\t\t}\n\t\t\t}\n\t\t\tdelete m[obj.id];\n\t\t\tobj.id = id;\n\t\t\tobj.li_attr.id = id;\n\t\t\tm[id] = obj;\n\t\t\t/**\n\t\t\t * triggered when a node id value is changed\n\t\t\t * @event\n\t\t\t * @name set_id.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} old the old id\n\t\t\t */\n\t\t\tthis.trigger('set_id',{ \"node\" : obj, \"new\" : obj.id, \"old\" : old });\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * get the text value of a node\n\t\t * @name get_text(obj)\n\t\t * @param {mixed} obj the node\n\t\t * @return {String}\n\t\t */\n\t\tget_text : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn (!obj || obj.id === $.jstree.root) ? false : obj.text;\n\t\t},\n\t\t/**\n\t\t * set the text value of a node. Used internally, please use `rename_node(obj, val)`.\n\t\t * @private\n\t\t * @name set_text(obj, val)\n\t\t * @param {mixed} obj the node, you can pass an array to set the text on multiple nodes\n\t\t * @param {String} val the new text value\n\t\t * @return {Boolean}\n\t\t * @trigger set_text.jstree\n\t\t */\n\t\tset_text : function (obj, val) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.set_text(obj[t1], val);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) { return false; }\n\t\t\tobj.text = val;\n\t\t\tif(this.get_node(obj, true).length) {\n\t\t\t\tthis.redraw_node(obj.id);\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when a node text value is changed\n\t\t\t * @event\n\t\t\t * @name set_text.jstree\n\t\t\t * @param {Object} obj\n\t\t\t * @param {String} text the new value\n\t\t\t */\n\t\t\tthis.trigger('set_text',{ \"obj\" : obj, \"text\" : val });\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * gets a JSON representation of a node (or the whole tree)\n\t\t * @name get_json([obj, options])\n\t\t * @param {mixed} obj\n\t\t * @param {Object} options\n\t\t * @param {Boolean} options.no_state do not return state information\n\t\t * @param {Boolean} options.no_id do not return ID\n\t\t * @param {Boolean} options.no_children do not include children\n\t\t * @param {Boolean} options.no_data do not include node data\n\t\t * @param {Boolean} options.no_li_attr do not include LI attributes\n\t\t * @param {Boolean} options.no_a_attr do not include A attributes\n\t\t * @param {Boolean} options.flat return flat JSON instead of nested\n\t\t * @return {Object}\n\t\t */\n\t\tget_json : function (obj, options, flat) {\n\t\t\tobj = this.get_node(obj || $.jstree.root);\n\t\t\tif(!obj) { return false; }\n\t\t\tif(options && options.flat && !flat) { flat = []; }\n\t\t\tvar tmp = {\n\t\t\t\t'id' : obj.id,\n\t\t\t\t'text' : obj.text,\n\t\t\t\t'icon' : this.get_icon(obj),\n\t\t\t\t'li_attr' : $.extend(true, {}, obj.li_attr),\n\t\t\t\t'a_attr' : $.extend(true, {}, obj.a_attr),\n\t\t\t\t'state' : {},\n\t\t\t\t'data' : options && options.no_data ? false : $.extend(true, $.isArray(obj.data)?[]:{}, obj.data)\n\t\t\t\t//( this.get_node(obj, true).length ? this.get_node(obj, true).data() : obj.data ),\n\t\t\t}, i, j;\n\t\t\tif(options && options.flat) {\n\t\t\t\ttmp.parent = obj.parent;\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttmp.children = [];\n\t\t\t}\n\t\t\tif(!options || !options.no_state) {\n\t\t\t\tfor(i in obj.state) {\n\t\t\t\t\tif(obj.state.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.state[i] = obj.state[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete tmp.state;\n\t\t\t}\n\t\t\tif(options && options.no_li_attr) {\n\t\t\t\tdelete tmp.li_attr;\n\t\t\t}\n\t\t\tif(options && options.no_a_attr) {\n\t\t\t\tdelete tmp.a_attr;\n\t\t\t}\n\t\t\tif(options && options.no_id) {\n\t\t\t\tdelete tmp.id;\n\t\t\t\tif(tmp.li_attr && tmp.li_attr.id) {\n\t\t\t\t\tdelete tmp.li_attr.id;\n\t\t\t\t}\n\t\t\t\tif(tmp.a_attr && tmp.a_attr.id) {\n\t\t\t\t\tdelete tmp.a_attr.id;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(options && options.flat && obj.id !== $.jstree.root) {\n\t\t\t\tflat.push(tmp);\n\t\t\t}\n\t\t\tif(!options || !options.no_children) {\n\t\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\t\tif(options && options.flat) {\n\t\t\t\t\t\tthis.get_json(obj.children[i], options, flat);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\ttmp.children.push(this.get_json(obj.children[i], options));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn options && options.flat ? flat : (obj.id === $.jstree.root ? tmp.children : tmp);\n\t\t},\n\t\t/**\n\t\t * create a new node (do not confuse with load_node)\n\t\t * @name create_node([par, node, pos, callback, is_loaded])\n\t\t * @param {mixed} par the parent node (to create a root node use either \"#\" (string) or `null`)\n\t\t * @param {mixed} node the data for the new node (a valid JSON object, or a simple string with the name)\n\t\t * @param {mixed} pos the index at which to insert the node, \"first\" and \"last\" are also supported, default is \"last\"\n\t\t * @param {Function} callback a function to be called once the node is created\n\t\t * @param {Boolean} is_loaded internal argument indicating if the parent node was succesfully loaded\n\t\t * @return {String} the ID of the newly create node\n\t\t * @trigger model.jstree, create_node.jstree\n\t\t */\n\t\tcreate_node : function (par, node, pos, callback, is_loaded) {\n\t\t\tif(par === null) { par = $.jstree.root; }\n\t\t\tpar = this.get_node(par);\n\t\t\tif(!par) { return false; }\n\t\t\tpos = pos === undefined ? \"last\" : pos;\n\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\treturn this.load_node(par, function () { this.create_node(par, node, pos, callback, true); });\n\t\t\t}\n\t\t\tif(!node) { node = { \"text\" : this.get_string('New node') }; }\n\t\t\tif(typeof node === \"string\") {\n\t\t\t\tnode = { \"text\" : node };\n\t\t\t} else {\n\t\t\t\tnode = $.extend(true, {}, node);\n\t\t\t}\n\t\t\tif(node.text === undefined) { node.text = this.get_string('New node'); }\n\t\t\tvar tmp, dpc, i, j;\n\n\t\t\tif(par.id === $.jstree.root) {\n\t\t\t\tif(pos === \"before\") { pos = \"first\"; }\n\t\t\t\tif(pos === \"after\") { pos = \"last\"; }\n\t\t\t}\n\t\t\tswitch(pos) {\n\t\t\t\tcase \"before\":\n\t\t\t\t\ttmp = this.get_node(par.parent);\n\t\t\t\t\tpos = $.inArray(par.id, tmp.children);\n\t\t\t\t\tpar = tmp;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"after\" :\n\t\t\t\t\ttmp = this.get_node(par.parent);\n\t\t\t\t\tpos = $.inArray(par.id, tmp.children) + 1;\n\t\t\t\t\tpar = tmp;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inside\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\tpos = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"last\":\n\t\t\t\t\tpos = par.children.length;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(!pos) { pos = 0; }\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(pos > par.children.length) { pos = par.children.length; }\n\t\t\tif(!node.id) { node.id = true; }\n\t\t\tif(!this.check(\"create_node\", node, par, pos)) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(node.id === true) { delete node.id; }\n\t\t\tnode = this._parse_model_from_json(node, par.id, par.parents.concat());\n\t\t\tif(!node) { return false; }\n\t\t\ttmp = this.get_node(node);\n\t\t\tdpc = [];\n\t\t\tdpc.push(node);\n\t\t\tdpc = dpc.concat(tmp.children_d);\n\t\t\tthis.trigger('model', { \"nodes\" : dpc, \"parent\" : par.id });\n\n\t\t\tpar.children_d = par.children_d.concat(dpc);\n\t\t\tfor(i = 0, j = par.parents.length; i < j; i++) {\n\t\t\t\tthis._model.data[par.parents[i]].children_d = this._model.data[par.parents[i]].children_d.concat(dpc);\n\t\t\t}\n\t\t\tnode = tmp;\n\t\t\ttmp = [];\n\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\ttmp[i >= pos ? i+1 : i] = par.children[i];\n\t\t\t}\n\t\t\ttmp[pos] = node.id;\n\t\t\tpar.children = tmp;\n\n\t\t\tthis.redraw_node(par, true);\n\t\t\t/**\n\t\t\t * triggered when a node is created\n\t\t\t * @event\n\t\t\t * @name create_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t * @param {Number} position the position of the new node among the parent's children\n\t\t\t */\n\t\t\tthis.trigger('create_node', { \"node\" : this.get_node(node), \"parent\" : par.id, \"position\" : pos });\n\t\t\tif(callback) { callback.call(this, this.get_node(node)); }\n\t\t\treturn node.id;\n\t\t},\n\t\t/**\n\t\t * set the text value of a node\n\t\t * @name rename_node(obj, val)\n\t\t * @param {mixed} obj the node, you can pass an array to rename multiple nodes to the same name\n\t\t * @param {String} val the new text value\n\t\t * @return {Boolean}\n\t\t * @trigger rename_node.jstree\n\t\t */\n\t\trename_node : function (obj, val) {\n\t\t\tvar t1, t2, old;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.rename_node(obj[t1], val);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) { return false; }\n\t\t\told = obj.text;\n\t\t\tif(!this.check(\"rename_node\", obj, this.get_parent(obj), val)) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.set_text(obj, val); // .apply(this, Array.prototype.slice.call(arguments))\n\t\t\t/**\n\t\t\t * triggered when a node is renamed\n\t\t\t * @event\n\t\t\t * @name rename_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} text the new value\n\t\t\t * @param {String} old the old value\n\t\t\t */\n\t\t\tthis.trigger('rename_node', { \"node\" : obj, \"text\" : val, \"old\" : old });\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * remove a node\n\t\t * @name delete_node(obj)\n\t\t * @param {mixed} obj the node, you can pass an array to delete multiple nodes\n\t\t * @return {Boolean}\n\t\t * @trigger delete_node.jstree, changed.jstree\n\t\t */\n\t\tdelete_node : function (obj) {\n\t\t\tvar t1, t2, par, pos, tmp, i, j, k, l, c, top, lft;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.delete_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) { return false; }\n\t\t\tpar = this.get_node(obj.parent);\n\t\t\tpos = $.inArray(obj.id, par.children);\n\t\t\tc = false;\n\t\t\tif(!this.check(\"delete_node\", obj, par, pos)) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(pos !== -1) {\n\t\t\t\tpar.children = $.vakata.array_remove(par.children, pos);\n\t\t\t}\n\t\t\ttmp = obj.children_d.concat([]);\n\t\t\ttmp.push(obj.id);\n\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\tthis._model.data[obj.parents[i]].children_d = $.vakata.array_filter(this._model.data[obj.parents[i]].children_d, function (v) {\n\t\t\t\t\treturn $.inArray(v, tmp) === -1;\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor(k = 0, l = tmp.length; k < l; k++) {\n\t\t\t\tif(this._model.data[tmp[k]].state.selected) {\n\t\t\t\t\tc = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (c) {\n\t\t\t\tthis._data.core.selected = $.vakata.array_filter(this._data.core.selected, function (v) {\n\t\t\t\t\treturn $.inArray(v, tmp) === -1;\n\t\t\t\t});\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when a node is deleted\n\t\t\t * @event\n\t\t\t * @name delete_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t */\n\t\t\tthis.trigger('delete_node', { \"node\" : obj, \"parent\" : par.id });\n\t\t\tif(c) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'delete_node', 'node' : obj, 'selected' : this._data.core.selected, 'parent' : par.id });\n\t\t\t}\n\t\t\tfor(k = 0, l = tmp.length; k < l; k++) {\n\t\t\t\tdelete this._model.data[tmp[k]];\n\t\t\t}\n\t\t\tif($.inArray(this._data.core.focused, tmp) !== -1) {\n\t\t\t\tthis._data.core.focused = null;\n\t\t\t\ttop = this.element[0].scrollTop;\n\t\t\t\tlft = this.element[0].scrollLeft;\n\t\t\t\tif(par.id === $.jstree.root) {\n\t\t\t\t\tif (this._model.data[$.jstree.root].children[0]) {\n\t\t\t\t\t\tthis.get_node(this._model.data[$.jstree.root].children[0], true).children('.jstree-anchor').focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.get_node(par, true).children('.jstree-anchor').focus();\n\t\t\t\t}\n\t\t\t\tthis.element[0].scrollTop = top;\n\t\t\t\tthis.element[0].scrollLeft = lft;\n\t\t\t}\n\t\t\tthis.redraw_node(par, true);\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * check if an operation is premitted on the tree. Used internally.\n\t\t * @private\n\t\t * @name check(chk, obj, par, pos)\n\t\t * @param {String} chk the operation to check, can be \"create_node\", \"rename_node\", \"delete_node\", \"copy_node\" or \"move_node\"\n\t\t * @param {mixed} obj the node\n\t\t * @param {mixed} par the parent\n\t\t * @param {mixed} pos the position to insert at, or if \"rename_node\" - the new name\n\t\t * @param {mixed} more some various additional information, for example if a \"move_node\" operations is triggered by DND this will be the hovered node\n\t\t * @return {Boolean}\n\t\t */\n\t\tcheck : function (chk, obj, par, pos, more) {\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tpar = par && par.id ? par : this.get_node(par);\n\t\t\tvar tmp = chk.match(/^move_node|copy_node|create_node$/i) ? par : obj,\n\t\t\t\tchc = this.settings.core.check_callback;\n\t\t\tif(chk === \"move_node\" || chk === \"copy_node\") {\n\t\t\t\tif((!more || !more.is_multi) && (obj.id === par.id || (chk === \"move_node\" && $.inArray(obj.id, par.children) === pos) || $.inArray(par.id, obj.children_d) !== -1)) {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_01', 'reason' : 'Moving parent inside child', 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(tmp && tmp.data) { tmp = tmp.data; }\n\t\t\tif(tmp && tmp.functions && (tmp.functions[chk] === false || tmp.functions[chk] === true)) {\n\t\t\t\tif(tmp.functions[chk] === false) {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_02', 'reason' : 'Node data prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t}\n\t\t\t\treturn tmp.functions[chk];\n\t\t\t}\n\t\t\tif(chc === false || ($.isFunction(chc) && chc.call(this, chk, obj, par, pos, more) === false) || (chc && chc[chk] === false)) {\n\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_03', 'reason' : 'User config for core.check_callback prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * get the last error\n\t\t * @name last_error()\n\t\t * @return {Object}\n\t\t */\n\t\tlast_error : function () {\n\t\t\treturn this._data.core.last_error;\n\t\t},\n\t\t/**\n\t\t * move a node to a new parent\n\t\t * @name move_node(obj, par [, pos, callback, is_loaded])\n\t\t * @param {mixed} obj the node to move, pass an array to move multiple nodes\n\t\t * @param {mixed} par the new parent\n\t\t * @param {mixed} pos the position to insert at (besides integer values, \"first\" and \"last\" are supported, as well as \"before\" and \"after\"), defaults to integer `0`\n\t\t * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position\n\t\t * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded\n\t\t * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn\n\t\t * @param {Boolean} instance internal parameter indicating if the node comes from another instance\n\t\t * @trigger move_node.jstree\n\t\t */\n\t\tmove_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) {\n\t\t\tvar t1, t2, old_par, old_pos, new_par, old_ins, is_multi, dpc, tmp, i, j, k, l, p;\n\n\t\t\tpar = this.get_node(par);\n\t\t\tpos = pos === undefined ? 0 : pos;\n\t\t\tif(!par) { return false; }\n\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\treturn this.load_node(par, function () { this.move_node(obj, par, pos, callback, true, false, origin); });\n\t\t\t}\n\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tif(obj.length === 1) {\n\t\t\t\t\tobj = obj[0];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t//obj = obj.slice();\n\t\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\t\tif((tmp = this.move_node(obj[t1], par, pos, callback, is_loaded, false, origin))) {\n\t\t\t\t\t\t\tpar = tmp;\n\t\t\t\t\t\t\tpos = \"after\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.redraw();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\n\t\t\tif(!obj || obj.id === $.jstree.root) { return false; }\n\n\t\t\told_par = (obj.parent || $.jstree.root).toString();\n\t\t\tnew_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent);\n\t\t\told_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id));\n\t\t\tis_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id);\n\t\t\told_pos = old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1;\n\t\t\tif(old_ins && old_ins._id) {\n\t\t\t\tobj = old_ins._model.data[obj.id];\n\t\t\t}\n\n\t\t\tif(is_multi) {\n\t\t\t\tif((tmp = this.copy_node(obj, par, pos, callback, is_loaded, false, origin))) {\n\t\t\t\t\tif(old_ins) { old_ins.delete_node(obj); }\n\t\t\t\t\treturn tmp;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t//var m = this._model.data;\n\t\t\tif(par.id === $.jstree.root) {\n\t\t\t\tif(pos === \"before\") { pos = \"first\"; }\n\t\t\t\tif(pos === \"after\") { pos = \"last\"; }\n\t\t\t}\n\t\t\tswitch(pos) {\n\t\t\t\tcase \"before\":\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"after\" :\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children) + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inside\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\tpos = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"last\":\n\t\t\t\t\tpos = new_par.children.length;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(!pos) { pos = 0; }\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(pos > new_par.children.length) { pos = new_par.children.length; }\n\t\t\tif(!this.check(\"move_node\", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(obj.parent === new_par.id) {\n\t\t\t\tdpc = new_par.children.concat();\n\t\t\t\ttmp = $.inArray(obj.id, dpc);\n\t\t\t\tif(tmp !== -1) {\n\t\t\t\t\tdpc = $.vakata.array_remove(dpc, tmp);\n\t\t\t\t\tif(pos > tmp) { pos--; }\n\t\t\t\t}\n\t\t\t\ttmp = [];\n\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\ttmp[i >= pos ? i+1 : i] = dpc[i];\n\t\t\t\t}\n\t\t\t\ttmp[pos] = obj.id;\n\t\t\t\tnew_par.children = tmp;\n\t\t\t\tthis._node_changed(new_par.id);\n\t\t\t\tthis.redraw(new_par.id === $.jstree.root);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// clean old parent and up\n\t\t\t\ttmp = obj.children_d.concat();\n\t\t\t\ttmp.push(obj.id);\n\t\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\t\tdpc = [];\n\t\t\t\t\tp = old_ins._model.data[obj.parents[i]].children_d;\n\t\t\t\t\tfor(k = 0, l = p.length; k < l; k++) {\n\t\t\t\t\t\tif($.inArray(p[k], tmp) === -1) {\n\t\t\t\t\t\t\tdpc.push(p[k]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\told_ins._model.data[obj.parents[i]].children_d = dpc;\n\t\t\t\t}\n\t\t\t\told_ins._model.data[old_par].children = $.vakata.array_remove_item(old_ins._model.data[old_par].children, obj.id);\n\n\t\t\t\t// insert into new parent and up\n\t\t\t\tfor(i = 0, j = new_par.parents.length; i < j; i++) {\n\t\t\t\t\tthis._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(tmp);\n\t\t\t\t}\n\t\t\t\tdpc = [];\n\t\t\t\tfor(i = 0, j = new_par.children.length; i < j; i++) {\n\t\t\t\t\tdpc[i >= pos ? i+1 : i] = new_par.children[i];\n\t\t\t\t}\n\t\t\t\tdpc[pos] = obj.id;\n\t\t\t\tnew_par.children = dpc;\n\t\t\t\tnew_par.children_d.push(obj.id);\n\t\t\t\tnew_par.children_d = new_par.children_d.concat(obj.children_d);\n\n\t\t\t\t// update object\n\t\t\t\tobj.parent = new_par.id;\n\t\t\t\ttmp = new_par.parents.concat();\n\t\t\t\ttmp.unshift(new_par.id);\n\t\t\t\tp = obj.parents.length;\n\t\t\t\tobj.parents = tmp;\n\n\t\t\t\t// update object children\n\t\t\t\ttmp = tmp.concat();\n\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\tthis._model.data[obj.children_d[i]].parents = this._model.data[obj.children_d[i]].parents.slice(0,p*-1);\n\t\t\t\t\tArray.prototype.push.apply(this._model.data[obj.children_d[i]].parents, tmp);\n\t\t\t\t}\n\n\t\t\t\tif(old_par === $.jstree.root || new_par.id === $.jstree.root) {\n\t\t\t\t\tthis._model.force_full_redraw = true;\n\t\t\t\t}\n\t\t\t\tif(!this._model.force_full_redraw) {\n\t\t\t\t\tthis._node_changed(old_par);\n\t\t\t\t\tthis._node_changed(new_par.id);\n\t\t\t\t}\n\t\t\t\tif(!skip_redraw) {\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(callback) { callback.call(this, obj, new_par, pos); }\n\t\t\t/**\n\t\t\t * triggered when a node is moved\n\t\t\t * @event\n\t\t\t * @name move_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t * @param {Number} position the position of the node among the parent's children\n\t\t\t * @param {String} old_parent the old parent of the node\n\t\t\t * @param {Number} old_position the old position of the node\n\t\t\t * @param {Boolean} is_multi do the node and new parent belong to different instances\n\t\t\t * @param {jsTree} old_instance the instance the node came from\n\t\t\t * @param {jsTree} new_instance the instance of the new parent\n\t\t\t */\n\t\t\tthis.trigger('move_node', { \"node\" : obj, \"parent\" : new_par.id, \"position\" : pos, \"old_parent\" : old_par, \"old_position\" : old_pos, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this });\n\t\t\treturn obj.id;\n\t\t},\n\t\t/**\n\t\t * copy a node to a new parent\n\t\t * @name copy_node(obj, par [, pos, callback, is_loaded])\n\t\t * @param {mixed} obj the node to copy, pass an array to copy multiple nodes\n\t\t * @param {mixed} par the new parent\n\t\t * @param {mixed} pos the position to insert at (besides integer values, \"first\" and \"last\" are supported, as well as \"before\" and \"after\"), defaults to integer `0`\n\t\t * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position\n\t\t * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded\n\t\t * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn\n\t\t * @param {Boolean} instance internal parameter indicating if the node comes from another instance\n\t\t * @trigger model.jstree copy_node.jstree\n\t\t */\n\t\tcopy_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) {\n\t\t\tvar t1, t2, dpc, tmp, i, j, node, old_par, new_par, old_ins, is_multi;\n\n\t\t\tpar = this.get_node(par);\n\t\t\tpos = pos === undefined ? 0 : pos;\n\t\t\tif(!par) { return false; }\n\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\treturn this.load_node(par, function () { this.copy_node(obj, par, pos, callback, true, false, origin); });\n\t\t\t}\n\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tif(obj.length === 1) {\n\t\t\t\t\tobj = obj[0];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t//obj = obj.slice();\n\t\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\t\tif((tmp = this.copy_node(obj[t1], par, pos, callback, is_loaded, true, origin))) {\n\t\t\t\t\t\t\tpar = tmp;\n\t\t\t\t\t\t\tpos = \"after\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.redraw();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) { return false; }\n\n\t\t\told_par = (obj.parent || $.jstree.root).toString();\n\t\t\tnew_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent);\n\t\t\told_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id));\n\t\t\tis_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id);\n\n\t\t\tif(old_ins && old_ins._id) {\n\t\t\t\tobj = old_ins._model.data[obj.id];\n\t\t\t}\n\n\t\t\tif(par.id === $.jstree.root) {\n\t\t\t\tif(pos === \"before\") { pos = \"first\"; }\n\t\t\t\tif(pos === \"after\") { pos = \"last\"; }\n\t\t\t}\n\t\t\tswitch(pos) {\n\t\t\t\tcase \"before\":\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"after\" :\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children) + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inside\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\tpos = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"last\":\n\t\t\t\t\tpos = new_par.children.length;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(!pos) { pos = 0; }\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(pos > new_par.children.length) { pos = new_par.children.length; }\n\t\t\tif(!this.check(\"copy_node\", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tnode = old_ins ? old_ins.get_json(obj, { no_id : true, no_data : true, no_state : true }) : obj;\n\t\t\tif(!node) { return false; }\n\t\t\tif(node.id === true) { delete node.id; }\n\t\t\tnode = this._parse_model_from_json(node, new_par.id, new_par.parents.concat());\n\t\t\tif(!node) { return false; }\n\t\t\ttmp = this.get_node(node);\n\t\t\tif(obj && obj.state && obj.state.loaded === false) { tmp.state.loaded = false; }\n\t\t\tdpc = [];\n\t\t\tdpc.push(node);\n\t\t\tdpc = dpc.concat(tmp.children_d);\n\t\t\tthis.trigger('model', { \"nodes\" : dpc, \"parent\" : new_par.id });\n\n\t\t\t// insert into new parent and up\n\t\t\tfor(i = 0, j = new_par.parents.length; i < j; i++) {\n\t\t\t\tthis._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(dpc);\n\t\t\t}\n\t\t\tdpc = [];\n\t\t\tfor(i = 0, j = new_par.children.length; i < j; i++) {\n\t\t\t\tdpc[i >= pos ? i+1 : i] = new_par.children[i];\n\t\t\t}\n\t\t\tdpc[pos] = tmp.id;\n\t\t\tnew_par.children = dpc;\n\t\t\tnew_par.children_d.push(tmp.id);\n\t\t\tnew_par.children_d = new_par.children_d.concat(tmp.children_d);\n\n\t\t\tif(new_par.id === $.jstree.root) {\n\t\t\t\tthis._model.force_full_redraw = true;\n\t\t\t}\n\t\t\tif(!this._model.force_full_redraw) {\n\t\t\t\tthis._node_changed(new_par.id);\n\t\t\t}\n\t\t\tif(!skip_redraw) {\n\t\t\t\tthis.redraw(new_par.id === $.jstree.root);\n\t\t\t}\n\t\t\tif(callback) { callback.call(this, tmp, new_par, pos); }\n\t\t\t/**\n\t\t\t * triggered when a node is copied\n\t\t\t * @event\n\t\t\t * @name copy_node.jstree\n\t\t\t * @param {Object} node the copied node\n\t\t\t * @param {Object} original the original node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t * @param {Number} position the position of the node among the parent's children\n\t\t\t * @param {String} old_parent the old parent of the node\n\t\t\t * @param {Number} old_position the position of the original node\n\t\t\t * @param {Boolean} is_multi do the node and new parent belong to different instances\n\t\t\t * @param {jsTree} old_instance the instance the node came from\n\t\t\t * @param {jsTree} new_instance the instance of the new parent\n\t\t\t */\n\t\t\tthis.trigger('copy_node', { \"node\" : tmp, \"original\" : obj, \"parent\" : new_par.id, \"position\" : pos, \"old_parent\" : old_par, \"old_position\" : old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1,'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this });\n\t\t\treturn tmp.id;\n\t\t},\n\t\t/**\n\t\t * cut a node (a later call to `paste(obj)` would move the node)\n\t\t * @name cut(obj)\n\t\t * @param {mixed} obj multiple objects can be passed using an array\n\t\t * @trigger cut.jstree\n\t\t */\n\t\tcut : function (obj) {\n\t\t\tif(!obj) { obj = this._data.core.selected.concat(); }\n\t\t\tif(!$.isArray(obj)) { obj = [obj]; }\n\t\t\tif(!obj.length) { return false; }\n\t\t\tvar tmp = [], o, t1, t2;\n\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\to = this.get_node(obj[t1]);\n\t\t\t\tif(o && o.id && o.id !== $.jstree.root) { tmp.push(o); }\n\t\t\t}\n\t\t\tif(!tmp.length) { return false; }\n\t\t\tccp_node = tmp;\n\t\t\tccp_inst = this;\n\t\t\tccp_mode = 'move_node';\n\t\t\t/**\n\t\t\t * triggered when nodes are added to the buffer for moving\n\t\t\t * @event\n\t\t\t * @name cut.jstree\n\t\t\t * @param {Array} node\n\t\t\t */\n\t\t\tthis.trigger('cut', { \"node\" : obj });\n\t\t},\n\t\t/**\n\t\t * copy a node (a later call to `paste(obj)` would copy the node)\n\t\t * @name copy(obj)\n\t\t * @param {mixed} obj multiple objects can be passed using an array\n\t\t * @trigger copy.jstree\n\t\t */\n\t\tcopy : function (obj) {\n\t\t\tif(!obj) { obj = this._data.core.selected.concat(); }\n\t\t\tif(!$.isArray(obj)) { obj = [obj]; }\n\t\t\tif(!obj.length) { return false; }\n\t\t\tvar tmp = [], o, t1, t2;\n\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\to = this.get_node(obj[t1]);\n\t\t\t\tif(o && o.id && o.id !== $.jstree.root) { tmp.push(o); }\n\t\t\t}\n\t\t\tif(!tmp.length) { return false; }\n\t\t\tccp_node = tmp;\n\t\t\tccp_inst = this;\n\t\t\tccp_mode = 'copy_node';\n\t\t\t/**\n\t\t\t * triggered when nodes are added to the buffer for copying\n\t\t\t * @event\n\t\t\t * @name copy.jstree\n\t\t\t * @param {Array} node\n\t\t\t */\n\t\t\tthis.trigger('copy', { \"node\" : obj });\n\t\t},\n\t\t/**\n\t\t * get the current buffer (any nodes that are waiting for a paste operation)\n\t\t * @name get_buffer()\n\t\t * @return {Object} an object consisting of `mode` (\"copy_node\" or \"move_node\"), `node` (an array of objects) and `inst` (the instance)\n\t\t */\n\t\tget_buffer : function () {\n\t\t\treturn { 'mode' : ccp_mode, 'node' : ccp_node, 'inst' : ccp_inst };\n\t\t},\n\t\t/**\n\t\t * check if there is something in the buffer to paste\n\t\t * @name can_paste()\n\t\t * @return {Boolean}\n\t\t */\n\t\tcan_paste : function () {\n\t\t\treturn ccp_mode !== false && ccp_node !== false; // && ccp_inst._model.data[ccp_node];\n\t\t},\n\t\t/**\n\t\t * copy or move the previously cut or copied nodes to a new parent\n\t\t * @name paste(obj [, pos])\n\t\t * @param {mixed} obj the new parent\n\t\t * @param {mixed} pos the position to insert at (besides integer, \"first\" and \"last\" are supported), defaults to integer `0`\n\t\t * @trigger paste.jstree\n\t\t */\n\t\tpaste : function (obj, pos) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || !ccp_mode || !ccp_mode.match(/^(copy_node|move_node)$/) || !ccp_node) { return false; }\n\t\t\tif(this[ccp_mode](ccp_node, obj, pos, false, false, false, ccp_inst)) {\n\t\t\t\t/**\n\t\t\t\t * triggered when paste is invoked\n\t\t\t\t * @event\n\t\t\t\t * @name paste.jstree\n\t\t\t\t * @param {String} parent the ID of the receiving node\n\t\t\t\t * @param {Array} node the nodes in the buffer\n\t\t\t\t * @param {String} mode the performed operation - \"copy_node\" or \"move_node\"\n\t\t\t\t */\n\t\t\t\tthis.trigger('paste', { \"parent\" : obj.id, \"node\" : ccp_node, \"mode\" : ccp_mode });\n\t\t\t}\n\t\t\tccp_node = false;\n\t\t\tccp_mode = false;\n\t\t\tccp_inst = false;\n\t\t},\n\t\t/**\n\t\t * clear the buffer of previously copied or cut nodes\n\t\t * @name clear_buffer()\n\t\t * @trigger clear_buffer.jstree\n\t\t */\n\t\tclear_buffer : function () {\n\t\t\tccp_node = false;\n\t\t\tccp_mode = false;\n\t\t\tccp_inst = false;\n\t\t\t/**\n\t\t\t * triggered when the copy / cut buffer is cleared\n\t\t\t * @event\n\t\t\t * @name clear_buffer.jstree\n\t\t\t */\n\t\t\tthis.trigger('clear_buffer');\n\t\t},\n\t\t/**\n\t\t * put a node in edit mode (input field to rename the node)\n\t\t * @name edit(obj [, default_text, callback])\n\t\t * @param {mixed} obj\n\t\t * @param {String} default_text the text to populate the input with (if omitted or set to a non-string value the node's text value is used)\n\t\t * @param {Function} callback a function to be called once the text box is blurred, it is called in the instance's scope and receives the node, a status parameter (true if the rename is successful, false otherwise) and a boolean indicating if the user cancelled the edit. You can access the node's title using .text\n\t\t */\n\t\tedit : function (obj, default_text, callback) {\n\t\t\tvar rtl, w, a, s, t, h1, h2, fn, tmp, cancel = false;\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tif(!this.check(\"edit\", obj, this.get_parent(obj))) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\ttmp = obj;\n\t\t\tdefault_text = typeof default_text === 'string' ? default_text : obj.text;\n\t\t\tthis.set_text(obj, \"\");\n\t\t\tobj = this._open_to(obj);\n\t\t\ttmp.text = default_text;\n\n\t\t\trtl = this._data.core.rtl;\n\t\t\tw = this.element.width();\n\t\t\tthis._data.core.focused = tmp.id;\n\t\t\ta = obj.children('.jstree-anchor').focus();\n\t\t\ts = $('');\n\t\t\t/*!\n\t\t\toi = obj.children(\"i:visible\"),\n\t\t\tai = a.children(\"i:visible\"),\n\t\t\tw1 = oi.width() * oi.length,\n\t\t\tw2 = ai.width() * ai.length,\n\t\t\t*/\n\t\t\tt = default_text;\n\t\t\th1 = $(\"<\"+\"div />\", { css : { \"position\" : \"absolute\", \"top\" : \"-200px\", \"left\" : (rtl ? \"0px\" : \"-1000px\"), \"visibility\" : \"hidden\" } }).appendTo(\"body\");\n\t\t\th2 = $(\"<\"+\"input />\", {\n\t\t\t\t\t\t\"value\" : t,\n\t\t\t\t\t\t\"class\" : \"jstree-rename-input\",\n\t\t\t\t\t\t// \"size\" : t.length,\n\t\t\t\t\t\t\"css\" : {\n\t\t\t\t\t\t\t\"padding\" : \"0\",\n\t\t\t\t\t\t\t\"border\" : \"1px solid silver\",\n\t\t\t\t\t\t\t\"box-sizing\" : \"border-box\",\n\t\t\t\t\t\t\t\"display\" : \"inline-block\",\n\t\t\t\t\t\t\t\"height\" : (this._data.core.li_height) + \"px\",\n\t\t\t\t\t\t\t\"lineHeight\" : (this._data.core.li_height) + \"px\",\n\t\t\t\t\t\t\t\"width\" : \"150px\" // will be set a bit further down\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"blur\" : $.proxy(function (e) {\n\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tvar i = s.children(\".jstree-rename-input\"),\n\t\t\t\t\t\t\t\tv = i.val(),\n\t\t\t\t\t\t\t\tf = this.settings.core.force_text,\n\t\t\t\t\t\t\t\tnv;\n\t\t\t\t\t\t\tif(v === \"\") { v = t; }\n\t\t\t\t\t\t\th1.remove();\n\t\t\t\t\t\t\ts.replaceWith(a);\n\t\t\t\t\t\t\ts.remove();\n\t\t\t\t\t\t\tt = f ? t : $('
').append($.parseHTML(t)).html();\n\t\t\t\t\t\t\tthis.set_text(obj, t);\n\t\t\t\t\t\t\tnv = !!this.rename_node(obj, f ? $('
').text(v).text() : $('
').append($.parseHTML(v)).html());\n\t\t\t\t\t\t\tif(!nv) {\n\t\t\t\t\t\t\t\tthis.set_text(obj, t); // move this up? and fix #483\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._data.core.focused = tmp.id;\n\t\t\t\t\t\t\tsetTimeout($.proxy(function () {\n\t\t\t\t\t\t\t\tvar node = this.get_node(tmp.id, true);\n\t\t\t\t\t\t\t\tif(node.length) {\n\t\t\t\t\t\t\t\t\tthis._data.core.focused = tmp.id;\n\t\t\t\t\t\t\t\t\tnode.children('.jstree-anchor').focus();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this), 0);\n\t\t\t\t\t\t\tif(callback) {\n\t\t\t\t\t\t\t\tcallback.call(this, tmp, nv, cancel);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\th2 = null;\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\t\"keydown\" : function (e) {\n\t\t\t\t\t\t\tvar key = e.which;\n\t\t\t\t\t\t\tif(key === 27) {\n\t\t\t\t\t\t\t\tcancel = true;\n\t\t\t\t\t\t\t\tthis.value = t;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(key === 27 || key === 13 || key === 37 || key === 38 || key === 39 || key === 40 || key === 32) {\n\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(key === 27 || key === 13) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tthis.blur();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"click\" : function (e) { e.stopImmediatePropagation(); },\n\t\t\t\t\t\t\"mousedown\" : function (e) { e.stopImmediatePropagation(); },\n\t\t\t\t\t\t\"keyup\" : function (e) {\n\t\t\t\t\t\t\th2.width(Math.min(h1.text(\"pW\" + this.value).width(),w));\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"keypress\" : function(e) {\n\t\t\t\t\t\t\tif(e.which === 13) { return false; }\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\tfn = {\n\t\t\t\t\t\tfontFamily\t\t: a.css('fontFamily')\t\t|| '',\n\t\t\t\t\t\tfontSize\t\t: a.css('fontSize')\t\t\t|| '',\n\t\t\t\t\t\tfontWeight\t\t: a.css('fontWeight')\t\t|| '',\n\t\t\t\t\t\tfontStyle\t\t: a.css('fontStyle')\t\t|| '',\n\t\t\t\t\t\tfontStretch\t\t: a.css('fontStretch')\t\t|| '',\n\t\t\t\t\t\tfontVariant\t\t: a.css('fontVariant')\t\t|| '',\n\t\t\t\t\t\tletterSpacing\t: a.css('letterSpacing')\t|| '',\n\t\t\t\t\t\twordSpacing\t\t: a.css('wordSpacing')\t\t|| ''\n\t\t\t\t};\n\t\t\ts.attr('class', a.attr('class')).append(a.contents().clone()).append(h2);\n\t\t\ta.replaceWith(s);\n\t\t\th1.css(fn);\n\t\t\th2.css(fn).width(Math.min(h1.text(\"pW\" + h2[0].value).width(),w))[0].select();\n\t\t\t$(document).one('mousedown.jstree touchstart.jstree dnd_start.vakata', function (e) {\n\t\t\t\tif (h2 && e.target !== h2) {\n\t\t\t\t\t$(h2).blur();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n\t\t * changes the theme\n\t\t * @name set_theme(theme_name [, theme_url])\n\t\t * @param {String} theme_name the name of the new theme to apply\n\t\t * @param {mixed} theme_url the location of the CSS file for this theme. Omit or set to `false` if you manually included the file. Set to `true` to autoload from the `core.themes.dir` directory.\n\t\t * @trigger set_theme.jstree\n\t\t */\n\t\tset_theme : function (theme_name, theme_url) {\n\t\t\tif(!theme_name) { return false; }\n\t\t\tif(theme_url === true) {\n\t\t\t\tvar dir = this.settings.core.themes.dir;\n\t\t\t\tif(!dir) { dir = $.jstree.path + '/themes'; }\n\t\t\t\ttheme_url = dir + '/' + theme_name + '/style.css';\n\t\t\t}\n\t\t\tif(theme_url && $.inArray(theme_url, themes_loaded) === -1) {\n\t\t\t\t$('head').append('<'+'link rel=\"stylesheet\" href=\"' + theme_url + '\" type=\"text/css\" />');\n\t\t\t\tthemes_loaded.push(theme_url);\n\t\t\t}\n\t\t\tif(this._data.core.themes.name) {\n\t\t\t\tthis.element.removeClass('jstree-' + this._data.core.themes.name);\n\t\t\t}\n\t\t\tthis._data.core.themes.name = theme_name;\n\t\t\tthis.element.addClass('jstree-' + theme_name);\n\t\t\tthis.element[this.settings.core.themes.responsive ? 'addClass' : 'removeClass' ]('jstree-' + theme_name + '-responsive');\n\t\t\t/**\n\t\t\t * triggered when a theme is set\n\t\t\t * @event\n\t\t\t * @name set_theme.jstree\n\t\t\t * @param {String} theme the new theme\n\t\t\t */\n\t\t\tthis.trigger('set_theme', { 'theme' : theme_name });\n\t\t},\n\t\t/**\n\t\t * gets the name of the currently applied theme name\n\t\t * @name get_theme()\n\t\t * @return {String}\n\t\t */\n\t\tget_theme : function () { return this._data.core.themes.name; },\n\t\t/**\n\t\t * changes the theme variant (if the theme has variants)\n\t\t * @name set_theme_variant(variant_name)\n\t\t * @param {String|Boolean} variant_name the variant to apply (if `false` is used the current variant is removed)\n\t\t */\n\t\tset_theme_variant : function (variant_name) {\n\t\t\tif(this._data.core.themes.variant) {\n\t\t\t\tthis.element.removeClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant);\n\t\t\t}\n\t\t\tthis._data.core.themes.variant = variant_name;\n\t\t\tif(variant_name) {\n\t\t\t\tthis.element.addClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * gets the name of the currently applied theme variant\n\t\t * @name get_theme()\n\t\t * @return {String}\n\t\t */\n\t\tget_theme_variant : function () { return this._data.core.themes.variant; },\n\t\t/**\n\t\t * shows a striped background on the container (if the theme supports it)\n\t\t * @name show_stripes()\n\t\t */\n\t\tshow_stripes : function () {\n\t\t\tthis._data.core.themes.stripes = true;\n\t\t\tthis.get_container_ul().addClass(\"jstree-striped\");\n\t\t\t/**\n\t\t\t * triggered when stripes are shown\n\t\t\t * @event\n\t\t\t * @name show_stripes.jstree\n\t\t\t */\n\t\t\tthis.trigger('show_stripes');\n\t\t},\n\t\t/**\n\t\t * hides the striped background on the container\n\t\t * @name hide_stripes()\n\t\t */\n\t\thide_stripes : function () {\n\t\t\tthis._data.core.themes.stripes = false;\n\t\t\tthis.get_container_ul().removeClass(\"jstree-striped\");\n\t\t\t/**\n\t\t\t * triggered when stripes are hidden\n\t\t\t * @event\n\t\t\t * @name hide_stripes.jstree\n\t\t\t */\n\t\t\tthis.trigger('hide_stripes');\n\t\t},\n\t\t/**\n\t\t * toggles the striped background on the container\n\t\t * @name toggle_stripes()\n\t\t */\n\t\ttoggle_stripes : function () { if(this._data.core.themes.stripes) { this.hide_stripes(); } else { this.show_stripes(); } },\n\t\t/**\n\t\t * shows the connecting dots (if the theme supports it)\n\t\t * @name show_dots()\n\t\t */\n\t\tshow_dots : function () {\n\t\t\tthis._data.core.themes.dots = true;\n\t\t\tthis.get_container_ul().removeClass(\"jstree-no-dots\");\n\t\t\t/**\n\t\t\t * triggered when dots are shown\n\t\t\t * @event\n\t\t\t * @name show_dots.jstree\n\t\t\t */\n\t\t\tthis.trigger('show_dots');\n\t\t},\n\t\t/**\n\t\t * hides the connecting dots\n\t\t * @name hide_dots()\n\t\t */\n\t\thide_dots : function () {\n\t\t\tthis._data.core.themes.dots = false;\n\t\t\tthis.get_container_ul().addClass(\"jstree-no-dots\");\n\t\t\t/**\n\t\t\t * triggered when dots are hidden\n\t\t\t * @event\n\t\t\t * @name hide_dots.jstree\n\t\t\t */\n\t\t\tthis.trigger('hide_dots');\n\t\t},\n\t\t/**\n\t\t * toggles the connecting dots\n\t\t * @name toggle_dots()\n\t\t */\n\t\ttoggle_dots : function () { if(this._data.core.themes.dots) { this.hide_dots(); } else { this.show_dots(); } },\n\t\t/**\n\t\t * show the node icons\n\t\t * @name show_icons()\n\t\t */\n\t\tshow_icons : function () {\n\t\t\tthis._data.core.themes.icons = true;\n\t\t\tthis.get_container_ul().removeClass(\"jstree-no-icons\");\n\t\t\t/**\n\t\t\t * triggered when icons are shown\n\t\t\t * @event\n\t\t\t * @name show_icons.jstree\n\t\t\t */\n\t\t\tthis.trigger('show_icons');\n\t\t},\n\t\t/**\n\t\t * hide the node icons\n\t\t * @name hide_icons()\n\t\t */\n\t\thide_icons : function () {\n\t\t\tthis._data.core.themes.icons = false;\n\t\t\tthis.get_container_ul().addClass(\"jstree-no-icons\");\n\t\t\t/**\n\t\t\t * triggered when icons are hidden\n\t\t\t * @event\n\t\t\t * @name hide_icons.jstree\n\t\t\t */\n\t\t\tthis.trigger('hide_icons');\n\t\t},\n\t\t/**\n\t\t * toggle the node icons\n\t\t * @name toggle_icons()\n\t\t */\n\t\ttoggle_icons : function () { if(this._data.core.themes.icons) { this.hide_icons(); } else { this.show_icons(); } },\n\t\t/**\n\t\t * show the node ellipsis\n\t\t * @name show_icons()\n\t\t */\n\t\tshow_ellipsis : function () {\n\t\t\tthis._data.core.themes.ellipsis = true;\n\t\t\tthis.get_container_ul().addClass(\"jstree-ellipsis\");\n\t\t\t/**\n\t\t\t * triggered when ellisis is shown\n\t\t\t * @event\n\t\t\t * @name show_ellipsis.jstree\n\t\t\t */\n\t\t\tthis.trigger('show_ellipsis');\n\t\t},\n\t\t/**\n\t\t * hide the node ellipsis\n\t\t * @name hide_ellipsis()\n\t\t */\n\t\thide_ellipsis : function () {\n\t\t\tthis._data.core.themes.ellipsis = false;\n\t\t\tthis.get_container_ul().removeClass(\"jstree-ellipsis\");\n\t\t\t/**\n\t\t\t * triggered when ellisis is hidden\n\t\t\t * @event\n\t\t\t * @name hide_ellipsis.jstree\n\t\t\t */\n\t\t\tthis.trigger('hide_ellipsis');\n\t\t},\n\t\t/**\n\t\t * toggle the node ellipsis\n\t\t * @name toggle_icons()\n\t\t */\n\t\ttoggle_ellipsis : function () { if(this._data.core.themes.ellipsis) { this.hide_ellipsis(); } else { this.show_ellipsis(); } },\n\t\t/**\n\t\t * set the node icon for a node\n\t\t * @name set_icon(obj, icon)\n\t\t * @param {mixed} obj\n\t\t * @param {String} icon the new icon - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class\n\t\t */\n\t\tset_icon : function (obj, icon) {\n\t\t\tvar t1, t2, dom, old;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.set_icon(obj[t1], icon);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) { return false; }\n\t\t\told = obj.icon;\n\t\t\tobj.icon = icon === true || icon === null || icon === undefined || icon === '' ? true : icon;\n\t\t\tdom = this.get_node(obj, true).children(\".jstree-anchor\").children(\".jstree-themeicon\");\n\t\t\tif(icon === false) {\n\t\t\t\tthis.hide_icon(obj);\n\t\t\t}\n\t\t\telse if(icon === true || icon === null || icon === undefined || icon === '') {\n\t\t\t\tdom.removeClass('jstree-themeicon-custom ' + old).css(\"background\",\"\").removeAttr(\"rel\");\n\t\t\t\tif(old === false) { this.show_icon(obj); }\n\t\t\t}\n\t\t\telse if(icon.indexOf(\"/\") === -1 && icon.indexOf(\".\") === -1) {\n\t\t\t\tdom.removeClass(old).css(\"background\",\"\");\n\t\t\t\tdom.addClass(icon + ' jstree-themeicon-custom').attr(\"rel\",icon);\n\t\t\t\tif(old === false) { this.show_icon(obj); }\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdom.removeClass(old).css(\"background\",\"\");\n\t\t\t\tdom.addClass('jstree-themeicon-custom').css(\"background\", \"url('\" + icon + \"') center center no-repeat\").attr(\"rel\",icon);\n\t\t\t\tif(old === false) { this.show_icon(obj); }\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * get the node icon for a node\n\t\t * @name get_icon(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {String}\n\t\t */\n\t\tget_icon : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn (!obj || obj.id === $.jstree.root) ? false : obj.icon;\n\t\t},\n\t\t/**\n\t\t * hide the icon on an individual node\n\t\t * @name hide_icon(obj)\n\t\t * @param {mixed} obj\n\t\t */\n\t\thide_icon : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.hide_icon(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj === $.jstree.root) { return false; }\n\t\t\tobj.icon = false;\n\t\t\tthis.get_node(obj, true).children(\".jstree-anchor\").children(\".jstree-themeicon\").addClass('jstree-themeicon-hidden');\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * show the icon on an individual node\n\t\t * @name show_icon(obj)\n\t\t * @param {mixed} obj\n\t\t */\n\t\tshow_icon : function (obj) {\n\t\t\tvar t1, t2, dom;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.show_icon(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj === $.jstree.root) { return false; }\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tobj.icon = dom.length ? dom.children(\".jstree-anchor\").children(\".jstree-themeicon\").attr('rel') : true;\n\t\t\tif(!obj.icon) { obj.icon = true; }\n\t\t\tdom.children(\".jstree-anchor\").children(\".jstree-themeicon\").removeClass('jstree-themeicon-hidden');\n\t\t\treturn true;\n\t\t}\n\t};\n\n\t// helpers\n\t$.vakata = {};\n\t// collect attributes\n\t$.vakata.attributes = function(node, with_values) {\n\t\tnode = $(node)[0];\n\t\tvar attr = with_values ? {} : [];\n\t\tif(node && node.attributes) {\n\t\t\t$.each(node.attributes, function (i, v) {\n\t\t\t\tif($.inArray(v.name.toLowerCase(),['style','contenteditable','hasfocus','tabindex']) !== -1) { return; }\n\t\t\t\tif(v.value !== null && $.trim(v.value) !== '') {\n\t\t\t\t\tif(with_values) { attr[v.name] = v.value; }\n\t\t\t\t\telse { attr.push(v.name); }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn attr;\n\t};\n\t$.vakata.array_unique = function(array) {\n\t\tvar a = [], i, j, l, o = {};\n\t\tfor(i = 0, l = array.length; i < l; i++) {\n\t\t\tif(o[array[i]] === undefined) {\n\t\t\t\ta.push(array[i]);\n\t\t\t\to[array[i]] = true;\n\t\t\t}\n\t\t}\n\t\treturn a;\n\t};\n\t// remove item from array\n\t$.vakata.array_remove = function(array, from) {\n\t\tarray.splice(from, 1);\n\t\treturn array;\n\t\t//var rest = array.slice((to || from) + 1 || array.length);\n\t\t//array.length = from < 0 ? array.length + from : from;\n\t\t//array.push.apply(array, rest);\n\t\t//return array;\n\t};\n\t// remove item from array\n\t$.vakata.array_remove_item = function(array, item) {\n\t\tvar tmp = $.inArray(item, array);\n\t\treturn tmp !== -1 ? $.vakata.array_remove(array, tmp) : array;\n\t};\n\t$.vakata.array_filter = function(c,a,b,d,e) {\n\t\tif (c.filter) {\n\t\t\treturn c.filter(a, b);\n\t\t}\n\t\td=[];\n\t\tfor (e in c) {\n\t\t\tif (~~e+''===e+'' && e>=0 && a.call(b,c[e],+e,c)) {\n\t\t\t\td.push(c[e]);\n\t\t\t}\n\t\t}\n\t\treturn d;\n\t};\n\n\n/**\n * ### Changed plugin\n *\n * This plugin adds more information to the `changed.jstree` event. The new data is contained in the `changed` event data property, and contains a lists of `selected` and `deselected` nodes.\n */\n\n\t$.jstree.plugins.changed = function (options, parent) {\n\t\tvar last = [];\n\t\tthis.trigger = function (ev, data) {\n\t\t\tvar i, j;\n\t\t\tif(!data) {\n\t\t\t\tdata = {};\n\t\t\t}\n\t\t\tif(ev.replace('.jstree','') === 'changed') {\n\t\t\t\tdata.changed = { selected : [], deselected : [] };\n\t\t\t\tvar tmp = {};\n\t\t\t\tfor(i = 0, j = last.length; i < j; i++) {\n\t\t\t\t\ttmp[last[i]] = 1;\n\t\t\t\t}\n\t\t\t\tfor(i = 0, j = data.selected.length; i < j; i++) {\n\t\t\t\t\tif(!tmp[data.selected[i]]) {\n\t\t\t\t\t\tdata.changed.selected.push(data.selected[i]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\ttmp[data.selected[i]] = 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(i = 0, j = last.length; i < j; i++) {\n\t\t\t\t\tif(tmp[last[i]] === 1) {\n\t\t\t\t\t\tdata.changed.deselected.push(last[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlast = data.selected.slice();\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when selection changes (the \"changed\" plugin enhances the original event with more data)\n\t\t\t * @event\n\t\t\t * @name changed.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {Object} action the action that caused the selection to change\n\t\t\t * @param {Array} selected the current selection\n\t\t\t * @param {Object} changed an object containing two properties `selected` and `deselected` - both arrays of node IDs, which were selected or deselected since the last changed event\n\t\t\t * @param {Object} event the event (if any) that triggered this changed event\n\t\t\t * @plugin changed\n\t\t\t */\n\t\t\tparent.trigger.call(this, ev, data);\n\t\t};\n\t\tthis.refresh = function (skip_loading, forget_state) {\n\t\t\tlast = [];\n\t\t\treturn parent.refresh.apply(this, arguments);\n\t\t};\n\t};\n\n/**\n * ### Checkbox plugin\n *\n * This plugin renders checkbox icons in front of each node, making multiple selection much easier.\n * It also supports tri-state behavior, meaning that if a node has a few of its children checked it will be rendered as undetermined, and state will be propagated up.\n */\n\n\tvar _i = document.createElement('I');\n\t_i.className = 'jstree-icon jstree-checkbox';\n\t_i.setAttribute('role', 'presentation');\n\t/**\n\t * stores all defaults for the checkbox plugin\n\t * @name $.jstree.defaults.checkbox\n\t * @plugin checkbox\n\t */\n\t$.jstree.defaults.checkbox = {\n\t\t/**\n\t\t * a boolean indicating if checkboxes should be visible (can be changed at a later time using `show_checkboxes()` and `hide_checkboxes`). Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.visible\n\t\t * @plugin checkbox\n\t\t */\n\t\tvisible\t\t\t\t: true,\n\t\t/**\n\t\t * a boolean indicating if checkboxes should cascade down and have an undetermined state. Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.three_state\n\t\t * @plugin checkbox\n\t\t */\n\t\tthree_state\t\t\t: true,\n\t\t/**\n\t\t * a boolean indicating if clicking anywhere on the node should act as clicking on the checkbox. Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.whole_node\n\t\t * @plugin checkbox\n\t\t */\n\t\twhole_node\t\t\t: true,\n\t\t/**\n\t\t * a boolean indicating if the selected style of a node should be kept, or removed. Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.keep_selected_style\n\t\t * @plugin checkbox\n\t\t */\n\t\tkeep_selected_style\t: true,\n\t\t/**\n\t\t * This setting controls how cascading and undetermined nodes are applied.\n\t\t * If 'up' is in the string - cascading up is enabled, if 'down' is in the string - cascading down is enabled, if 'undetermined' is in the string - undetermined nodes will be used.\n\t\t * If `three_state` is set to `true` this setting is automatically set to 'up+down+undetermined'. Defaults to ''.\n\t\t * @name $.jstree.defaults.checkbox.cascade\n\t\t * @plugin checkbox\n\t\t */\n\t\tcascade\t\t\t\t: '',\n\t\t/**\n\t\t * This setting controls if checkbox are bound to the general tree selection or to an internal array maintained by the checkbox plugin. Defaults to `true`, only set to `false` if you know exactly what you are doing.\n\t\t * @name $.jstree.defaults.checkbox.tie_selection\n\t\t * @plugin checkbox\n\t\t */\n\t\ttie_selection\t\t: true,\n\n\t\t/**\n\t\t * This setting controls if cascading down affects disabled checkboxes\n\t\t * @name $.jstree.defaults.checkbox.cascade_to_disabled\n\t\t * @plugin checkbox\n\t\t */\n\t\tcascade_to_disabled : true,\n\n\t\t/**\n\t\t * This setting controls if cascading down affects hidden checkboxes\n\t\t * @name $.jstree.defaults.checkbox.cascade_to_hidden\n\t\t * @plugin checkbox\n\t\t */\n\t\tcascade_to_hidden : true\n\t};\n\t$.jstree.plugins.checkbox = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\t\t\tthis._data.checkbox.uto = false;\n\t\t\tthis._data.checkbox.selected = [];\n\t\t\tif(this.settings.checkbox.three_state) {\n\t\t\t\tthis.settings.checkbox.cascade = 'up+down+undetermined';\n\t\t\t}\n\t\t\tthis.element\n\t\t\t\t.on(\"init.jstree\", $.proxy(function () {\n\t\t\t\t\t\tthis._data.checkbox.visible = this.settings.checkbox.visible;\n\t\t\t\t\t\tif(!this.settings.checkbox.keep_selected_style) {\n\t\t\t\t\t\t\tthis.element.addClass('jstree-checkbox-no-clicked');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this.settings.checkbox.tie_selection) {\n\t\t\t\t\t\t\tthis.element.addClass('jstree-checkbox-selection');\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"loading.jstree\", $.proxy(function () {\n\t\t\t\t\t\tthis[ this._data.checkbox.visible ? 'show_checkboxes' : 'hide_checkboxes' ]();\n\t\t\t\t\t}, this));\n\t\t\tif(this.settings.checkbox.cascade.indexOf('undetermined') !== -1) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree', $.proxy(function () {\n\t\t\t\t\t\t\t// only if undetermined is in setting\n\t\t\t\t\t\t\tif(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); }\n\t\t\t\t\t\t\tthis._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50);\n\t\t\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(!this.settings.checkbox.tie_selection) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('model.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\tvar m = this._model.data,\n\t\t\t\t\t\t\tp = m[data.parent],\n\t\t\t\t\t\t\tdpc = data.nodes,\n\t\t\t\t\t\t\ti, j;\n\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\tm[dpc[i]].state.checked = m[dpc[i]].state.checked || (m[dpc[i]].original && m[dpc[i]].original.state && m[dpc[i]].original.state.checked);\n\t\t\t\t\t\t\tif(m[dpc[i]].state.checked) {\n\t\t\t\t\t\t\t\tthis._data.checkbox.selected.push(dpc[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(this.settings.checkbox.cascade.indexOf('up') !== -1 || this.settings.checkbox.cascade.indexOf('down') !== -1) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('model.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar m = this._model.data,\n\t\t\t\t\t\t\t\tp = m[data.parent],\n\t\t\t\t\t\t\t\tdpc = data.nodes,\n\t\t\t\t\t\t\t\tchd = [],\n\t\t\t\t\t\t\t\tc, i, j, k, l, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection;\n\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1) {\n\t\t\t\t\t\t\t\t// apply down\n\t\t\t\t\t\t\t\tif(p.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tm[dpc[i]].state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(dpc);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tif(m[dpc[i]].state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\t\t\tfor(k = 0, l = m[dpc[i]].children_d.length; k < l; k++) {\n\t\t\t\t\t\t\t\t\t\t\t\tm[m[dpc[i]].children_d[k]].state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(m[dpc[i]].children_d);\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\n\t\t\t\t\t\t\tif(s.indexOf('up') !== -1) {\n\t\t\t\t\t\t\t\t// apply up\n\t\t\t\t\t\t\t\tfor(i = 0, j = p.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tif(!m[p.children_d[i]].children.length) {\n\t\t\t\t\t\t\t\t\t\tchd.push(m[p.children_d[i]].parent);\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\tchd = $.vakata.array_unique(chd);\n\t\t\t\t\t\t\t\tfor(k = 0, l = chd.length; k < l; k++) {\n\t\t\t\t\t\t\t\t\tp = m[chd[k]];\n\t\t\t\t\t\t\t\t\twhile(p && p.id !== $.jstree.root) {\n\t\t\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\t\ttmp.attr('aria-selected', true).children('.jstree-anchor').addClass( t ? 'jstree-clicked' : 'jstree-checked');\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\telse {\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\tp = this.get_node(p.parent);\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\n\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected);\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on(this.settings.checkbox.tie_selection ? 'select_node.jstree' : 'check_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar self = this,\n\t\t\t\t\t\t\t\tobj = data.node,\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\tpar = this.get_node(obj.parent),\n\t\t\t\t\t\t\t\ti, j, c, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection,\n\t\t\t\t\t\t\t\tsel = {}, cur = this._data[ t ? 'core' : 'checkbox' ].selected;\n\n\t\t\t\t\t\t\tfor (i = 0, j = cur.length; i < j; i++) {\n\t\t\t\t\t\t\t\tsel[cur[i]] = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// apply down\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1) {\n\t\t\t\t\t\t\t\t//this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected.concat(obj.children_d));\n\t\t\t\t\t\t\t\tvar selectedIds = this._cascade_new_checked_state(obj.id, true);\n obj.children_d.concat(obj.id).forEach(function(id) {\n if (selectedIds.indexOf(id) > -1) {\n sel[id] = true;\n }\n else {\n delete sel[id];\n }\n });\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// apply up\n\t\t\t\t\t\t\tif(s.indexOf('up') !== -1) {\n\t\t\t\t\t\t\t\twhile(par && par.id !== $.jstree.root) {\n\t\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tc += m[par.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\t\tpar.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\tsel[par.id] = true;\n\t\t\t\t\t\t\t\t\t\t//this._data[ t ? 'core' : 'checkbox' ].selected.push(par.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(par, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\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\telse {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tpar = this.get_node(par.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\tcur = [];\n\t\t\t\t\t\t\tfor (i in sel) {\n\t\t\t\t\t\t\t\tif (sel.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\tcur.push(i);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = cur;\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on(this.settings.checkbox.tie_selection ? 'deselect_all.jstree' : 'uncheck_all.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar obj = this.get_node($.jstree.root),\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\ti, j, tmp;\n\t\t\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\ttmp = m[obj.children_d[i]];\n\t\t\t\t\t\t\t\tif(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {\n\t\t\t\t\t\t\t\t\ttmp.original.state.undetermined = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on(this.settings.checkbox.tie_selection ? 'deselect_node.jstree' : 'uncheck_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar self = this,\n\t\t\t\t\t\t\t\tobj = data.node,\n\t\t\t\t\t\t\t\tdom = this.get_node(obj, true),\n\t\t\t\t\t\t\t\ti, j, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection,\n\t\t\t\t\t\t\t\tcur = this._data[ t ? 'core' : 'checkbox' ].selected, sel = {},\n\t\t\t\t\t\t\t\tstillSelectedIds = [],\n\t\t\t\t\t\t\t\tallIds = obj.children_d.concat(obj.id);\n\n\t\t\t\t\t\t\t// apply down\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1) {\n\t\t\t\t\t\t\t\tvar selectedIds = this._cascade_new_checked_state(obj.id, false);\n\n\t\t\t\t\t\t\t\tcur = cur.filter(function(id) {\n\t\t\t\t\t\t\t\t\treturn allIds.indexOf(id) === -1 || selectedIds.indexOf(id) > -1;\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\t// only apply up if cascade up is enabled and if this node is not selected\n\t\t\t\t\t\t\t// (if all child nodes are disabled and cascade_to_disabled === false then this node will till be selected).\n\t\t\t\t\t\t\tif(s.indexOf('up') !== -1 && cur.indexOf(obj.id) === -1) {\n\t\t\t\t\t\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\ttmp = this._model.data[obj.parents[i]];\n\t\t\t\t\t\t\t\t\ttmp.state[ t ? 'selected' : 'checked' ] = false;\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {\n\t\t\t\t\t\t\t\t\t\ttmp.original.state.undetermined = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ttmp = this.get_node(obj.parents[i], true);\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\ttmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');\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\tcur = cur.filter(function(id) {\n\t\t\t\t\t\t\t\t\treturn obj.parents.indexOf(id) === -1;\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\tthis._data[ t ? 'core' : 'checkbox' ].selected = cur;\n\t\t\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(this.settings.checkbox.cascade.indexOf('up') !== -1) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('delete_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\t// apply up (whole handler)\n\t\t\t\t\t\t\tvar p = this.get_node(data.parent),\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\ti, j, c, tmp, t = this.settings.checkbox.tie_selection;\n\t\t\t\t\t\t\twhile(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(j > 0 && c === j) {\n\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\ttmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\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\telse {\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\tp = this.get_node(p.parent);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on('move_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\t// apply up (whole handler)\n\t\t\t\t\t\t\tvar is_multi = data.is_multi,\n\t\t\t\t\t\t\t\told_par = data.old_parent,\n\t\t\t\t\t\t\t\tnew_par = this.get_node(data.parent),\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\tp, c, i, j, tmp, t = this.settings.checkbox.tie_selection;\n\t\t\t\t\t\t\tif(!is_multi) {\n\t\t\t\t\t\t\t\tp = this.get_node(old_par);\n\t\t\t\t\t\t\t\twhile(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif(j > 0 && c === j) {\n\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\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\telse {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tp = this.get_node(p.parent);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tp = new_par;\n\t\t\t\t\t\t\twhile(p && p.id !== $.jstree.root) {\n\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\tif(!p.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\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\telse {\n\t\t\t\t\t\t\t\t\tif(p.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = false;\n\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_remove_item(this._data[ t ? 'core' : 'checkbox' ].selected, p.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');\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\telse {\n\t\t\t\t\t\t\t\t\t\tbreak;\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\tp = this.get_node(p.parent);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this));\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * set the undetermined state where and if necessary. Used internally.\n\t\t * @private\n\t\t * @name _undetermined()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis._undetermined = function () {\n\t\t\tif(this.element === null) { return; }\n\t\t\tvar i, j, k, l, o = {}, m = this._model.data, t = this.settings.checkbox.tie_selection, s = this._data[ t ? 'core' : 'checkbox' ].selected, p = [], tt = this;\n\t\t\tfor(i = 0, j = s.length; i < j; i++) {\n\t\t\t\tif(m[s[i]] && m[s[i]].parents) {\n\t\t\t\t\tfor(k = 0, l = m[s[i]].parents.length; k < l; k++) {\n\t\t\t\t\t\tif(o[m[s[i]].parents[k]] !== undefined) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(m[s[i]].parents[k] !== $.jstree.root) {\n\t\t\t\t\t\t\to[m[s[i]].parents[k]] = true;\n\t\t\t\t\t\t\tp.push(m[s[i]].parents[k]);\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\t// attempt for server side undetermined state\n\t\t\tthis.element.find('.jstree-closed').not(':has(.jstree-children)')\n\t\t\t\t.each(function () {\n\t\t\t\t\tvar tmp = tt.get_node(this), tmp2;\n\t\t\t\t\t\n\t\t\t\t\tif(!tmp) { return; }\n\t\t\t\t\t\n\t\t\t\t\tif(!tmp.state.loaded) {\n\t\t\t\t\t\tif(tmp.original && tmp.original.state && tmp.original.state.undetermined && tmp.original.state.undetermined === true) {\n\t\t\t\t\t\t\tif(o[tmp.id] === undefined && tmp.id !== $.jstree.root) {\n\t\t\t\t\t\t\t\to[tmp.id] = true;\n\t\t\t\t\t\t\t\tp.push(tmp.id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfor(k = 0, l = tmp.parents.length; k < l; k++) {\n\t\t\t\t\t\t\t\tif(o[tmp.parents[k]] === undefined && tmp.parents[k] !== $.jstree.root) {\n\t\t\t\t\t\t\t\t\to[tmp.parents[k]] = true;\n\t\t\t\t\t\t\t\t\tp.push(tmp.parents[k]);\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\telse {\n\t\t\t\t\t\tfor(i = 0, j = tmp.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp2 = m[tmp.children_d[i]];\n\t\t\t\t\t\t\tif(!tmp2.state.loaded && tmp2.original && tmp2.original.state && tmp2.original.state.undetermined && tmp2.original.state.undetermined === true) {\n\t\t\t\t\t\t\t\tif(o[tmp2.id] === undefined && tmp2.id !== $.jstree.root) {\n\t\t\t\t\t\t\t\t\to[tmp2.id] = true;\n\t\t\t\t\t\t\t\t\tp.push(tmp2.id);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(k = 0, l = tmp2.parents.length; k < l; k++) {\n\t\t\t\t\t\t\t\t\tif(o[tmp2.parents[k]] === undefined && tmp2.parents[k] !== $.jstree.root) {\n\t\t\t\t\t\t\t\t\t\to[tmp2.parents[k]] = true;\n\t\t\t\t\t\t\t\t\t\tp.push(tmp2.parents[k]);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tthis.element.find('.jstree-undetermined').removeClass('jstree-undetermined');\n\t\t\tfor(i = 0, j = p.length; i < j; i++) {\n\t\t\t\tif(!m[p[i]].state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\ts = this.get_node(p[i], true);\n\t\t\t\t\tif(s && s.length) {\n\t\t\t\t\t\ts.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-undetermined');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tthis.redraw_node = function(obj, deep, is_callback, force_render) {\n\t\t\tobj = parent.redraw_node.apply(this, arguments);\n\t\t\tif(obj) {\n\t\t\t\tvar i, j, tmp = null, icon = null;\n\t\t\t\tfor(i = 0, j = obj.childNodes.length; i < j; i++) {\n\t\t\t\t\tif(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf(\"jstree-anchor\") !== -1) {\n\t\t\t\t\t\ttmp = obj.childNodes[i];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(tmp) {\n\t\t\t\t\tif(!this.settings.checkbox.tie_selection && this._model.data[obj.id].state.checked) { tmp.className += ' jstree-checked'; }\n\t\t\t\t\ticon = _i.cloneNode(false);\n\t\t\t\t\tif(this._model.data[obj.id].state.checkbox_disabled) { icon.className += ' jstree-checkbox-disabled'; }\n\t\t\t\t\ttmp.insertBefore(icon, tmp.childNodes[0]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!is_callback && this.settings.checkbox.cascade.indexOf('undetermined') !== -1) {\n\t\t\t\tif(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); }\n\t\t\t\tthis._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50);\n\t\t\t}\n\t\t\treturn obj;\n\t\t};\n\t\t/**\n\t\t * show the node checkbox icons\n\t\t * @name show_checkboxes()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.show_checkboxes = function () { this._data.core.themes.checkboxes = true; this.get_container_ul().removeClass(\"jstree-no-checkboxes\"); };\n\t\t/**\n\t\t * hide the node checkbox icons\n\t\t * @name hide_checkboxes()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.hide_checkboxes = function () { this._data.core.themes.checkboxes = false; this.get_container_ul().addClass(\"jstree-no-checkboxes\"); };\n\t\t/**\n\t\t * toggle the node icons\n\t\t * @name toggle_checkboxes()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.toggle_checkboxes = function () { if(this._data.core.themes.checkboxes) { this.hide_checkboxes(); } else { this.show_checkboxes(); } };\n\t\t/**\n\t\t * checks if a node is in an undetermined state\n\t\t * @name is_undetermined(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tthis.is_undetermined = function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tvar s = this.settings.checkbox.cascade, i, j, t = this.settings.checkbox.tie_selection, d = this._data[ t ? 'core' : 'checkbox' ].selected, m = this._model.data;\n\t\t\tif(!obj || obj.state[ t ? 'selected' : 'checked' ] === true || s.indexOf('undetermined') === -1 || (s.indexOf('down') === -1 && s.indexOf('up') === -1)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(!obj.state.loaded && obj.original.state.undetermined === true) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\tif($.inArray(obj.children_d[i], d) !== -1 || (!m[obj.children_d[i]].state.loaded && m[obj.children_d[i]].original.state.undetermined)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t\t/**\n\t\t * disable a node's checkbox\n\t\t * @name disable_checkbox(obj)\n\t\t * @param {mixed} obj an array can be used too\n\t\t * @trigger disable_checkbox.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.disable_checkbox = function (obj) {\n\t\t\tvar t1, t2, dom;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.disable_checkbox(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(!obj.state.checkbox_disabled) {\n\t\t\t\tobj.state.checkbox_disabled = true;\n\t\t\t\tif(dom && dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-checkbox-disabled');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node's checkbox is disabled\n\t\t\t\t * @event\n\t\t\t\t * @name disable_checkbox.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @plugin checkbox\n\t\t\t\t */\n\t\t\t\tthis.trigger('disable_checkbox', { 'node' : obj });\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * enable a node's checkbox\n\t\t * @name disable_checkbox(obj)\n\t\t * @param {mixed} obj an array can be used too\n\t\t * @trigger enable_checkbox.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.enable_checkbox = function (obj) {\n\t\t\tvar t1, t2, dom;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.enable_checkbox(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(obj.state.checkbox_disabled) {\n\t\t\t\tobj.state.checkbox_disabled = false;\n\t\t\t\tif(dom && dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').children('.jstree-checkbox').removeClass('jstree-checkbox-disabled');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node's checkbox is enabled\n\t\t\t\t * @event\n\t\t\t\t * @name enable_checkbox.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @plugin checkbox\n\t\t\t\t */\n\t\t\t\tthis.trigger('enable_checkbox', { 'node' : obj });\n\t\t\t}\n\t\t};\n\n\t\tthis.activate_node = function (obj, e) {\n\t\t\tif($(e.target).hasClass('jstree-checkbox-disabled')) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(this.settings.checkbox.tie_selection && (this.settings.checkbox.whole_node || $(e.target).hasClass('jstree-checkbox'))) {\n\t\t\t\te.ctrlKey = true;\n\t\t\t}\n\t\t\tif(this.settings.checkbox.tie_selection || (!this.settings.checkbox.whole_node && !$(e.target).hasClass('jstree-checkbox'))) {\n\t\t\t\treturn parent.activate_node.call(this, obj, e);\n\t\t\t}\n\t\t\tif(this.is_disabled(obj)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(this.is_checked(obj)) {\n\t\t\t\tthis.uncheck_node(obj, e);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.check_node(obj, e);\n\t\t\t}\n\t\t\tthis.trigger('activate_node', { 'node' : this.get_node(obj) });\n\t\t};\n\n\t\t/**\n\t\t * Unchecks a node and all its descendants. This function does NOT affect hidden and disabled nodes (or their descendants).\n\t\t * However if these unaffected nodes are already selected their ids will be included in the returned array.\n\t\t * @param id\n\t\t * @param checkedState\n\t\t * @returns {Array} Array of all node id's (in this tree branch) that are checked.\n\t\t */\n\t\tthis._cascade_new_checked_state = function(id, checkedState) {\n\t\t\tvar self = this;\n\t\t\tvar t = this.settings.checkbox.tie_selection;\n\t\t\tvar node = this._model.data[id];\n\t\t\tvar selectedNodeIds = [];\n\t\t\tvar selectedChildrenIds = [];\n\n\t\t\tif (\n\t\t\t\t(this.settings.checkbox.cascade_to_disabled || !node.state.disabled) &&\n\t\t\t\t(this.settings.checkbox.cascade_to_hidden || !node.state.hidden)\n\t\t\t) {\n //First try and check/uncheck the children\n if (node.children) {\n\t\t\t\t\tnode.children.forEach(function(childId) {\n\t\t\t\t\t\tvar selectedChildIds = self._cascade_new_checked_state(childId, checkedState);\n\t\t\t\t\t\tselectedNodeIds = selectedNodeIds.concat(selectedChildIds);\n\t\t\t\t\t\tif (selectedChildIds.indexOf(childId) > -1) {\n\t\t\t\t\t\t\tselectedChildrenIds.push(childId);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tvar dom = self.get_node(node, true);\n\n //A node's state is undetermined if some but not all of it's children are checked/selected .\n\t\t\t\tvar undetermined = selectedChildrenIds.length > 0 && selectedChildrenIds.length < node.children.length;\n\n\t\t\t\tif(node.original && node.original.state && node.original.state.undetermined) {\n\t\t\t\t\tnode.original.state.undetermined = undetermined;\n\t\t\t\t}\n\n //If a node is undetermined then remove selected class\n\t\t\t\tif (undetermined) {\n node.state[ t ? 'selected' : 'checked' ] = false;\n dom.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t}\n //Otherwise, if the checkedState === true (i.e. the node is being checked now) and all of the node's children are checked (if it has any children),\n //check the node and style it correctly.\n\t\t\t\telse if (checkedState && selectedChildrenIds.length === node.children.length) {\n node.state[ t ? 'selected' : 'checked' ] = checkedState;\n\t\t\t\t\tselectedNodeIds.push(node.id);\n\n\t\t\t\t\tdom.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t}\n\t\t\t\telse {\n node.state[ t ? 'selected' : 'checked' ] = false;\n\t\t\t\t\tdom.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar selectedChildIds = this.get_checked_descendants(id);\n\n\t\t\t\tif (node.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\tselectedChildIds.push(node.id);\n\t\t\t\t}\n\n\t\t\t\tselectedNodeIds = selectedNodeIds.concat(selectedChildIds);\n\t\t\t}\n\n\t\t\treturn selectedNodeIds;\n\t\t};\n\n\t\t/**\n\t\t * Gets ids of nodes selected in branch (of tree) specified by id (does not include the node specified by id)\n\t\t * @param id\n\t\t */\n\t\tthis.get_checked_descendants = function(id) {\n\t\t\tvar self = this;\n\t\t\tvar t = self.settings.checkbox.tie_selection;\n\t\t\tvar node = self._model.data[id];\n\n\t\t\treturn node.children_d.filter(function(_id) {\n\t\t\t\treturn self._model.data[_id].state[ t ? 'selected' : 'checked' ];\n\t\t\t});\n\t\t};\n\n\t\t/**\n\t\t * check a node (only if tie_selection in checkbox settings is false, otherwise select_node will be called internally)\n\t\t * @name check_node(obj)\n\t\t * @param {mixed} obj an array can be used to check multiple nodes\n\t\t * @trigger check_node.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.check_node = function (obj, e) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.select_node(obj, false, true, e); }\n\t\t\tvar dom, t1, t2, th;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.check_node(obj[t1], e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(!obj.state.checked) {\n\t\t\t\tobj.state.checked = true;\n\t\t\t\tthis._data.checkbox.selected.push(obj.id);\n\t\t\t\tif(dom && dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').addClass('jstree-checked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is checked (only if tie_selection in checkbox settings is false)\n\t\t\t\t * @event\n\t\t\t\t * @name check_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this check_node\n\t\t\t\t * @plugin checkbox\n\t\t\t\t */\n\t\t\t\tthis.trigger('check_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e });\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * uncheck a node (only if tie_selection in checkbox settings is false, otherwise deselect_node will be called internally)\n\t\t * @name uncheck_node(obj)\n\t\t * @param {mixed} obj an array can be used to uncheck multiple nodes\n\t\t * @trigger uncheck_node.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.uncheck_node = function (obj, e) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.deselect_node(obj, false, e); }\n\t\t\tvar t1, t2, dom;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.uncheck_node(obj[t1], e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(obj.state.checked) {\n\t\t\t\tobj.state.checked = false;\n\t\t\t\tthis._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, obj.id);\n\t\t\t\tif(dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').removeClass('jstree-checked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is unchecked (only if tie_selection in checkbox settings is false)\n\t\t\t\t * @event\n\t\t\t\t * @name uncheck_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this uncheck_node\n\t\t\t\t * @plugin checkbox\n\t\t\t\t */\n\t\t\t\tthis.trigger('uncheck_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e });\n\t\t\t}\n\t\t};\n\t\t\n\t\t/**\n\t\t * checks all nodes in the tree (only if tie_selection in checkbox settings is false, otherwise select_all will be called internally)\n\t\t * @name check_all()\n\t\t * @trigger check_all.jstree, changed.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.check_all = function () {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.select_all(); }\n\t\t\tvar tmp = this._data.checkbox.selected.concat([]), i, j;\n\t\t\tthis._data.checkbox.selected = this._model.data[$.jstree.root].children_d.concat();\n\t\t\tfor(i = 0, j = this._data.checkbox.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.checkbox.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.checkbox.selected[i]].state.checked = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.redraw(true);\n\t\t\t/**\n\t\t\t * triggered when all nodes are checked (only if tie_selection in checkbox settings is false)\n\t\t\t * @event\n\t\t\t * @name check_all.jstree\n\t\t\t * @param {Array} selected the current selection\n\t\t\t * @plugin checkbox\n\t\t\t */\n\t\t\tthis.trigger('check_all', { 'selected' : this._data.checkbox.selected });\n\t\t};\n\t\t/**\n\t\t * uncheck all checked nodes (only if tie_selection in checkbox settings is false, otherwise deselect_all will be called internally)\n\t\t * @name uncheck_all()\n\t\t * @trigger uncheck_all.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.uncheck_all = function () {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.deselect_all(); }\n\t\t\tvar tmp = this._data.checkbox.selected.concat([]), i, j;\n\t\t\tfor(i = 0, j = this._data.checkbox.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.checkbox.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.checkbox.selected[i]].state.checked = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._data.checkbox.selected = [];\n\t\t\tthis.element.find('.jstree-checked').removeClass('jstree-checked');\n\t\t\t/**\n\t\t\t * triggered when all nodes are unchecked (only if tie_selection in checkbox settings is false)\n\t\t\t * @event\n\t\t\t * @name uncheck_all.jstree\n\t\t\t * @param {Object} node the previous selection\n\t\t\t * @param {Array} selected the current selection\n\t\t\t * @plugin checkbox\n\t\t\t */\n\t\t\tthis.trigger('uncheck_all', { 'selected' : this._data.checkbox.selected, 'node' : tmp });\n\t\t};\n\t\t/**\n\t\t * checks if a node is checked (if tie_selection is on in the settings this function will return the same as is_selected)\n\t\t * @name is_checked(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.is_checked = function (obj) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.is_selected(obj); }\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) { return false; }\n\t\t\treturn obj.state.checked;\n\t\t};\n\t\t/**\n\t\t * get an array of all checked nodes (if tie_selection is on in the settings this function will return the same as get_selected)\n\t\t * @name get_checked([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.get_checked = function (full) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_selected(full); }\n\t\t\treturn full ? $.map(this._data.checkbox.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.checkbox.selected;\n\t\t};\n\t\t/**\n\t\t * get an array of all top level checked nodes (ignoring children of checked nodes) (if tie_selection is on in the settings this function will return the same as get_top_selected)\n\t\t * @name get_top_checked([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.get_top_checked = function (full) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_top_selected(full); }\n\t\t\tvar tmp = this.get_checked(true),\n\t\t\t\tobj = {}, i, j, k, l;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tobj[tmp[i].id] = tmp[i];\n\t\t\t}\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tfor(k = 0, l = tmp[i].children_d.length; k < l; k++) {\n\t\t\t\t\tif(obj[tmp[i].children_d[k]]) {\n\t\t\t\t\t\tdelete obj[tmp[i].children_d[k]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = [];\n\t\t\tfor(i in obj) {\n\t\t\t\tif(obj.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp;\n\t\t};\n\t\t/**\n\t\t * get an array of all bottom level checked nodes (ignoring selected parents) (if tie_selection is on in the settings this function will return the same as get_bottom_selected)\n\t\t * @name get_bottom_checked([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.get_bottom_checked = function (full) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_bottom_selected(full); }\n\t\t\tvar tmp = this.get_checked(true),\n\t\t\t\tobj = [], i, j;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tif(!tmp[i].children.length) {\n\t\t\t\t\tobj.push(tmp[i].id);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj;\n\t\t};\n\t\tthis.load_node = function (obj, callback) {\n\t\t\tvar k, l, i, j, c, tmp;\n\t\t\tif(!$.isArray(obj) && !this.settings.checkbox.tie_selection) {\n\t\t\t\ttmp = this.get_node(obj);\n\t\t\t\tif(tmp && tmp.state.loaded) {\n\t\t\t\t\tfor(k = 0, l = tmp.children_d.length; k < l; k++) {\n\t\t\t\t\t\tif(this._model.data[tmp.children_d[k]].state.checked) {\n\t\t\t\t\t\t\tc = true;\n\t\t\t\t\t\t\tthis._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, tmp.children_d[k]);\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 parent.load_node.apply(this, arguments);\n\t\t};\n\t\tthis.get_state = function () {\n\t\t\tvar state = parent.get_state.apply(this, arguments);\n\t\t\tif(this.settings.checkbox.tie_selection) { return state; }\n\t\t\tstate.checkbox = this._data.checkbox.selected.slice();\n\t\t\treturn state;\n\t\t};\n\t\tthis.set_state = function (state, callback) {\n\t\t\tvar res = parent.set_state.apply(this, arguments);\n\t\t\tif(res && state.checkbox) {\n\t\t\t\tif(!this.settings.checkbox.tie_selection) {\n\t\t\t\t\tthis.uncheck_all();\n\t\t\t\t\tvar _this = this;\n\t\t\t\t\t$.each(state.checkbox, function (i, v) {\n\t\t\t\t\t\t_this.check_node(v);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tdelete state.checkbox;\n\t\t\t\tthis.set_state(state, callback);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn res;\n\t\t};\n\t\tthis.refresh = function (skip_loading, forget_state) {\n\t\t\tif(!this.settings.checkbox.tie_selection) {\n\t\t\t\tthis._data.checkbox.selected = [];\n\t\t\t}\n\t\t\treturn parent.refresh.apply(this, arguments);\n\t\t};\n\t};\n\n\t// include the checkbox plugin by default\n\t// $.jstree.defaults.plugins.push(\"checkbox\");\n\n\n/**\n * ### Conditionalselect plugin\n *\n * This plugin allows defining a callback to allow or deny node selection by user input (activate node method).\n */\n\n\t/**\n\t * a callback (function) which is invoked in the instance's scope and receives two arguments - the node and the event that triggered the `activate_node` call. Returning false prevents working with the node, returning true allows invoking activate_node. Defaults to returning `true`.\n\t * @name $.jstree.defaults.checkbox.visible\n\t * @plugin checkbox\n\t */\n\t$.jstree.defaults.conditionalselect = function () { return true; };\n\t$.jstree.plugins.conditionalselect = function (options, parent) {\n\t\t// own function\n\t\tthis.activate_node = function (obj, e) {\n\t\t\tif(this.settings.conditionalselect.call(this, this.get_node(obj), e)) {\n\t\t\t\tparent.activate_node.call(this, obj, e);\n\t\t\t}\n\t\t};\n\t};\n\n\n/**\n * ### Contextmenu plugin\n *\n * Shows a context menu when a node is right-clicked.\n */\n\n\t/**\n\t * stores all defaults for the contextmenu plugin\n\t * @name $.jstree.defaults.contextmenu\n\t * @plugin contextmenu\n\t */\n\t$.jstree.defaults.contextmenu = {\n\t\t/**\n\t\t * a boolean indicating if the node should be selected when the context menu is invoked on it. Defaults to `true`.\n\t\t * @name $.jstree.defaults.contextmenu.select_node\n\t\t * @plugin contextmenu\n\t\t */\n\t\tselect_node : true,\n\t\t/**\n\t\t * a boolean indicating if the menu should be shown aligned with the node. Defaults to `true`, otherwise the mouse coordinates are used.\n\t\t * @name $.jstree.defaults.contextmenu.show_at_node\n\t\t * @plugin contextmenu\n\t\t */\n\t\tshow_at_node : true,\n\t\t/**\n\t\t * an object of actions, or a function that accepts a node and a callback function and calls the callback function with an object of actions available for that node (you can also return the items too).\n\t\t *\n\t\t * Each action consists of a key (a unique name) and a value which is an object with the following properties (only label and action are required). Once a menu item is activated the `action` function will be invoked with an object containing the following keys: item - the contextmenu item definition as seen below, reference - the DOM node that was used (the tree node), element - the contextmenu DOM element, position - an object with x/y properties indicating the position of the menu.\n\t\t *\n\t\t * * `separator_before` - a boolean indicating if there should be a separator before this item\n\t\t * * `separator_after` - a boolean indicating if there should be a separator after this item\n\t\t * * `_disabled` - a boolean indicating if this action should be disabled\n\t\t * * `label` - a string - the name of the action (could be a function returning a string)\n\t\t * * `title` - a string - an optional tooltip for the item\n\t\t * * `action` - a function to be executed if this item is chosen, the function will receive \n\t\t * * `icon` - a string, can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class\n\t\t * * `shortcut` - keyCode which will trigger the action if the menu is open (for example `113` for rename, which equals F2)\n\t\t * * `shortcut_label` - shortcut label (like for example `F2` for rename)\n\t\t * * `submenu` - an object with the same structure as $.jstree.defaults.contextmenu.items which can be used to create a submenu - each key will be rendered as a separate option in a submenu that will appear once the current item is hovered\n\t\t *\n\t\t * @name $.jstree.defaults.contextmenu.items\n\t\t * @plugin contextmenu\n\t\t */\n\t\titems : function (o, cb) { // Could be an object directly\n\t\t\treturn {\n\t\t\t\t\"create\" : {\n\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\"separator_after\"\t: true,\n\t\t\t\t\t\"_disabled\"\t\t\t: false, //(this.check(\"create_node\", data.reference, {}, \"last\")),\n\t\t\t\t\t\"label\"\t\t\t\t: \"Create\",\n\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\tinst.create_node(obj, {}, \"last\", function (new_node) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tinst.edit(new_node);\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tsetTimeout(function () { inst.edit(new_node); },0);\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\t\"rename\" : {\n\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\"_disabled\"\t\t\t: false, //(this.check(\"rename_node\", data.reference, this.get_parent(data.reference), \"\")),\n\t\t\t\t\t\"label\"\t\t\t\t: \"Rename\",\n\t\t\t\t\t/*!\n\t\t\t\t\t\"shortcut\"\t\t\t: 113,\n\t\t\t\t\t\"shortcut_label\"\t: 'F2',\n\t\t\t\t\t\"icon\"\t\t\t\t: \"glyphicon glyphicon-leaf\",\n\t\t\t\t\t*/\n\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\tinst.edit(obj);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"remove\" : {\n\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\"_disabled\"\t\t\t: false, //(this.check(\"delete_node\", data.reference, this.get_parent(data.reference), \"\")),\n\t\t\t\t\t\"label\"\t\t\t\t: \"Delete\",\n\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\tif(inst.is_selected(obj)) {\n\t\t\t\t\t\t\tinst.delete_node(inst.get_selected());\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tinst.delete_node(obj);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"ccp\" : {\n\t\t\t\t\t\"separator_before\"\t: true,\n\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\"label\"\t\t\t\t: \"Edit\",\n\t\t\t\t\t\"action\"\t\t\t: false,\n\t\t\t\t\t\"submenu\" : {\n\t\t\t\t\t\t\"cut\" : {\n\t\t\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\t\t\"label\"\t\t\t\t: \"Cut\",\n\t\t\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\t\t\tif(inst.is_selected(obj)) {\n\t\t\t\t\t\t\t\t\tinst.cut(inst.get_top_selected());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tinst.cut(obj);\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\t\"copy\" : {\n\t\t\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\t\t\"label\"\t\t\t\t: \"Copy\",\n\t\t\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\t\t\tif(inst.is_selected(obj)) {\n\t\t\t\t\t\t\t\t\tinst.copy(inst.get_top_selected());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tinst.copy(obj);\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\t\"paste\" : {\n\t\t\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\t\t\"_disabled\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\treturn !$.jstree.reference(data.reference).can_paste();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\t\t\"label\"\t\t\t\t: \"Paste\",\n\t\t\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\t\t\tinst.paste(obj);\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\t$.jstree.plugins.contextmenu = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tvar last_ts = 0, cto = null, ex, ey;\n\t\t\tthis.element\n\t\t\t\t.on(\"init.jstree loading.jstree ready.jstree\", $.proxy(function () {\n\t\t\t\t\t\tthis.get_container_ul().addClass('jstree-contextmenu');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"contextmenu.jstree\", \".jstree-anchor\", $.proxy(function (e, data) {\n\t\t\t\t\t\tif (e.target.tagName.toLowerCase() === 'input') {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tlast_ts = e.ctrlKey ? +new Date() : 0;\n\t\t\t\t\t\tif(data || cto) {\n\t\t\t\t\t\t\tlast_ts = (+new Date()) + 10000;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(cto) {\n\t\t\t\t\t\t\tclearTimeout(cto);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(!this.is_loading(e.currentTarget)) {\n\t\t\t\t\t\t\tthis.show_contextmenu(e.currentTarget, e.pageX, e.pageY, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"click.jstree\", \".jstree-anchor\", $.proxy(function (e) {\n\t\t\t\t\t\tif(this._data.contextmenu.visible && (!last_ts || (+new Date()) - last_ts > 250)) { // work around safari & macOS ctrl+click\n\t\t\t\t\t\t\t$.vakata.context.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlast_ts = 0;\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"touchstart.jstree\", \".jstree-anchor\", function (e) {\n\t\t\t\t\t\tif(!e.originalEvent || !e.originalEvent.changedTouches || !e.originalEvent.changedTouches[0]) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tex = e.originalEvent.changedTouches[0].clientX;\n\t\t\t\t\t\tey = e.originalEvent.changedTouches[0].clientY;\n\t\t\t\t\t\tcto = setTimeout(function () {\n\t\t\t\t\t\t\t$(e.currentTarget).trigger('contextmenu', true);\n\t\t\t\t\t\t}, 750);\n\t\t\t\t\t})\n\t\t\t\t.on('touchmove.vakata.jstree', function (e) {\n\t\t\t\t\t\tif(cto && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0] && (Math.abs(ex - e.originalEvent.changedTouches[0].clientX) > 50 || Math.abs(ey - e.originalEvent.changedTouches[0].clientY) > 50)) {\n\t\t\t\t\t\t\tclearTimeout(cto);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t.on('touchend.vakata.jstree', function (e) {\n\t\t\t\t\t\tif(cto) {\n\t\t\t\t\t\t\tclearTimeout(cto);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t/*!\n\t\t\tif(!('oncontextmenu' in document.body) && ('ontouchstart' in document.body)) {\n\t\t\t\tvar el = null, tm = null;\n\t\t\t\tthis.element\n\t\t\t\t\t.on(\"touchstart\", \".jstree-anchor\", function (e) {\n\t\t\t\t\t\tel = e.currentTarget;\n\t\t\t\t\t\ttm = +new Date();\n\t\t\t\t\t\t$(document).one(\"touchend\", function (e) {\n\t\t\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.targetTouches[0].pageX - window.pageXOffset, e.originalEvent.targetTouches[0].pageY - window.pageYOffset);\n\t\t\t\t\t\t\te.currentTarget = e.target;\n\t\t\t\t\t\t\ttm = ((+(new Date())) - tm);\n\t\t\t\t\t\t\tif(e.target === el && tm > 600 && tm < 1000) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t$(el).trigger('contextmenu', e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tel = null;\n\t\t\t\t\t\t\ttm = null;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t}\n\t\t\t*/\n\t\t\t$(document).on(\"context_hide.vakata.jstree\", $.proxy(function (e, data) {\n\t\t\t\tthis._data.contextmenu.visible = false;\n\t\t\t\t$(data.reference).removeClass('jstree-context');\n\t\t\t}, this));\n\t\t};\n\t\tthis.teardown = function () {\n\t\t\tif(this._data.contextmenu.visible) {\n\t\t\t\t$.vakata.context.hide();\n\t\t\t}\n\t\t\tparent.teardown.call(this);\n\t\t};\n\n\t\t/**\n\t\t * prepare and show the context menu for a node\n\t\t * @name show_contextmenu(obj [, x, y])\n\t\t * @param {mixed} obj the node\n\t\t * @param {Number} x the x-coordinate relative to the document to show the menu at\n\t\t * @param {Number} y the y-coordinate relative to the document to show the menu at\n\t\t * @param {Object} e the event if available that triggered the contextmenu\n\t\t * @plugin contextmenu\n\t\t * @trigger show_contextmenu.jstree\n\t\t */\n\t\tthis.show_contextmenu = function (obj, x, y, e) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === $.jstree.root) { return false; }\n\t\t\tvar s = this.settings.contextmenu,\n\t\t\t\td = this.get_node(obj, true),\n\t\t\t\ta = d.children(\".jstree-anchor\"),\n\t\t\t\to = false,\n\t\t\t\ti = false;\n\t\t\tif(s.show_at_node || x === undefined || y === undefined) {\n\t\t\t\to = a.offset();\n\t\t\t\tx = o.left;\n\t\t\t\ty = o.top + this._data.core.li_height;\n\t\t\t}\n\t\t\tif(this.settings.contextmenu.select_node && !this.is_selected(obj)) {\n\t\t\t\tthis.activate_node(obj, e);\n\t\t\t}\n\n\t\t\ti = s.items;\n\t\t\tif($.isFunction(i)) {\n\t\t\t\ti = i.call(this, obj, $.proxy(function (i) {\n\t\t\t\t\tthis._show_contextmenu(obj, x, y, i);\n\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif($.isPlainObject(i)) {\n\t\t\t\tthis._show_contextmenu(obj, x, y, i);\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * show the prepared context menu for a node\n\t\t * @name _show_contextmenu(obj, x, y, i)\n\t\t * @param {mixed} obj the node\n\t\t * @param {Number} x the x-coordinate relative to the document to show the menu at\n\t\t * @param {Number} y the y-coordinate relative to the document to show the menu at\n\t\t * @param {Number} i the object of items to show\n\t\t * @plugin contextmenu\n\t\t * @trigger show_contextmenu.jstree\n\t\t * @private\n\t\t */\n\t\tthis._show_contextmenu = function (obj, x, y, i) {\n\t\t\tvar d = this.get_node(obj, true),\n\t\t\t\ta = d.children(\".jstree-anchor\");\n\t\t\t$(document).one(\"context_show.vakata.jstree\", $.proxy(function (e, data) {\n\t\t\t\tvar cls = 'jstree-contextmenu jstree-' + this.get_theme() + '-contextmenu';\n\t\t\t\t$(data.element).addClass(cls);\n\t\t\t\ta.addClass('jstree-context');\n\t\t\t}, this));\n\t\t\tthis._data.contextmenu.visible = true;\n\t\t\t$.vakata.context.show(a, { 'x' : x, 'y' : y }, i);\n\t\t\t/**\n\t\t\t * triggered when the contextmenu is shown for a node\n\t\t\t * @event\n\t\t\t * @name show_contextmenu.jstree\n\t\t\t * @param {Object} node the node\n\t\t\t * @param {Number} x the x-coordinate of the menu relative to the document\n\t\t\t * @param {Number} y the y-coordinate of the menu relative to the document\n\t\t\t * @plugin contextmenu\n\t\t\t */\n\t\t\tthis.trigger('show_contextmenu', { \"node\" : obj, \"x\" : x, \"y\" : y });\n\t\t};\n\t};\n\n\t// contextmenu helper\n\t(function ($) {\n\t\tvar right_to_left = false,\n\t\t\tvakata_context = {\n\t\t\t\telement\t\t: false,\n\t\t\t\treference\t: false,\n\t\t\t\tposition_x\t: 0,\n\t\t\t\tposition_y\t: 0,\n\t\t\t\titems\t\t: [],\n\t\t\t\thtml\t\t: \"\",\n\t\t\t\tis_visible\t: false\n\t\t\t};\n\n\t\t$.vakata.context = {\n\t\t\tsettings : {\n\t\t\t\thide_onmouseleave\t: 0,\n\t\t\t\ticons\t\t\t\t: true\n\t\t\t},\n\t\t\t_trigger : function (event_name) {\n\t\t\t\t$(document).triggerHandler(\"context_\" + event_name + \".vakata\", {\n\t\t\t\t\t\"reference\"\t: vakata_context.reference,\n\t\t\t\t\t\"element\"\t: vakata_context.element,\n\t\t\t\t\t\"position\"\t: {\n\t\t\t\t\t\t\"x\" : vakata_context.position_x,\n\t\t\t\t\t\t\"y\" : vakata_context.position_y\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t_execute : function (i) {\n\t\t\t\ti = vakata_context.items[i];\n\t\t\t\treturn i && (!i._disabled || ($.isFunction(i._disabled) && !i._disabled({ \"item\" : i, \"reference\" : vakata_context.reference, \"element\" : vakata_context.element }))) && i.action ? i.action.call(null, {\n\t\t\t\t\t\t\t\"item\"\t\t: i,\n\t\t\t\t\t\t\t\"reference\"\t: vakata_context.reference,\n\t\t\t\t\t\t\t\"element\"\t: vakata_context.element,\n\t\t\t\t\t\t\t\"position\"\t: {\n\t\t\t\t\t\t\t\t\"x\" : vakata_context.position_x,\n\t\t\t\t\t\t\t\t\"y\" : vakata_context.position_y\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}) : false;\n\t\t\t},\n\t\t\t_parse : function (o, is_callback) {\n\t\t\t\tif(!o) { return false; }\n\t\t\t\tif(!is_callback) {\n\t\t\t\t\tvakata_context.html\t\t= \"\";\n\t\t\t\t\tvakata_context.items\t= [];\n\t\t\t\t}\n\t\t\t\tvar str = \"\",\n\t\t\t\t\tsep = false,\n\t\t\t\t\ttmp;\n\n\t\t\t\tif(is_callback) { str += \"<\"+\"ul>\"; }\n\t\t\t\t$.each(o, function (i, val) {\n\t\t\t\t\tif(!val) { return true; }\n\t\t\t\t\tvakata_context.items.push(val);\n\t\t\t\t\tif(!sep && val.separator_before) {\n\t\t\t\t\t\tstr += \"<\"+\"li class='vakata-context-separator'><\"+\"a href='#' \" + ($.vakata.context.settings.icons ? '' : 'style=\"margin-left:0px;\"') + \"> <\"+\"/a><\"+\"/li>\";\n\t\t\t\t\t}\n\t\t\t\t\tsep = false;\n\t\t\t\t\tstr += \"<\"+\"li class='\" + (val._class || \"\") + (val._disabled === true || ($.isFunction(val._disabled) && val._disabled({ \"item\" : val, \"reference\" : vakata_context.reference, \"element\" : vakata_context.element })) ? \" vakata-contextmenu-disabled \" : \"\") + \"' \"+(val.shortcut?\" data-shortcut='\"+val.shortcut+\"' \":'')+\">\";\n\t\t\t\t\tstr += \"<\"+\"a href='#' rel='\" + (vakata_context.items.length - 1) + \"' \" + (val.title ? \"title='\" + val.title + \"'\" : \"\") + \">\";\n\t\t\t\t\tif($.vakata.context.settings.icons) {\n\t\t\t\t\t\tstr += \"<\"+\"i \";\n\t\t\t\t\t\tif(val.icon) {\n\t\t\t\t\t\t\tif(val.icon.indexOf(\"/\") !== -1 || val.icon.indexOf(\".\") !== -1) { str += \" style='background:url(\\\"\" + val.icon + \"\\\") center center no-repeat' \"; }\n\t\t\t\t\t\t\telse { str += \" class='\" + val.icon + \"' \"; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += \"><\"+\"/i><\"+\"span class='vakata-contextmenu-sep'> <\"+\"/span>\";\n\t\t\t\t\t}\n\t\t\t\t\tstr += ($.isFunction(val.label) ? val.label({ \"item\" : i, \"reference\" : vakata_context.reference, \"element\" : vakata_context.element }) : val.label) + (val.shortcut?' '+ (val.shortcut_label || '') +'':'') + \"<\"+\"/a>\";\n\t\t\t\t\tif(val.submenu) {\n\t\t\t\t\t\ttmp = $.vakata.context._parse(val.submenu, true);\n\t\t\t\t\t\tif(tmp) { str += tmp; }\n\t\t\t\t\t}\n\t\t\t\t\tstr += \"<\"+\"/li>\";\n\t\t\t\t\tif(val.separator_after) {\n\t\t\t\t\t\tstr += \"<\"+\"li class='vakata-context-separator'><\"+\"a href='#' \" + ($.vakata.context.settings.icons ? '' : 'style=\"margin-left:0px;\"') + \"> <\"+\"/a><\"+\"/li>\";\n\t\t\t\t\t\tsep = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tstr = str.replace(/
  • <\\/li\\>$/,\"\");\n\t\t\t\tif(is_callback) { str += \"\"; }\n\t\t\t\t/**\n\t\t\t\t * triggered on the document when the contextmenu is parsed (HTML is built)\n\t\t\t\t * @event\n\t\t\t\t * @plugin contextmenu\n\t\t\t\t * @name context_parse.vakata\n\t\t\t\t * @param {jQuery} reference the element that was right clicked\n\t\t\t\t * @param {jQuery} element the DOM element of the menu itself\n\t\t\t\t * @param {Object} position the x & y coordinates of the menu\n\t\t\t\t */\n\t\t\t\tif(!is_callback) { vakata_context.html = str; $.vakata.context._trigger(\"parse\"); }\n\t\t\t\treturn str.length > 10 ? str : false;\n\t\t\t},\n\t\t\t_show_submenu : function (o) {\n\t\t\t\to = $(o);\n\t\t\t\tif(!o.length || !o.children(\"ul\").length) { return; }\n\t\t\t\tvar e = o.children(\"ul\"),\n\t\t\t\t\txl = o.offset().left,\n\t\t\t\t\tx = xl + o.outerWidth(),\n\t\t\t\t\ty = o.offset().top,\n\t\t\t\t\tw = e.width(),\n\t\t\t\t\th = e.height(),\n\t\t\t\t\tdw = $(window).width() + $(window).scrollLeft(),\n\t\t\t\t\tdh = $(window).height() + $(window).scrollTop();\n\t\t\t\t// може да се спести е една проверка - дали няма някой от класовете вече нагоре\n\t\t\t\tif(right_to_left) {\n\t\t\t\t\to[x - (w + 10 + o.outerWidth()) < 0 ? \"addClass\" : \"removeClass\"](\"vakata-context-left\");\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to[x + w > dw && xl > dw - x ? \"addClass\" : \"removeClass\"](\"vakata-context-right\");\n\t\t\t\t}\n\t\t\t\tif(y + h + 10 > dh) {\n\t\t\t\t\te.css(\"bottom\",\"-1px\");\n\t\t\t\t}\n\n\t\t\t\t//if does not fit - stick it to the side\n\t\t\t\tif (o.hasClass('vakata-context-right')) {\n\t\t\t\t\tif (xl < w) {\n\t\t\t\t\t\te.css(\"margin-right\", xl - w);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (dw - x < w) {\n\t\t\t\t\t\te.css(\"margin-left\", dw - x - w);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\te.show();\n\t\t\t},\n\t\t\tshow : function (reference, position, data) {\n\t\t\t\tvar o, e, x, y, w, h, dw, dh, cond = true;\n\t\t\t\tif(vakata_context.element && vakata_context.element.length) {\n\t\t\t\t\tvakata_context.element.width('');\n\t\t\t\t}\n\t\t\t\tswitch(cond) {\n\t\t\t\t\tcase (!position && !reference):\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tcase (!!position && !!reference):\n\t\t\t\t\t\tvakata_context.reference\t= reference;\n\t\t\t\t\t\tvakata_context.position_x\t= position.x;\n\t\t\t\t\t\tvakata_context.position_y\t= position.y;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase (!position && !!reference):\n\t\t\t\t\t\tvakata_context.reference\t= reference;\n\t\t\t\t\t\to = reference.offset();\n\t\t\t\t\t\tvakata_context.position_x\t= o.left + reference.outerHeight();\n\t\t\t\t\t\tvakata_context.position_y\t= o.top;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase (!!position && !reference):\n\t\t\t\t\t\tvakata_context.position_x\t= position.x;\n\t\t\t\t\t\tvakata_context.position_y\t= position.y;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!!reference && !data && $(reference).data('vakata_contextmenu')) {\n\t\t\t\t\tdata = $(reference).data('vakata_contextmenu');\n\t\t\t\t}\n\t\t\t\tif($.vakata.context._parse(data)) {\n\t\t\t\t\tvakata_context.element.html(vakata_context.html);\n\t\t\t\t}\n\t\t\t\tif(vakata_context.items.length) {\n\t\t\t\t\tvakata_context.element.appendTo(\"body\");\n\t\t\t\t\te = vakata_context.element;\n\t\t\t\t\tx = vakata_context.position_x;\n\t\t\t\t\ty = vakata_context.position_y;\n\t\t\t\t\tw = e.width();\n\t\t\t\t\th = e.height();\n\t\t\t\t\tdw = $(window).width() + $(window).scrollLeft();\n\t\t\t\t\tdh = $(window).height() + $(window).scrollTop();\n\t\t\t\t\tif(right_to_left) {\n\t\t\t\t\t\tx -= (e.outerWidth() - $(reference).outerWidth());\n\t\t\t\t\t\tif(x < $(window).scrollLeft() + 20) {\n\t\t\t\t\t\t\tx = $(window).scrollLeft() + 20;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(x + w + 20 > dw) {\n\t\t\t\t\t\tx = dw - (w + 20);\n\t\t\t\t\t}\n\t\t\t\t\tif(y + h + 20 > dh) {\n\t\t\t\t\t\ty = dh - (h + 20);\n\t\t\t\t\t}\n\n\t\t\t\t\tvakata_context.element\n\t\t\t\t\t\t.css({ \"left\" : x, \"top\" : y })\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.find('a').first().focus().parent().addClass(\"vakata-context-hover\");\n\t\t\t\t\tvakata_context.is_visible = true;\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when the contextmenu is shown\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin contextmenu\n\t\t\t\t\t * @name context_show.vakata\n\t\t\t\t\t * @param {jQuery} reference the element that was right clicked\n\t\t\t\t\t * @param {jQuery} element the DOM element of the menu itself\n\t\t\t\t\t * @param {Object} position the x & y coordinates of the menu\n\t\t\t\t\t */\n\t\t\t\t\t$.vakata.context._trigger(\"show\");\n\t\t\t\t}\n\t\t\t},\n\t\t\thide : function () {\n\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\tvakata_context.element.hide().find(\"ul\").hide().end().find(':focus').blur().end().detach();\n\t\t\t\t\tvakata_context.is_visible = false;\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when the contextmenu is hidden\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin contextmenu\n\t\t\t\t\t * @name context_hide.vakata\n\t\t\t\t\t * @param {jQuery} reference the element that was right clicked\n\t\t\t\t\t * @param {jQuery} element the DOM element of the menu itself\n\t\t\t\t\t * @param {Object} position the x & y coordinates of the menu\n\t\t\t\t\t */\n\t\t\t\t\t$.vakata.context._trigger(\"hide\");\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\t$(function () {\n\t\t\tright_to_left = $(\"body\").css(\"direction\") === \"rtl\";\n\t\t\tvar to = false;\n\n\t\t\tvakata_context.element = $(\"
      \");\n\t\t\tvakata_context.element\n\t\t\t\t.on(\"mouseenter\", \"li\", function (e) {\n\t\t\t\t\te.stopImmediatePropagation();\n\n\t\t\t\t\tif($.contains(this, e.relatedTarget)) {\n\t\t\t\t\t\t// премахнато заради delegate mouseleave по-долу\n\t\t\t\t\t\t// $(this).find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(to) { clearTimeout(to); }\n\t\t\t\t\tvakata_context.element.find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").end();\n\n\t\t\t\t\t$(this)\n\t\t\t\t\t\t.siblings().find(\"ul\").hide().end().end()\n\t\t\t\t\t\t.parentsUntil(\".vakata-context\", \"li\").addBack().addClass(\"vakata-context-hover\");\n\t\t\t\t\t$.vakata.context._show_submenu(this);\n\t\t\t\t})\n\t\t\t\t// тестово - дали не натоварва?\n\t\t\t\t.on(\"mouseleave\", \"li\", function (e) {\n\t\t\t\t\tif($.contains(this, e.relatedTarget)) { return; }\n\t\t\t\t\t$(this).find(\".vakata-context-hover\").addBack().removeClass(\"vakata-context-hover\");\n\t\t\t\t})\n\t\t\t\t.on(\"mouseleave\", function (e) {\n\t\t\t\t\t$(this).find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\");\n\t\t\t\t\tif($.vakata.context.settings.hide_onmouseleave) {\n\t\t\t\t\t\tto = setTimeout(\n\t\t\t\t\t\t\t(function (t) {\n\t\t\t\t\t\t\t\treturn function () { $.vakata.context.hide(); };\n\t\t\t\t\t\t\t}(this)), $.vakata.context.settings.hide_onmouseleave);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on(\"click\", \"a\", function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t//})\n\t\t\t\t//.on(\"mouseup\", \"a\", function (e) {\n\t\t\t\t\tif(!$(this).blur().parent().hasClass(\"vakata-context-disabled\") && $.vakata.context._execute($(this).attr(\"rel\")) !== false) {\n\t\t\t\t\t\t$.vakata.context.hide();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('keydown', 'a', function (e) {\n\t\t\t\t\t\tvar o = null;\n\t\t\t\t\t\tswitch(e.which) {\n\t\t\t\t\t\t\tcase 13:\n\t\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\t\te.type = \"click\";\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t$(e.currentTarget).trigger(e);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 37:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\tvakata_context.element.find(\".vakata-context-hover\").last().closest(\"li\").first().find(\"ul\").hide().find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").end().end().children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\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\tcase 38:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\to = vakata_context.element.find(\"ul:visible\").addBack().last().children(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").prevAll(\"li:not(.vakata-context-separator)\").first();\n\t\t\t\t\t\t\t\t\tif(!o.length) { o = vakata_context.element.find(\"ul:visible\").addBack().last().children(\"li:not(.vakata-context-separator)\").last(); }\n\t\t\t\t\t\t\t\t\to.addClass(\"vakata-context-hover\").children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\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\tcase 39:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\tvakata_context.element.find(\".vakata-context-hover\").last().children(\"ul\").show().children(\"li:not(.vakata-context-separator)\").removeClass(\"vakata-context-hover\").first().addClass(\"vakata-context-hover\").children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\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\tcase 40:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\to = vakata_context.element.find(\"ul:visible\").addBack().last().children(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").nextAll(\"li:not(.vakata-context-separator)\").first();\n\t\t\t\t\t\t\t\t\tif(!o.length) { o = vakata_context.element.find(\"ul:visible\").addBack().last().children(\"li:not(.vakata-context-separator)\").first(); }\n\t\t\t\t\t\t\t\t\to.addClass(\"vakata-context-hover\").children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\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\tcase 27:\n\t\t\t\t\t\t\t\t$.vakata.context.hide();\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t//console.log(e.which);\n\t\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.on('keydown', function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar a = vakata_context.element.find('.vakata-contextmenu-shortcut-' + e.which).parent();\n\t\t\t\t\tif(a.parent().not('.vakata-context-disabled')) {\n\t\t\t\t\t\ta.click();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t$(document)\n\t\t\t\t.on(\"mousedown.vakata.jstree\", function (e) {\n\t\t\t\t\tif(vakata_context.is_visible && vakata_context.element[0] !== e.target && !$.contains(vakata_context.element[0], e.target)) {\n\t\t\t\t\t\t$.vakata.context.hide();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on(\"context_show.vakata.jstree\", function (e, data) {\n\t\t\t\t\tvakata_context.element.find(\"li:has(ul)\").children(\"a\").addClass(\"vakata-context-parent\");\n\t\t\t\t\tif(right_to_left) {\n\t\t\t\t\t\tvakata_context.element.addClass(\"vakata-context-rtl\").css(\"direction\", \"rtl\");\n\t\t\t\t\t}\n\t\t\t\t\t// also apply a RTL class?\n\t\t\t\t\tvakata_context.element.find(\"ul\").hide().end();\n\t\t\t\t});\n\t\t});\n\t}($));\n\t// $.jstree.defaults.plugins.push(\"contextmenu\");\n\n\n/**\n * ### Drag'n'drop plugin\n *\n * Enables dragging and dropping of nodes in the tree, resulting in a move or copy operations.\n */\n\n\t/**\n\t * stores all defaults for the drag'n'drop plugin\n\t * @name $.jstree.defaults.dnd\n\t * @plugin dnd\n\t */\n\t$.jstree.defaults.dnd = {\n\t\t/**\n\t\t * a boolean indicating if a copy should be possible while dragging (by pressint the meta key or Ctrl). Defaults to `true`.\n\t\t * @name $.jstree.defaults.dnd.copy\n\t\t * @plugin dnd\n\t\t */\n\t\tcopy : true,\n\t\t/**\n\t\t * a number indicating how long a node should remain hovered while dragging to be opened. Defaults to `500`.\n\t\t * @name $.jstree.defaults.dnd.open_timeout\n\t\t * @plugin dnd\n\t\t */\n\t\topen_timeout : 500,\n\t\t/**\n\t\t * a function invoked each time a node is about to be dragged, invoked in the tree's scope and receives the nodes about to be dragged as an argument (array) and the event that started the drag - return `false` to prevent dragging\n\t\t * @name $.jstree.defaults.dnd.is_draggable\n\t\t * @plugin dnd\n\t\t */\n\t\tis_draggable : true,\n\t\t/**\n\t\t * a boolean indicating if checks should constantly be made while the user is dragging the node (as opposed to checking only on drop), default is `true`\n\t\t * @name $.jstree.defaults.dnd.check_while_dragging\n\t\t * @plugin dnd\n\t\t */\n\t\tcheck_while_dragging : true,\n\t\t/**\n\t\t * a boolean indicating if nodes from this tree should only be copied with dnd (as opposed to moved), default is `false`\n\t\t * @name $.jstree.defaults.dnd.always_copy\n\t\t * @plugin dnd\n\t\t */\n\t\talways_copy : false,\n\t\t/**\n\t\t * when dropping a node \"inside\", this setting indicates the position the node should go to - it can be an integer or a string: \"first\" (same as 0) or \"last\", default is `0`\n\t\t * @name $.jstree.defaults.dnd.inside_pos\n\t\t * @plugin dnd\n\t\t */\n\t\tinside_pos : 0,\n\t\t/**\n\t\t * when starting the drag on a node that is selected this setting controls if all selected nodes are dragged or only the single node, default is `true`, which means all selected nodes are dragged when the drag is started on a selected node\n\t\t * @name $.jstree.defaults.dnd.drag_selection\n\t\t * @plugin dnd\n\t\t */\n\t\tdrag_selection : true,\n\t\t/**\n\t\t * controls whether dnd works on touch devices. If left as boolean true dnd will work the same as in desktop browsers, which in some cases may impair scrolling. If set to boolean false dnd will not work on touch devices. There is a special third option - string \"selected\" which means only selected nodes can be dragged on touch devices.\n\t\t * @name $.jstree.defaults.dnd.touch\n\t\t * @plugin dnd\n\t\t */\n\t\ttouch : true,\n\t\t/**\n\t\t * controls whether items can be dropped anywhere on the node, not just on the anchor, by default only the node anchor is a valid drop target. Works best with the wholerow plugin. If enabled on mobile depending on the interface it might be hard for the user to cancel the drop, since the whole tree container will be a valid drop target.\n\t\t * @name $.jstree.defaults.dnd.large_drop_target\n\t\t * @plugin dnd\n\t\t */\n\t\tlarge_drop_target : false,\n\t\t/**\n\t\t * controls whether a drag can be initiated from any part of the node and not just the text/icon part, works best with the wholerow plugin. Keep in mind it can cause problems with tree scrolling on mobile depending on the interface - in that case set the touch option to \"selected\".\n\t\t * @name $.jstree.defaults.dnd.large_drag_target\n\t\t * @plugin dnd\n\t\t */\n\t\tlarge_drag_target : false,\n\t\t/**\n\t\t * controls whether use HTML5 dnd api instead of classical. That will allow better integration of dnd events with other HTML5 controls.\n\t\t * @reference http://caniuse.com/#feat=dragndrop\n\t\t * @name $.jstree.defaults.dnd.use_html5\n\t\t * @plugin dnd\n\t\t */\n\t\tuse_html5: false\n\t};\n\tvar drg, elm;\n\t// TODO: now check works by checking for each node individually, how about max_children, unique, etc?\n\t$.jstree.plugins.dnd = function (options, parent) {\n\t\tthis.init = function (el, options) {\n\t\t\tparent.init.call(this, el, options);\n\t\t\tthis.settings.dnd.use_html5 = this.settings.dnd.use_html5 && ('draggable' in document.createElement('span'));\n\t\t};\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tthis.element\n\t\t\t\t.on(this.settings.dnd.use_html5 ? 'dragstart.jstree' : 'mousedown.jstree touchstart.jstree', this.settings.dnd.large_drag_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tif(this.settings.dnd.large_drag_target && $(e.target).closest('.jstree-node')[0] !== e.currentTarget) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(e.type === \"touchstart\" && (!this.settings.dnd.touch || (this.settings.dnd.touch === 'selected' && !$(e.currentTarget).closest('.jstree-node').children('.jstree-anchor').hasClass('jstree-clicked')))) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar obj = this.get_node(e.target),\n\t\t\t\t\t\t\tmlt = this.is_selected(obj) && this.settings.dnd.drag_selection ? this.get_top_selected().length : 1,\n\t\t\t\t\t\t\ttxt = (mlt > 1 ? mlt + ' ' + this.get_string('nodes') : this.get_text(e.currentTarget));\n\t\t\t\t\t\tif(this.settings.core.force_text) {\n\t\t\t\t\t\t\ttxt = $.vakata.html.escape(txt);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(obj && obj.id && obj.id !== $.jstree.root && (e.which === 1 || e.type === \"touchstart\" || e.type === \"dragstart\") &&\n\t\t\t\t\t\t\t(this.settings.dnd.is_draggable === true || ($.isFunction(this.settings.dnd.is_draggable) && this.settings.dnd.is_draggable.call(this, (mlt > 1 ? this.get_top_selected(true) : [obj]), e)))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdrg = { 'jstree' : true, 'origin' : this, 'obj' : this.get_node(obj,true), 'nodes' : mlt > 1 ? this.get_top_selected() : [obj.id] };\n\t\t\t\t\t\t\telm = e.currentTarget;\n\t\t\t\t\t\t\tif (this.settings.dnd.use_html5) {\n\t\t\t\t\t\t\t\t$.vakata.dnd._trigger('start', e, { 'helper': $(), 'element': elm, 'data': drg });\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.element.trigger('mousedown.jstree');\n\t\t\t\t\t\t\t\treturn $.vakata.dnd.start(e, drg, '
      ' + txt + '+
      ');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this));\n\t\t\tif (this.settings.dnd.use_html5) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('dragover.jstree', function (e) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t$.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg });\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t})\n\t\t\t\t\t//.on('dragenter.jstree', this.settings.dnd.large_drop_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t//\t\te.preventDefault();\n\t\t\t\t\t//\t\t$.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg });\n\t\t\t\t\t//\t\treturn false;\n\t\t\t\t\t//\t}, this))\n\t\t\t\t\t.on('drop.jstree', $.proxy(function (e) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t$.vakata.dnd._trigger('stop', e, { 'helper': $(), 'element': elm, 'data': drg });\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}, this));\n\t\t\t}\n\t\t};\n\t\tthis.redraw_node = function(obj, deep, callback, force_render) {\n\t\t\tobj = parent.redraw_node.apply(this, arguments);\n\t\t\tif (obj && this.settings.dnd.use_html5) {\n\t\t\t\tif (this.settings.dnd.large_drag_target) {\n\t\t\t\t\tobj.setAttribute('draggable', true);\n\t\t\t\t} else {\n\t\t\t\t\tvar i, j, tmp = null;\n\t\t\t\t\tfor(i = 0, j = obj.childNodes.length; i < j; i++) {\n\t\t\t\t\t\tif(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf(\"jstree-anchor\") !== -1) {\n\t\t\t\t\t\t\ttmp = obj.childNodes[i];\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(tmp) {\n\t\t\t\t\t\ttmp.setAttribute('draggable', true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn obj;\n\t\t};\n\t};\n\n\t$(function() {\n\t\t// bind only once for all instances\n\t\tvar lastmv = false,\n\t\t\tlaster = false,\n\t\t\tlastev = false,\n\t\t\topento = false,\n\t\t\tmarker = $('
       
      ').hide(); //.appendTo('body');\n\n\t\t$(document)\n\t\t\t.on('dnd_start.vakata.jstree', function (e, data) {\n\t\t\t\tlastmv = false;\n\t\t\t\tlastev = false;\n\t\t\t\tif(!data || !data.data || !data.data.jstree) { return; }\n\t\t\t\tmarker.appendTo('body'); //.show();\n\t\t\t})\n\t\t\t.on('dnd_move.vakata.jstree', function (e, data) {\n\t\t\t\tvar isDifferentNode = data.event.target !== lastev.target;\n\t\t\t\tif(opento) {\n\t\t\t\t\tif (!data.event || data.event.type !== 'dragover' || isDifferentNode) {\n\t\t\t\t\t\tclearTimeout(opento);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!data || !data.data || !data.data.jstree) { return; }\n\n\t\t\t\t// if we are hovering the marker image do nothing (can happen on \"inside\" drags)\n\t\t\t\tif(data.event.target.id && data.event.target.id === 'jstree-marker') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlastev = data.event;\n\n\t\t\t\tvar ins = $.jstree.reference(data.event.target),\n\t\t\t\t\tref = false,\n\t\t\t\t\toff = false,\n\t\t\t\t\trel = false,\n\t\t\t\t\ttmp, l, t, h, p, i, o, ok, t1, t2, op, ps, pr, ip, tm, is_copy, pn;\n\t\t\t\t// if we are over an instance\n\t\t\t\tif(ins && ins._data && ins._data.dnd) {\n\t\t\t\t\tmarker.attr('class', 'jstree-' + ins.get_theme() + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' ));\n\t\t\t\t\tis_copy = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey)));\n\t\t\t\t\tdata.helper\n\t\t\t\t\t\t.children().attr('class', 'jstree-' + ins.get_theme() + ' jstree-' + ins.get_theme() + '-' + ins.get_theme_variant() + ' ' + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' ))\n\t\t\t\t\t\t.find('.jstree-copy').first()[ is_copy ? 'show' : 'hide' ]();\n\n\t\t\t\t\t// if are hovering the container itself add a new root node\n\t\t\t\t\t//console.log(data.event);\n\t\t\t\t\tif( (data.event.target === ins.element[0] || data.event.target === ins.get_container_ul()[0]) && ins.get_container_ul().children().length === 0) {\n\t\t\t\t\t\tok = true;\n\t\t\t\t\t\tfor(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) {\n\t\t\t\t\t\t\tok = ok && ins.check( (data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey)) ) ? \"copy_node\" : \"move_node\"), (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), $.jstree.root, 'last', { 'dnd' : true, 'ref' : ins.get_node($.jstree.root), 'pos' : 'i', 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) });\n\t\t\t\t\t\t\tif(!ok) { break; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ok) {\n\t\t\t\t\t\t\tlastmv = { 'ins' : ins, 'par' : $.jstree.root, 'pos' : 'last' };\n\t\t\t\t\t\t\tmarker.hide();\n\t\t\t\t\t\t\tdata.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok');\n\t\t\t\t\t\t\tif (data.event.originalEvent && data.event.originalEvent.dataTransfer) {\n\t\t\t\t\t\t\t\tdata.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn;\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\t// if we are hovering a tree node\n\t\t\t\t\t\tref = ins.settings.dnd.large_drop_target ? $(data.event.target).closest('.jstree-node').children('.jstree-anchor') : $(data.event.target).closest('.jstree-anchor');\n\t\t\t\t\t\tif(ref && ref.length && ref.parent().is('.jstree-closed, .jstree-open, .jstree-leaf')) {\n\t\t\t\t\t\t\toff = ref.offset();\n\t\t\t\t\t\t\trel = (data.event.pageY !== undefined ? data.event.pageY : data.event.originalEvent.pageY) - off.top;\n\t\t\t\t\t\t\th = ref.outerHeight();\n\t\t\t\t\t\t\tif(rel < h / 3) {\n\t\t\t\t\t\t\t\to = ['b', 'i', 'a'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if(rel > h - h / 3) {\n\t\t\t\t\t\t\t\to = ['a', 'i', 'b'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\to = rel > h / 2 ? ['i', 'a', 'b'] : ['i', 'b', 'a'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$.each(o, function (j, v) {\n\t\t\t\t\t\t\t\tswitch(v) {\n\t\t\t\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\t\t\t\tl = off.left - 6;\n\t\t\t\t\t\t\t\t\t\tt = off.top;\n\t\t\t\t\t\t\t\t\t\tp = ins.get_parent(ref);\n\t\t\t\t\t\t\t\t\t\ti = ref.parent().index();\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 'i':\n\t\t\t\t\t\t\t\t\t\tip = ins.settings.dnd.inside_pos;\n\t\t\t\t\t\t\t\t\t\ttm = ins.get_node(ref.parent());\n\t\t\t\t\t\t\t\t\t\tl = off.left - 2;\n\t\t\t\t\t\t\t\t\t\tt = off.top + h / 2 + 1;\n\t\t\t\t\t\t\t\t\t\tp = tm.id;\n\t\t\t\t\t\t\t\t\t\ti = ip === 'first' ? 0 : (ip === 'last' ? tm.children.length : Math.min(ip, tm.children.length));\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 'a':\n\t\t\t\t\t\t\t\t\t\tl = off.left - 6;\n\t\t\t\t\t\t\t\t\t\tt = off.top + h;\n\t\t\t\t\t\t\t\t\t\tp = ins.get_parent(ref);\n\t\t\t\t\t\t\t\t\t\ti = ref.parent().index() + 1;\n\t\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\tok = true;\n\t\t\t\t\t\t\t\tfor(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) {\n\t\t\t\t\t\t\t\t\top = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? \"copy_node\" : \"move_node\";\n\t\t\t\t\t\t\t\t\tps = i;\n\t\t\t\t\t\t\t\t\tif(op === \"move_node\" && v === 'a' && (data.data.origin && data.data.origin === ins) && p === ins.get_parent(data.data.nodes[t1])) {\n\t\t\t\t\t\t\t\t\t\tpr = ins.get_node(p);\n\t\t\t\t\t\t\t\t\t\tif(ps > $.inArray(data.data.nodes[t1], pr.children)) {\n\t\t\t\t\t\t\t\t\t\t\tps -= 1;\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\tok = ok && ( (ins && ins.settings && ins.settings.dnd && ins.settings.dnd.check_while_dragging === false) || ins.check(op, (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), p, ps, { 'dnd' : true, 'ref' : ins.get_node(ref.parent()), 'pos' : v, 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }) );\n\t\t\t\t\t\t\t\t\tif(!ok) {\n\t\t\t\t\t\t\t\t\t\tif(ins && ins.last_error) { laster = ins.last_error(); }\n\t\t\t\t\t\t\t\t\t\tbreak;\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\tif(v === 'i' && ref.parent().is('.jstree-closed') && ins.settings.dnd.open_timeout) {\n\t\t\t\t\t\t\t\t\tif (!data.event || data.event.type !== 'dragover' || isDifferentNode) {\n\t\t\t\t\t\t\t\t\t\tif (opento) { clearTimeout(opento); }\n\t\t\t\t\t\t\t\t\t\topento = setTimeout((function (x, z) { return function () { x.open_node(z); }; }(ins, ref)), ins.settings.dnd.open_timeout);\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\tif(ok) {\n\t\t\t\t\t\t\t\t\tpn = ins.get_node(p, true);\n\t\t\t\t\t\t\t\t\tif (!pn.hasClass('.jstree-dnd-parent')) {\n\t\t\t\t\t\t\t\t\t\t$('.jstree-dnd-parent').removeClass('jstree-dnd-parent');\n\t\t\t\t\t\t\t\t\t\tpn.addClass('jstree-dnd-parent');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlastmv = { 'ins' : ins, 'par' : p, 'pos' : v === 'i' && ip === 'last' && i === 0 && !ins.is_loaded(tm) ? 'last' : i };\n\t\t\t\t\t\t\t\t\tmarker.css({ 'left' : l + 'px', 'top' : t + 'px' }).show();\n\t\t\t\t\t\t\t\t\tdata.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok');\n\t\t\t\t\t\t\t\t\tif (data.event.originalEvent && data.event.originalEvent.dataTransfer) {\n\t\t\t\t\t\t\t\t\t\tdata.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlaster = {};\n\t\t\t\t\t\t\t\t\to = true;\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif(o === true) { return; }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$('.jstree-dnd-parent').removeClass('jstree-dnd-parent');\n\t\t\t\tlastmv = false;\n\t\t\t\tdata.helper.find('.jstree-icon').removeClass('jstree-ok').addClass('jstree-er');\n\t\t\t\tif (data.event.originalEvent && data.event.originalEvent.dataTransfer) {\n\t\t\t\t\tdata.event.originalEvent.dataTransfer.dropEffect = 'none';\n\t\t\t\t}\n\t\t\t\tmarker.hide();\n\t\t\t})\n\t\t\t.on('dnd_scroll.vakata.jstree', function (e, data) {\n\t\t\t\tif(!data || !data.data || !data.data.jstree) { return; }\n\t\t\t\tmarker.hide();\n\t\t\t\tlastmv = false;\n\t\t\t\tlastev = false;\n\t\t\t\tdata.helper.find('.jstree-icon').first().removeClass('jstree-ok').addClass('jstree-er');\n\t\t\t})\n\t\t\t.on('dnd_stop.vakata.jstree', function (e, data) {\n\t\t\t\t$('.jstree-dnd-parent').removeClass('jstree-dnd-parent');\n\t\t\t\tif(opento) { clearTimeout(opento); }\n\t\t\t\tif(!data || !data.data || !data.data.jstree) { return; }\n\t\t\t\tmarker.hide().detach();\n\t\t\t\tvar i, j, nodes = [];\n\t\t\t\tif(lastmv) {\n\t\t\t\t\tfor(i = 0, j = data.data.nodes.length; i < j; i++) {\n\t\t\t\t\t\tnodes[i] = data.data.origin ? data.data.origin.get_node(data.data.nodes[i]) : data.data.nodes[i];\n\t\t\t\t\t}\n\t\t\t\t\tlastmv.ins[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? 'copy_node' : 'move_node' ](nodes, lastmv.par, lastmv.pos, false, false, false, data.data.origin);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ti = $(data.event.target).closest('.jstree');\n\t\t\t\t\tif(i.length && laster && laster.error && laster.error === 'check') {\n\t\t\t\t\t\ti = i.jstree(true);\n\t\t\t\t\t\tif(i) {\n\t\t\t\t\t\t\ti.settings.core.error.call(this, laster);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastev = false;\n\t\t\t\tlastmv = false;\n\t\t\t})\n\t\t\t.on('keyup.jstree keydown.jstree', function (e, data) {\n\t\t\t\tdata = $.vakata.dnd._get();\n\t\t\t\tif(data && data.data && data.data.jstree) {\n\t\t\t\t\tif (e.type === \"keyup\" && e.which === 27) {\n\t\t\t\t\t\tif (opento) { clearTimeout(opento); }\n\t\t\t\t\t\tlastmv = false;\n\t\t\t\t\t\tlaster = false;\n\t\t\t\t\t\tlastev = false;\n\t\t\t\t\t\topento = false;\n\t\t\t\t\t\tmarker.hide().detach();\n\t\t\t\t\t\t$.vakata.dnd._clean();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdata.helper.find('.jstree-copy').first()[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (e.metaKey || e.ctrlKey))) ? 'show' : 'hide' ]();\n\t\t\t\t\t\tif(lastev) {\n\t\t\t\t\t\t\tlastev.metaKey = e.metaKey;\n\t\t\t\t\t\t\tlastev.ctrlKey = e.ctrlKey;\n\t\t\t\t\t\t\t$.vakata.dnd._trigger('move', lastev);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t});\n\n\t// helpers\n\t(function ($) {\n\t\t$.vakata.html = {\n\t\t\tdiv : $('
      '),\n\t\t\tescape : function (str) {\n\t\t\t\treturn $.vakata.html.div.text(str).html();\n\t\t\t},\n\t\t\tstrip : function (str) {\n\t\t\t\treturn $.vakata.html.div.empty().append($.parseHTML(str)).text();\n\t\t\t}\n\t\t};\n\t\t// private variable\n\t\tvar vakata_dnd = {\n\t\t\telement\t: false,\n\t\t\ttarget\t: false,\n\t\t\tis_down\t: false,\n\t\t\tis_drag\t: false,\n\t\t\thelper\t: false,\n\t\t\thelper_w: 0,\n\t\t\tdata\t: false,\n\t\t\tinit_x\t: 0,\n\t\t\tinit_y\t: 0,\n\t\t\tscroll_l: 0,\n\t\t\tscroll_t: 0,\n\t\t\tscroll_e: false,\n\t\t\tscroll_i: false,\n\t\t\tis_touch: false\n\t\t};\n\t\t$.vakata.dnd = {\n\t\t\tsettings : {\n\t\t\t\tscroll_speed\t\t: 10,\n\t\t\t\tscroll_proximity\t: 20,\n\t\t\t\thelper_left\t\t\t: 5,\n\t\t\t\thelper_top\t\t\t: 10,\n\t\t\t\tthreshold\t\t\t: 5,\n\t\t\t\tthreshold_touch\t\t: 50\n\t\t\t},\n\t\t\t_trigger : function (event_name, e, data) {\n\t\t\t\tif (data === undefined) {\n\t\t\t\t\tdata = $.vakata.dnd._get();\n\t\t\t\t}\n\t\t\t\tdata.event = e;\n\t\t\t\t$(document).triggerHandler(\"dnd_\" + event_name + \".vakata\", data);\n\t\t\t},\n\t\t\t_get : function () {\n\t\t\t\treturn {\n\t\t\t\t\t\"data\"\t\t: vakata_dnd.data,\n\t\t\t\t\t\"element\"\t: vakata_dnd.element,\n\t\t\t\t\t\"helper\"\t: vakata_dnd.helper\n\t\t\t\t};\n\t\t\t},\n\t\t\t_clean : function () {\n\t\t\t\tif(vakata_dnd.helper) { vakata_dnd.helper.remove(); }\n\t\t\t\tif(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; }\n\t\t\t\tvakata_dnd = {\n\t\t\t\t\telement\t: false,\n\t\t\t\t\ttarget\t: false,\n\t\t\t\t\tis_down\t: false,\n\t\t\t\t\tis_drag\t: false,\n\t\t\t\t\thelper\t: false,\n\t\t\t\t\thelper_w: 0,\n\t\t\t\t\tdata\t: false,\n\t\t\t\t\tinit_x\t: 0,\n\t\t\t\t\tinit_y\t: 0,\n\t\t\t\t\tscroll_l: 0,\n\t\t\t\t\tscroll_t: 0,\n\t\t\t\t\tscroll_e: false,\n\t\t\t\t\tscroll_i: false,\n\t\t\t\t\tis_touch: false\n\t\t\t\t};\n\t\t\t\t$(document).off(\"mousemove.vakata.jstree touchmove.vakata.jstree\", $.vakata.dnd.drag);\n\t\t\t\t$(document).off(\"mouseup.vakata.jstree touchend.vakata.jstree\", $.vakata.dnd.stop);\n\t\t\t},\n\t\t\t_scroll : function (init_only) {\n\t\t\t\tif(!vakata_dnd.scroll_e || (!vakata_dnd.scroll_l && !vakata_dnd.scroll_t)) {\n\t\t\t\t\tif(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; }\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif(!vakata_dnd.scroll_i) {\n\t\t\t\t\tvakata_dnd.scroll_i = setInterval($.vakata.dnd._scroll, 100);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif(init_only === true) { return false; }\n\n\t\t\t\tvar i = vakata_dnd.scroll_e.scrollTop(),\n\t\t\t\t\tj = vakata_dnd.scroll_e.scrollLeft();\n\t\t\t\tvakata_dnd.scroll_e.scrollTop(i + vakata_dnd.scroll_t * $.vakata.dnd.settings.scroll_speed);\n\t\t\t\tvakata_dnd.scroll_e.scrollLeft(j + vakata_dnd.scroll_l * $.vakata.dnd.settings.scroll_speed);\n\t\t\t\tif(i !== vakata_dnd.scroll_e.scrollTop() || j !== vakata_dnd.scroll_e.scrollLeft()) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when a drag causes an element to scroll\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin dnd\n\t\t\t\t\t * @name dnd_scroll.vakata\n\t\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t\t * @param {jQuery} event the element that is scrolling\n\t\t\t\t\t */\n\t\t\t\t\t$.vakata.dnd._trigger(\"scroll\", vakata_dnd.scroll_e);\n\t\t\t\t}\n\t\t\t},\n\t\t\tstart : function (e, data, html) {\n\t\t\t\tif(e.type === \"touchstart\" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) {\n\t\t\t\t\te.pageX = e.originalEvent.changedTouches[0].pageX;\n\t\t\t\t\te.pageY = e.originalEvent.changedTouches[0].pageY;\n\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset);\n\t\t\t\t}\n\t\t\t\tif(vakata_dnd.is_drag) { $.vakata.dnd.stop({}); }\n\t\t\t\ttry {\n\t\t\t\t\te.currentTarget.unselectable = \"on\";\n\t\t\t\t\te.currentTarget.onselectstart = function() { return false; };\n\t\t\t\t\tif(e.currentTarget.style) {\n\t\t\t\t\t\te.currentTarget.style.touchAction = \"none\";\n\t\t\t\t\t\te.currentTarget.style.msTouchAction = \"none\";\n\t\t\t\t\t\te.currentTarget.style.MozUserSelect = \"none\";\n\t\t\t\t\t}\n\t\t\t\t} catch(ignore) { }\n\t\t\t\tvakata_dnd.init_x\t= e.pageX;\n\t\t\t\tvakata_dnd.init_y\t= e.pageY;\n\t\t\t\tvakata_dnd.data\t\t= data;\n\t\t\t\tvakata_dnd.is_down\t= true;\n\t\t\t\tvakata_dnd.element\t= e.currentTarget;\n\t\t\t\tvakata_dnd.target\t= e.target;\n\t\t\t\tvakata_dnd.is_touch\t= e.type === \"touchstart\";\n\t\t\t\tif(html !== false) {\n\t\t\t\t\tvakata_dnd.helper = $(\"
      \").html(html).css({\n\t\t\t\t\t\t\"display\"\t\t: \"block\",\n\t\t\t\t\t\t\"margin\"\t\t: \"0\",\n\t\t\t\t\t\t\"padding\"\t\t: \"0\",\n\t\t\t\t\t\t\"position\"\t\t: \"absolute\",\n\t\t\t\t\t\t\"top\"\t\t\t: \"-2000px\",\n\t\t\t\t\t\t\"lineHeight\"\t: \"16px\",\n\t\t\t\t\t\t\"zIndex\"\t\t: \"10000\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t$(document).on(\"mousemove.vakata.jstree touchmove.vakata.jstree\", $.vakata.dnd.drag);\n\t\t\t\t$(document).on(\"mouseup.vakata.jstree touchend.vakata.jstree\", $.vakata.dnd.stop);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tdrag : function (e) {\n\t\t\t\tif(e.type === \"touchmove\" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) {\n\t\t\t\t\te.pageX = e.originalEvent.changedTouches[0].pageX;\n\t\t\t\t\te.pageY = e.originalEvent.changedTouches[0].pageY;\n\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset);\n\t\t\t\t}\n\t\t\t\tif(!vakata_dnd.is_down) { return; }\n\t\t\t\tif(!vakata_dnd.is_drag) {\n\t\t\t\t\tif(\n\t\t\t\t\t\tMath.abs(e.pageX - vakata_dnd.init_x) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) ||\n\t\t\t\t\t\tMath.abs(e.pageY - vakata_dnd.init_y) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold)\n\t\t\t\t\t) {\n\t\t\t\t\t\tif(vakata_dnd.helper) {\n\t\t\t\t\t\t\tvakata_dnd.helper.appendTo(\"body\");\n\t\t\t\t\t\t\tvakata_dnd.helper_w = vakata_dnd.helper.outerWidth();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvakata_dnd.is_drag = true;\n\t\t\t\t\t\t$(vakata_dnd.target).one('click.vakata', false);\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * triggered on the document when a drag starts\n\t\t\t\t\t\t * @event\n\t\t\t\t\t\t * @plugin dnd\n\t\t\t\t\t\t * @name dnd_start.vakata\n\t\t\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t\t\t * @param {Object} event the event that caused the start (probably mousemove)\n\t\t\t\t\t\t */\n\t\t\t\t\t\t$.vakata.dnd._trigger(\"start\", e);\n\t\t\t\t\t}\n\t\t\t\t\telse { return; }\n\t\t\t\t}\n\n\t\t\t\tvar d = false, w = false,\n\t\t\t\t\tdh = false, wh = false,\n\t\t\t\t\tdw = false, ww = false,\n\t\t\t\t\tdt = false, dl = false,\n\t\t\t\t\tht = false, hl = false;\n\n\t\t\t\tvakata_dnd.scroll_t = 0;\n\t\t\t\tvakata_dnd.scroll_l = 0;\n\t\t\t\tvakata_dnd.scroll_e = false;\n\t\t\t\t$($(e.target).parentsUntil(\"body\").addBack().get().reverse())\n\t\t\t\t\t.filter(function () {\n\t\t\t\t\t\treturn\t(/^auto|scroll$/).test($(this).css(\"overflow\")) &&\n\t\t\t\t\t\t\t\t(this.scrollHeight > this.offsetHeight || this.scrollWidth > this.offsetWidth);\n\t\t\t\t\t})\n\t\t\t\t\t.each(function () {\n\t\t\t\t\t\tvar t = $(this), o = t.offset();\n\t\t\t\t\t\tif(this.scrollHeight > this.offsetHeight) {\n\t\t\t\t\t\t\tif(o.top + t.height() - e.pageY < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_t = 1; }\n\t\t\t\t\t\t\tif(e.pageY - o.top < $.vakata.dnd.settings.scroll_proximity)\t\t\t\t{ vakata_dnd.scroll_t = -1; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this.scrollWidth > this.offsetWidth) {\n\t\t\t\t\t\t\tif(o.left + t.width() - e.pageX < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_l = 1; }\n\t\t\t\t\t\t\tif(e.pageX - o.left < $.vakata.dnd.settings.scroll_proximity)\t\t\t\t{ vakata_dnd.scroll_l = -1; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(vakata_dnd.scroll_t || vakata_dnd.scroll_l) {\n\t\t\t\t\t\t\tvakata_dnd.scroll_e = $(this);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\tif(!vakata_dnd.scroll_e) {\n\t\t\t\t\td = $(document); w = $(window);\n\t\t\t\t\tdh = d.height(); wh = w.height();\n\t\t\t\t\tdw = d.width(); ww = w.width();\n\t\t\t\t\tdt = d.scrollTop(); dl = d.scrollLeft();\n\t\t\t\t\tif(dh > wh && e.pageY - dt < $.vakata.dnd.settings.scroll_proximity)\t\t{ vakata_dnd.scroll_t = -1; }\n\t\t\t\t\tif(dh > wh && wh - (e.pageY - dt) < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_t = 1; }\n\t\t\t\t\tif(dw > ww && e.pageX - dl < $.vakata.dnd.settings.scroll_proximity)\t\t{ vakata_dnd.scroll_l = -1; }\n\t\t\t\t\tif(dw > ww && ww - (e.pageX - dl) < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_l = 1; }\n\t\t\t\t\tif(vakata_dnd.scroll_t || vakata_dnd.scroll_l) {\n\t\t\t\t\t\tvakata_dnd.scroll_e = d;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(vakata_dnd.scroll_e) { $.vakata.dnd._scroll(true); }\n\n\t\t\t\tif(vakata_dnd.helper) {\n\t\t\t\t\tht = parseInt(e.pageY + $.vakata.dnd.settings.helper_top, 10);\n\t\t\t\t\thl = parseInt(e.pageX + $.vakata.dnd.settings.helper_left, 10);\n\t\t\t\t\tif(dh && ht + 25 > dh) { ht = dh - 50; }\n\t\t\t\t\tif(dw && hl + vakata_dnd.helper_w > dw) { hl = dw - (vakata_dnd.helper_w + 2); }\n\t\t\t\t\tvakata_dnd.helper.css({\n\t\t\t\t\t\tleft\t: hl + \"px\",\n\t\t\t\t\t\ttop\t\t: ht + \"px\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered on the document when a drag is in progress\n\t\t\t\t * @event\n\t\t\t\t * @plugin dnd\n\t\t\t\t * @name dnd_move.vakata\n\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t * @param {Object} event the event that caused this to trigger (most likely mousemove)\n\t\t\t\t */\n\t\t\t\t$.vakata.dnd._trigger(\"move\", e);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tstop : function (e) {\n\t\t\t\tif(e.type === \"touchend\" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) {\n\t\t\t\t\te.pageX = e.originalEvent.changedTouches[0].pageX;\n\t\t\t\t\te.pageY = e.originalEvent.changedTouches[0].pageY;\n\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset);\n\t\t\t\t}\n\t\t\t\tif(vakata_dnd.is_drag) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when a drag stops (the dragged element is dropped)\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin dnd\n\t\t\t\t\t * @name dnd_stop.vakata\n\t\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t\t * @param {Object} event the event that caused the stop\n\t\t\t\t\t */\n\t\t\t\t\tif (e.target !== vakata_dnd.target) {\n\t\t\t\t\t\t$(vakata_dnd.target).off('click.vakata');\n\t\t\t\t\t}\n\t\t\t\t\t$.vakata.dnd._trigger(\"stop\", e);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(e.type === \"touchend\" && e.target === vakata_dnd.target) {\n\t\t\t\t\t\tvar to = setTimeout(function () { $(e.target).click(); }, 100);\n\t\t\t\t\t\t$(e.target).one('click', function() { if(to) { clearTimeout(to); } });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$.vakata.dnd._clean();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\t}($));\n\n\t// include the dnd plugin by default\n\t// $.jstree.defaults.plugins.push(\"dnd\");\n\n\n/**\n * ### Massload plugin\n *\n * Adds massload functionality to jsTree, so that multiple nodes can be loaded in a single request (only useful with lazy loading).\n */\n\n\t/**\n\t * massload configuration\n\t *\n\t * It is possible to set this to a standard jQuery-like AJAX config.\n\t * In addition to the standard jQuery ajax options here you can supply functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node IDs need to be loaded, the return value of those functions will be used.\n\t *\n\t * You can also set this to a function, that function will receive the node IDs being loaded as argument and a second param which is a function (callback) which should be called with the result.\n\t *\n\t * Both the AJAX and the function approach rely on the same return value - an object where the keys are the node IDs, and the value is the children of that node as an array.\n\t *\n\t *\t{\n\t *\t\t\"id1\" : [{ \"text\" : \"Child of ID1\", \"id\" : \"c1\" }, { \"text\" : \"Another child of ID1\", \"id\" : \"c2\" }],\n\t *\t\t\"id2\" : [{ \"text\" : \"Child of ID2\", \"id\" : \"c3\" }]\n\t *\t}\n\t * \n\t * @name $.jstree.defaults.massload\n\t * @plugin massload\n\t */\n\t$.jstree.defaults.massload = null;\n\t$.jstree.plugins.massload = function (options, parent) {\n\t\tthis.init = function (el, options) {\n\t\t\tthis._data.massload = {};\n\t\t\tparent.init.call(this, el, options);\n\t\t};\n\t\tthis._load_nodes = function (nodes, callback, is_callback, force_reload) {\n\t\t\tvar s = this.settings.massload,\n\t\t\t\tnodesString = JSON.stringify(nodes),\n\t\t\t\ttoLoad = [],\n\t\t\t\tm = this._model.data,\n\t\t\t\ti, j, dom;\n\t\t\tif (!is_callback) {\n\t\t\t\tfor(i = 0, j = nodes.length; i < j; i++) {\n\t\t\t\t\tif(!m[nodes[i]] || ( (!m[nodes[i]].state.loaded && !m[nodes[i]].state.failed) || force_reload) ) {\n\t\t\t\t\t\ttoLoad.push(nodes[i]);\n\t\t\t\t\t\tdom = this.get_node(nodes[i], true);\n\t\t\t\t\t\tif (dom && dom.length) {\n\t\t\t\t\t\t\tdom.addClass(\"jstree-loading\").attr('aria-busy',true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._data.massload = {};\n\t\t\t\tif (toLoad.length) {\n\t\t\t\t\tif($.isFunction(s)) {\n\t\t\t\t\t\treturn s.call(this, toLoad, $.proxy(function (data) {\n\t\t\t\t\t\t\tvar i, j;\n\t\t\t\t\t\t\tif(data) {\n\t\t\t\t\t\t\t\tfor(i in data) {\n\t\t\t\t\t\t\t\t\tif(data.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\tthis._data.massload[i] = data[i];\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\tfor(i = 0, j = nodes.length; i < j; i++) {\n\t\t\t\t\t\t\t\tdom = this.get_node(nodes[i], true);\n\t\t\t\t\t\t\t\tif (dom && dom.length) {\n\t\t\t\t\t\t\t\t\tdom.removeClass(\"jstree-loading\").attr('aria-busy',false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tparent._load_nodes.call(this, nodes, callback, is_callback, force_reload);\n\t\t\t\t\t\t}, this));\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof s === 'object' && s && s.url) {\n\t\t\t\t\t\ts = $.extend(true, {}, s);\n\t\t\t\t\t\tif($.isFunction(s.url)) {\n\t\t\t\t\t\t\ts.url = s.url.call(this, toLoad);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif($.isFunction(s.data)) {\n\t\t\t\t\t\t\ts.data = s.data.call(this, toLoad);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn $.ajax(s)\n\t\t\t\t\t\t\t.done($.proxy(function (data,t,x) {\n\t\t\t\t\t\t\t\t\tvar i, j;\n\t\t\t\t\t\t\t\t\tif(data) {\n\t\t\t\t\t\t\t\t\t\tfor(i in data) {\n\t\t\t\t\t\t\t\t\t\t\tif(data.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._data.massload[i] = data[i];\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = nodes.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tdom = this.get_node(nodes[i], true);\n\t\t\t\t\t\t\t\t\t\tif (dom && dom.length) {\n\t\t\t\t\t\t\t\t\t\t\tdom.removeClass(\"jstree-loading\").attr('aria-busy',false);\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\tparent._load_nodes.call(this, nodes, callback, is_callback, force_reload);\n\t\t\t\t\t\t\t\t}, this))\n\t\t\t\t\t\t\t.fail($.proxy(function (f) {\n\t\t\t\t\t\t\t\t\tparent._load_nodes.call(this, nodes, callback, is_callback, force_reload);\n\t\t\t\t\t\t\t\t}, this));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn parent._load_nodes.call(this, nodes, callback, is_callback, force_reload);\n\t\t};\n\t\tthis._load_node = function (obj, callback) {\n\t\t\tvar data = this._data.massload[obj.id],\n\t\t\t\trslt = null, dom;\n\t\t\tif(data) {\n\t\t\t\trslt = this[typeof data === 'string' ? '_append_html_data' : '_append_json_data'](\n\t\t\t\t\tobj,\n\t\t\t\t\ttypeof data === 'string' ? $($.parseHTML(data)).filter(function () { return this.nodeType !== 3; }) : data,\n\t\t\t\t\tfunction (status) { callback.call(this, status); }\n\t\t\t\t);\n\t\t\t\tdom = this.get_node(obj.id, true);\n\t\t\t\tif (dom && dom.length) {\n\t\t\t\t\tdom.removeClass(\"jstree-loading\").attr('aria-busy',false);\n\t\t\t\t}\n\t\t\t\tdelete this._data.massload[obj.id];\n\t\t\t\treturn rslt;\n\t\t\t}\n\t\t\treturn parent._load_node.call(this, obj, callback);\n\t\t};\n\t};\n\n/**\n * ### Search plugin\n *\n * Adds search functionality to jsTree.\n */\n\n\t/**\n\t * stores all defaults for the search plugin\n\t * @name $.jstree.defaults.search\n\t * @plugin search\n\t */\n\t$.jstree.defaults.search = {\n\t\t/**\n\t\t * a jQuery-like AJAX config, which jstree uses if a server should be queried for results.\n\t\t *\n\t\t * A `str` (which is the search string) parameter will be added with the request, an optional `inside` parameter will be added if the search is limited to a node id. The expected result is a JSON array with nodes that need to be opened so that matching nodes will be revealed.\n\t\t * Leave this setting as `false` to not query the server. You can also set this to a function, which will be invoked in the instance's scope and receive 3 parameters - the search string, the callback to call with the array of nodes to load, and the optional node ID to limit the search to\n\t\t * @name $.jstree.defaults.search.ajax\n\t\t * @plugin search\n\t\t */\n\t\tajax : false,\n\t\t/**\n\t\t * Indicates if the search should be fuzzy or not (should `chnd3` match `child node 3`). Default is `false`.\n\t\t * @name $.jstree.defaults.search.fuzzy\n\t\t * @plugin search\n\t\t */\n\t\tfuzzy : false,\n\t\t/**\n\t\t * Indicates if the search should be case sensitive. Default is `false`.\n\t\t * @name $.jstree.defaults.search.case_sensitive\n\t\t * @plugin search\n\t\t */\n\t\tcase_sensitive : false,\n\t\t/**\n\t\t * Indicates if the tree should be filtered (by default) to show only matching nodes (keep in mind this can be a heavy on large trees in old browsers).\n\t\t * This setting can be changed at runtime when calling the search method. Default is `false`.\n\t\t * @name $.jstree.defaults.search.show_only_matches\n\t\t * @plugin search\n\t\t */\n\t\tshow_only_matches : false,\n\t\t/**\n\t\t * Indicates if the children of matched element are shown (when show_only_matches is true)\n\t\t * This setting can be changed at runtime when calling the search method. Default is `false`.\n\t\t * @name $.jstree.defaults.search.show_only_matches_children\n\t\t * @plugin search\n\t\t */\n\t\tshow_only_matches_children : false,\n\t\t/**\n\t\t * Indicates if all nodes opened to reveal the search result, should be closed when the search is cleared or a new search is performed. Default is `true`.\n\t\t * @name $.jstree.defaults.search.close_opened_onclear\n\t\t * @plugin search\n\t\t */\n\t\tclose_opened_onclear : true,\n\t\t/**\n\t\t * Indicates if only leaf nodes should be included in search results. Default is `false`.\n\t\t * @name $.jstree.defaults.search.search_leaves_only\n\t\t * @plugin search\n\t\t */\n\t\tsearch_leaves_only : false,\n\t\t/**\n\t\t * If set to a function it wil be called in the instance's scope with two arguments - search string and node (where node will be every node in the structure, so use with caution).\n\t\t * If the function returns a truthy value the node will be considered a match (it might not be displayed if search_only_leaves is set to true and the node is not a leaf). Default is `false`.\n\t\t * @name $.jstree.defaults.search.search_callback\n\t\t * @plugin search\n\t\t */\n\t\tsearch_callback : false\n\t};\n\n\t$.jstree.plugins.search = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tthis._data.search.str = \"\";\n\t\t\tthis._data.search.dom = $();\n\t\t\tthis._data.search.res = [];\n\t\t\tthis._data.search.opn = [];\n\t\t\tthis._data.search.som = false;\n\t\t\tthis._data.search.smc = false;\n\t\t\tthis._data.search.hdn = [];\n\n\t\t\tthis.element\n\t\t\t\t.on(\"search.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tif(this._data.search.som && data.res.length) {\n\t\t\t\t\t\t\tvar m = this._model.data, i, j, p = [], k, l;\n\t\t\t\t\t\t\tfor(i = 0, j = data.res.length; i < j; i++) {\n\t\t\t\t\t\t\t\tif(m[data.res[i]] && !m[data.res[i]].state.hidden) {\n\t\t\t\t\t\t\t\t\tp.push(data.res[i]);\n\t\t\t\t\t\t\t\t\tp = p.concat(m[data.res[i]].parents);\n\t\t\t\t\t\t\t\t\tif(this._data.search.smc) {\n\t\t\t\t\t\t\t\t\t\tfor (k = 0, l = m[data.res[i]].children_d.length; k < l; k++) {\n\t\t\t\t\t\t\t\t\t\t\tif (m[m[data.res[i]].children_d[k]] && !m[m[data.res[i]].children_d[k]].state.hidden) {\n\t\t\t\t\t\t\t\t\t\t\t\tp.push(m[data.res[i]].children_d[k]);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tp = $.vakata.array_remove_item($.vakata.array_unique(p), $.jstree.root);\n\t\t\t\t\t\t\tthis._data.search.hdn = this.hide_all(true);\n\t\t\t\t\t\t\tthis.show_node(p, true);\n\t\t\t\t\t\t\tthis.redraw(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"clear_search.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tif(this._data.search.som && data.res.length) {\n\t\t\t\t\t\t\tthis.show_node(this._data.search.hdn, true);\n\t\t\t\t\t\t\tthis.redraw(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this));\n\t\t};\n\t\t/**\n\t\t * used to search the tree nodes for a given string\n\t\t * @name search(str [, skip_async])\n\t\t * @param {String} str the search string\n\t\t * @param {Boolean} skip_async if set to true server will not be queried even if configured\n\t\t * @param {Boolean} show_only_matches if set to true only matching nodes will be shown (keep in mind this can be very slow on large trees or old browsers)\n\t\t * @param {mixed} inside an optional node to whose children to limit the search\n\t\t * @param {Boolean} append if set to true the results of this search are appended to the previous search\n\t\t * @plugin search\n\t\t * @trigger search.jstree\n\t\t */\n\t\tthis.search = function (str, skip_async, show_only_matches, inside, append, show_only_matches_children) {\n\t\t\tif(str === false || $.trim(str.toString()) === \"\") {\n\t\t\t\treturn this.clear_search();\n\t\t\t}\n\t\t\tinside = this.get_node(inside);\n\t\t\tinside = inside && inside.id ? inside.id : null;\n\t\t\tstr = str.toString();\n\t\t\tvar s = this.settings.search,\n\t\t\t\ta = s.ajax ? s.ajax : false,\n\t\t\t\tm = this._model.data,\n\t\t\t\tf = null,\n\t\t\t\tr = [],\n\t\t\t\tp = [], i, j;\n\t\t\tif(this._data.search.res.length && !append) {\n\t\t\t\tthis.clear_search();\n\t\t\t}\n\t\t\tif(show_only_matches === undefined) {\n\t\t\t\tshow_only_matches = s.show_only_matches;\n\t\t\t}\n\t\t\tif(show_only_matches_children === undefined) {\n\t\t\t\tshow_only_matches_children = s.show_only_matches_children;\n\t\t\t}\n\t\t\tif(!skip_async && a !== false) {\n\t\t\t\tif($.isFunction(a)) {\n\t\t\t\t\treturn a.call(this, str, $.proxy(function (d) {\n\t\t\t\t\t\t\tif(d && d.d) { d = d.d; }\n\t\t\t\t\t\t\tthis._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () {\n\t\t\t\t\t\t\t\tthis.search(str, true, show_only_matches, inside, append, show_only_matches_children);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, this), inside);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ta = $.extend({}, a);\n\t\t\t\t\tif(!a.data) { a.data = {}; }\n\t\t\t\t\ta.data.str = str;\n\t\t\t\t\tif(inside) {\n\t\t\t\t\t\ta.data.inside = inside;\n\t\t\t\t\t}\n\t\t\t\t\tif (this._data.search.lastRequest) {\n\t\t\t\t\t\tthis._data.search.lastRequest.abort();\n\t\t\t\t\t}\n\t\t\t\t\tthis._data.search.lastRequest = $.ajax(a)\n\t\t\t\t\t\t.fail($.proxy(function () {\n\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'search', 'id' : 'search_01', 'reason' : 'Could not load search parents', 'data' : JSON.stringify(a) };\n\t\t\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t\t.done($.proxy(function (d) {\n\t\t\t\t\t\t\tif(d && d.d) { d = d.d; }\n\t\t\t\t\t\t\tthis._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () {\n\t\t\t\t\t\t\t\tthis.search(str, true, show_only_matches, inside, append, show_only_matches_children);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, this));\n\t\t\t\t\treturn this._data.search.lastRequest;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!append) {\n\t\t\t\tthis._data.search.str = str;\n\t\t\t\tthis._data.search.dom = $();\n\t\t\t\tthis._data.search.res = [];\n\t\t\t\tthis._data.search.opn = [];\n\t\t\t\tthis._data.search.som = show_only_matches;\n\t\t\t\tthis._data.search.smc = show_only_matches_children;\n\t\t\t}\n\n\t\t\tf = new $.vakata.search(str, true, { caseSensitive : s.case_sensitive, fuzzy : s.fuzzy });\n\t\t\t$.each(m[inside ? inside : $.jstree.root].children_d, function (ii, i) {\n\t\t\t\tvar v = m[i];\n\t\t\t\tif(v.text && !v.state.hidden && (!s.search_leaves_only || (v.state.loaded && v.children.length === 0)) && ( (s.search_callback && s.search_callback.call(this, str, v)) || (!s.search_callback && f.search(v.text).isMatch) ) ) {\n\t\t\t\t\tr.push(i);\n\t\t\t\t\tp = p.concat(v.parents);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(r.length) {\n\t\t\t\tp = $.vakata.array_unique(p);\n\t\t\t\tfor(i = 0, j = p.length; i < j; i++) {\n\t\t\t\t\tif(p[i] !== $.jstree.root && m[p[i]] && this.open_node(p[i], null, 0) === true) {\n\t\t\t\t\t\tthis._data.search.opn.push(p[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!append) {\n\t\t\t\t\tthis._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return \"0123456789\".indexOf(v[0]) !== -1 ? '\\\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\\\$&') : v.replace($.jstree.idregex,'\\\\$&'); }).join(', #')));\n\t\t\t\t\tthis._data.search.res = r;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._data.search.dom = this._data.search.dom.add($(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return \"0123456789\".indexOf(v[0]) !== -1 ? '\\\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\\\$&') : v.replace($.jstree.idregex,'\\\\$&'); }).join(', #'))));\n\t\t\t\t\tthis._data.search.res = $.vakata.array_unique(this._data.search.res.concat(r));\n\t\t\t\t}\n\t\t\t\tthis._data.search.dom.children(\".jstree-anchor\").addClass('jstree-search');\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered after search is complete\n\t\t\t * @event\n\t\t\t * @name search.jstree\n\t\t\t * @param {jQuery} nodes a jQuery collection of matching nodes\n\t\t\t * @param {String} str the search string\n\t\t\t * @param {Array} res a collection of objects represeing the matching nodes\n\t\t\t * @plugin search\n\t\t\t */\n\t\t\tthis.trigger('search', { nodes : this._data.search.dom, str : str, res : this._data.search.res, show_only_matches : show_only_matches });\n\t\t};\n\t\t/**\n\t\t * used to clear the last search (removes classes and shows all nodes if filtering is on)\n\t\t * @name clear_search()\n\t\t * @plugin search\n\t\t * @trigger clear_search.jstree\n\t\t */\n\t\tthis.clear_search = function () {\n\t\t\tif(this.settings.search.close_opened_onclear) {\n\t\t\t\tthis.close_node(this._data.search.opn, 0);\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered after search is complete\n\t\t\t * @event\n\t\t\t * @name clear_search.jstree\n\t\t\t * @param {jQuery} nodes a jQuery collection of matching nodes (the result from the last search)\n\t\t\t * @param {String} str the search string (the last search string)\n\t\t\t * @param {Array} res a collection of objects represeing the matching nodes (the result from the last search)\n\t\t\t * @plugin search\n\t\t\t */\n\t\t\tthis.trigger('clear_search', { 'nodes' : this._data.search.dom, str : this._data.search.str, res : this._data.search.res });\n\t\t\tif(this._data.search.res.length) {\n\t\t\t\tthis._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(this._data.search.res, function (v) {\n\t\t\t\t\treturn \"0123456789\".indexOf(v[0]) !== -1 ? '\\\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\\\$&') : v.replace($.jstree.idregex,'\\\\$&');\n\t\t\t\t}).join(', #')));\n\t\t\t\tthis._data.search.dom.children(\".jstree-anchor\").removeClass(\"jstree-search\");\n\t\t\t}\n\t\t\tthis._data.search.str = \"\";\n\t\t\tthis._data.search.res = [];\n\t\t\tthis._data.search.opn = [];\n\t\t\tthis._data.search.dom = $();\n\t\t};\n\n\t\tthis.redraw_node = function(obj, deep, callback, force_render) {\n\t\t\tobj = parent.redraw_node.apply(this, arguments);\n\t\t\tif(obj) {\n\t\t\t\tif($.inArray(obj.id, this._data.search.res) !== -1) {\n\t\t\t\t\tvar i, j, tmp = null;\n\t\t\t\t\tfor(i = 0, j = obj.childNodes.length; i < j; i++) {\n\t\t\t\t\t\tif(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf(\"jstree-anchor\") !== -1) {\n\t\t\t\t\t\t\ttmp = obj.childNodes[i];\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(tmp) {\n\t\t\t\t\t\ttmp.className += ' jstree-search';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn obj;\n\t\t};\n\t};\n\n\t// helpers\n\t(function ($) {\n\t\t// from http://kiro.me/projects/fuse.html\n\t\t$.vakata.search = function(pattern, txt, options) {\n\t\t\toptions = options || {};\n\t\t\toptions = $.extend({}, $.vakata.search.defaults, options);\n\t\t\tif(options.fuzzy !== false) {\n\t\t\t\toptions.fuzzy = true;\n\t\t\t}\n\t\t\tpattern = options.caseSensitive ? pattern : pattern.toLowerCase();\n\t\t\tvar MATCH_LOCATION\t= options.location,\n\t\t\t\tMATCH_DISTANCE\t= options.distance,\n\t\t\t\tMATCH_THRESHOLD\t= options.threshold,\n\t\t\t\tpatternLen = pattern.length,\n\t\t\t\tmatchmask, pattern_alphabet, match_bitapScore, search;\n\t\t\tif(patternLen > 32) {\n\t\t\t\toptions.fuzzy = false;\n\t\t\t}\n\t\t\tif(options.fuzzy) {\n\t\t\t\tmatchmask = 1 << (patternLen - 1);\n\t\t\t\tpattern_alphabet = (function () {\n\t\t\t\t\tvar mask = {},\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\tfor (i = 0; i < patternLen; i++) {\n\t\t\t\t\t\tmask[pattern.charAt(i)] = 0;\n\t\t\t\t\t}\n\t\t\t\t\tfor (i = 0; i < patternLen; i++) {\n\t\t\t\t\t\tmask[pattern.charAt(i)] |= 1 << (patternLen - i - 1);\n\t\t\t\t\t}\n\t\t\t\t\treturn mask;\n\t\t\t\t}());\n\t\t\t\tmatch_bitapScore = function (e, x) {\n\t\t\t\t\tvar accuracy = e / patternLen,\n\t\t\t\t\t\tproximity = Math.abs(MATCH_LOCATION - x);\n\t\t\t\t\tif(!MATCH_DISTANCE) {\n\t\t\t\t\t\treturn proximity ? 1.0 : accuracy;\n\t\t\t\t\t}\n\t\t\t\t\treturn accuracy + (proximity / MATCH_DISTANCE);\n\t\t\t\t};\n\t\t\t}\n\t\t\tsearch = function (text) {\n\t\t\t\ttext = options.caseSensitive ? text : text.toLowerCase();\n\t\t\t\tif(pattern === text || text.indexOf(pattern) !== -1) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tisMatch: true,\n\t\t\t\t\t\tscore: 0\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif(!options.fuzzy) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tisMatch: false,\n\t\t\t\t\t\tscore: 1\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tvar i, j,\n\t\t\t\t\ttextLen = text.length,\n\t\t\t\t\tscoreThreshold = MATCH_THRESHOLD,\n\t\t\t\t\tbestLoc = text.indexOf(pattern, MATCH_LOCATION),\n\t\t\t\t\tbinMin, binMid,\n\t\t\t\t\tbinMax = patternLen + textLen,\n\t\t\t\t\tlastRd, start, finish, rd, charMatch,\n\t\t\t\t\tscore = 1,\n\t\t\t\t\tlocations = [];\n\t\t\t\tif (bestLoc !== -1) {\n\t\t\t\t\tscoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold);\n\t\t\t\t\tbestLoc = text.lastIndexOf(pattern, MATCH_LOCATION + patternLen);\n\t\t\t\t\tif (bestLoc !== -1) {\n\t\t\t\t\t\tscoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbestLoc = -1;\n\t\t\t\tfor (i = 0; i < patternLen; i++) {\n\t\t\t\t\tbinMin = 0;\n\t\t\t\t\tbinMid = binMax;\n\t\t\t\t\twhile (binMin < binMid) {\n\t\t\t\t\t\tif (match_bitapScore(i, MATCH_LOCATION + binMid) <= scoreThreshold) {\n\t\t\t\t\t\t\tbinMin = binMid;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbinMax = binMid;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbinMid = Math.floor((binMax - binMin) / 2 + binMin);\n\t\t\t\t\t}\n\t\t\t\t\tbinMax = binMid;\n\t\t\t\t\tstart = Math.max(1, MATCH_LOCATION - binMid + 1);\n\t\t\t\t\tfinish = Math.min(MATCH_LOCATION + binMid, textLen) + patternLen;\n\t\t\t\t\trd = new Array(finish + 2);\n\t\t\t\t\trd[finish + 1] = (1 << i) - 1;\n\t\t\t\t\tfor (j = finish; j >= start; j--) {\n\t\t\t\t\t\tcharMatch = pattern_alphabet[text.charAt(j - 1)];\n\t\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\t\trd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trd[j] = ((rd[j + 1] << 1) | 1) & charMatch | (((lastRd[j + 1] | lastRd[j]) << 1) | 1) | lastRd[j + 1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (rd[j] & matchmask) {\n\t\t\t\t\t\t\tscore = match_bitapScore(i, j - 1);\n\t\t\t\t\t\t\tif (score <= scoreThreshold) {\n\t\t\t\t\t\t\t\tscoreThreshold = score;\n\t\t\t\t\t\t\t\tbestLoc = j - 1;\n\t\t\t\t\t\t\t\tlocations.push(bestLoc);\n\t\t\t\t\t\t\t\tif (bestLoc > MATCH_LOCATION) {\n\t\t\t\t\t\t\t\t\tstart = Math.max(1, 2 * MATCH_LOCATION - bestLoc);\n\t\t\t\t\t\t\t\t} else {\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\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (match_bitapScore(i + 1, MATCH_LOCATION) > scoreThreshold) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tlastRd = rd;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tisMatch: bestLoc >= 0,\n\t\t\t\t\tscore: score\n\t\t\t\t};\n\t\t\t};\n\t\t\treturn txt === true ? { 'search' : search } : search(txt);\n\t\t};\n\t\t$.vakata.search.defaults = {\n\t\t\tlocation : 0,\n\t\t\tdistance : 100,\n\t\t\tthreshold : 0.6,\n\t\t\tfuzzy : false,\n\t\t\tcaseSensitive : false\n\t\t};\n\t}($));\n\n\t// include the search plugin by default\n\t// $.jstree.defaults.plugins.push(\"search\");\n\n\n/**\n * ### Sort plugin\n *\n * Automatically sorts all siblings in the tree according to a sorting function.\n */\n\n\t/**\n\t * the settings function used to sort the nodes.\n\t * It is executed in the tree's context, accepts two nodes as arguments and should return `1` or `-1`.\n\t * @name $.jstree.defaults.sort\n\t * @plugin sort\n\t */\n\t$.jstree.defaults.sort = function (a, b) {\n\t\t//return this.get_type(a) === this.get_type(b) ? (this.get_text(a) > this.get_text(b) ? 1 : -1) : this.get_type(a) >= this.get_type(b);\n\t\treturn this.get_text(a) > this.get_text(b) ? 1 : -1;\n\t};\n\t$.jstree.plugins.sort = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\t\t\tthis.element\n\t\t\t\t.on(\"model.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.sort(data.parent, true);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"rename_node.jstree create_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.sort(data.parent || data.node.parent, false);\n\t\t\t\t\t\tthis.redraw_node(data.parent || data.node.parent, true);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"move_node.jstree copy_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.sort(data.parent, false);\n\t\t\t\t\t\tthis.redraw_node(data.parent, true);\n\t\t\t\t\t}, this));\n\t\t};\n\t\t/**\n\t\t * used to sort a node's children\n\t\t * @private\n\t\t * @name sort(obj [, deep])\n\t\t * @param {mixed} obj the node\n\t\t * @param {Boolean} deep if set to `true` nodes are sorted recursively.\n\t\t * @plugin sort\n\t\t * @trigger search.jstree\n\t\t */\n\t\tthis.sort = function (obj, deep) {\n\t\t\tvar i, j;\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(obj && obj.children && obj.children.length) {\n\t\t\t\tobj.children.sort($.proxy(this.settings.sort, this));\n\t\t\t\tif(deep) {\n\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\tthis.sort(obj.children_d[i], false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t};\n\n\t// include the sort plugin by default\n\t// $.jstree.defaults.plugins.push(\"sort\");\n\n/**\n * ### State plugin\n *\n * Saves the state of the tree (selected nodes, opened nodes) on the user's computer using available options (localStorage, cookies, etc)\n */\n\n\tvar to = false;\n\t/**\n\t * stores all defaults for the state plugin\n\t * @name $.jstree.defaults.state\n\t * @plugin state\n\t */\n\t$.jstree.defaults.state = {\n\t\t/**\n\t\t * A string for the key to use when saving the current tree (change if using multiple trees in your project). Defaults to `jstree`.\n\t\t * @name $.jstree.defaults.state.key\n\t\t * @plugin state\n\t\t */\n\t\tkey\t\t: 'jstree',\n\t\t/**\n\t\t * A space separated list of events that trigger a state save. Defaults to `changed.jstree open_node.jstree close_node.jstree`.\n\t\t * @name $.jstree.defaults.state.events\n\t\t * @plugin state\n\t\t */\n\t\tevents\t: 'changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree',\n\t\t/**\n\t\t * Time in milliseconds after which the state will expire. Defaults to 'false' meaning - no expire.\n\t\t * @name $.jstree.defaults.state.ttl\n\t\t * @plugin state\n\t\t */\n\t\tttl\t\t: false,\n\t\t/**\n\t\t * A function that will be executed prior to restoring state with one argument - the state object. Can be used to clear unwanted parts of the state.\n\t\t * @name $.jstree.defaults.state.filter\n\t\t * @plugin state\n\t\t */\n\t\tfilter\t: false\n\t};\n\t$.jstree.plugins.state = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\t\t\tvar bind = $.proxy(function () {\n\t\t\t\tthis.element.on(this.settings.state.events, $.proxy(function () {\n\t\t\t\t\tif(to) { clearTimeout(to); }\n\t\t\t\t\tto = setTimeout($.proxy(function () { this.save_state(); }, this), 100);\n\t\t\t\t}, this));\n\t\t\t\t/**\n\t\t\t\t * triggered when the state plugin is finished restoring the state (and immediately after ready if there is no state to restore).\n\t\t\t\t * @event\n\t\t\t\t * @name state_ready.jstree\n\t\t\t\t * @plugin state\n\t\t\t\t */\n\t\t\t\tthis.trigger('state_ready');\n\t\t\t}, this);\n\t\t\tthis.element\n\t\t\t\t.on(\"ready.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.element.one(\"restore_state.jstree\", bind);\n\t\t\t\t\t\tif(!this.restore_state()) { bind(); }\n\t\t\t\t\t}, this));\n\t\t};\n\t\t/**\n\t\t * save the state\n\t\t * @name save_state()\n\t\t * @plugin state\n\t\t */\n\t\tthis.save_state = function () {\n\t\t\tvar st = { 'state' : this.get_state(), 'ttl' : this.settings.state.ttl, 'sec' : +(new Date()) };\n\t\t\t$.vakata.storage.set(this.settings.state.key, JSON.stringify(st));\n\t\t};\n\t\t/**\n\t\t * restore the state from the user's computer\n\t\t * @name restore_state()\n\t\t * @plugin state\n\t\t */\n\t\tthis.restore_state = function () {\n\t\t\tvar k = $.vakata.storage.get(this.settings.state.key);\n\t\t\tif(!!k) { try { k = JSON.parse(k); } catch(ex) { return false; } }\n\t\t\tif(!!k && k.ttl && k.sec && +(new Date()) - k.sec > k.ttl) { return false; }\n\t\t\tif(!!k && k.state) { k = k.state; }\n\t\t\tif(!!k && $.isFunction(this.settings.state.filter)) { k = this.settings.state.filter.call(this, k); }\n\t\t\tif(!!k) {\n\t\t\t\tthis.element.one(\"set_state.jstree\", function (e, data) { data.instance.trigger('restore_state', { 'state' : $.extend(true, {}, k) }); });\n\t\t\t\tthis.set_state(k);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t\t/**\n\t\t * clear the state on the user's computer\n\t\t * @name clear_state()\n\t\t * @plugin state\n\t\t */\n\t\tthis.clear_state = function () {\n\t\t\treturn $.vakata.storage.del(this.settings.state.key);\n\t\t};\n\t};\n\n\t(function ($, undefined) {\n\t\t$.vakata.storage = {\n\t\t\t// simply specifying the functions in FF throws an error\n\t\t\tset : function (key, val) { return window.localStorage.setItem(key, val); },\n\t\t\tget : function (key) { return window.localStorage.getItem(key); },\n\t\t\tdel : function (key) { return window.localStorage.removeItem(key); }\n\t\t};\n\t}($));\n\n\t// include the state plugin by default\n\t// $.jstree.defaults.plugins.push(\"state\");\n\n/**\n * ### Types plugin\n *\n * Makes it possible to add predefined types for groups of nodes, which make it possible to easily control nesting rules and icon for each group.\n */\n\n\t/**\n\t * An object storing all types as key value pairs, where the key is the type name and the value is an object that could contain following keys (all optional).\n\t *\n\t * * `max_children` the maximum number of immediate children this node type can have. Do not specify or set to `-1` for unlimited.\n\t * * `max_depth` the maximum number of nesting this node type can have. A value of `1` would mean that the node can have children, but no grandchildren. Do not specify or set to `-1` for unlimited.\n\t * * `valid_children` an array of node type strings, that nodes of this type can have as children. Do not specify or set to `-1` for no limits.\n\t * * `icon` a string - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class. Omit to use the default icon from your theme.\n\t * * `li_attr` an object of values which will be used to add HTML attributes on the resulting LI DOM node (merged with the node's own data)\n\t * * `a_attr` an object of values which will be used to add HTML attributes on the resulting A DOM node (merged with the node's own data)\n\t *\n\t * There are two predefined types:\n\t *\n\t * * `#` represents the root of the tree, for example `max_children` would control the maximum number of root nodes.\n\t * * `default` represents the default node - any settings here will be applied to all nodes that do not have a type specified.\n\t *\n\t * @name $.jstree.defaults.types\n\t * @plugin types\n\t */\n\t$.jstree.defaults.types = {\n\t\t'default' : {}\n\t};\n\t$.jstree.defaults.types[$.jstree.root] = {};\n\n\t$.jstree.plugins.types = function (options, parent) {\n\t\tthis.init = function (el, options) {\n\t\t\tvar i, j;\n\t\t\tif(options && options.types && options.types['default']) {\n\t\t\t\tfor(i in options.types) {\n\t\t\t\t\tif(i !== \"default\" && i !== $.jstree.root && options.types.hasOwnProperty(i)) {\n\t\t\t\t\t\tfor(j in options.types['default']) {\n\t\t\t\t\t\t\tif(options.types['default'].hasOwnProperty(j) && options.types[i][j] === undefined) {\n\t\t\t\t\t\t\t\toptions.types[i][j] = options.types['default'][j];\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\tparent.init.call(this, el, options);\n\t\t\tthis._model.data[$.jstree.root].type = $.jstree.root;\n\t\t};\n\t\tthis.refresh = function (skip_loading, forget_state) {\n\t\t\tparent.refresh.call(this, skip_loading, forget_state);\n\t\t\tthis._model.data[$.jstree.root].type = $.jstree.root;\n\t\t};\n\t\tthis.bind = function () {\n\t\t\tthis.element\n\t\t\t\t.on('model.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\tvar m = this._model.data,\n\t\t\t\t\t\t\tdpc = data.nodes,\n\t\t\t\t\t\t\tt = this.settings.types,\n\t\t\t\t\t\t\ti, j, c = 'default', k;\n\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\tc = 'default';\n\t\t\t\t\t\t\tif(m[dpc[i]].original && m[dpc[i]].original.type && t[m[dpc[i]].original.type]) {\n\t\t\t\t\t\t\t\tc = m[dpc[i]].original.type;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(m[dpc[i]].data && m[dpc[i]].data.jstree && m[dpc[i]].data.jstree.type && t[m[dpc[i]].data.jstree.type]) {\n\t\t\t\t\t\t\t\tc = m[dpc[i]].data.jstree.type;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tm[dpc[i]].type = c;\n\t\t\t\t\t\t\tif(m[dpc[i]].icon === true && t[c].icon !== undefined) {\n\t\t\t\t\t\t\t\tm[dpc[i]].icon = t[c].icon;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(t[c].li_attr !== undefined && typeof t[c].li_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (k in t[c].li_attr) {\n\t\t\t\t\t\t\t\t\tif (t[c].li_attr.hasOwnProperty(k)) {\n\t\t\t\t\t\t\t\t\t\tif (k === 'id') {\n\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (m[dpc[i]].li_attr[k] === undefined) {\n\t\t\t\t\t\t\t\t\t\t\tm[dpc[i]].li_attr[k] = t[c].li_attr[k];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (k === 'class') {\n\t\t\t\t\t\t\t\t\t\t\tm[dpc[i]].li_attr['class'] = t[c].li_attr['class'] + ' ' + m[dpc[i]].li_attr['class'];\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\tif(t[c].a_attr !== undefined && typeof t[c].a_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (k in t[c].a_attr) {\n\t\t\t\t\t\t\t\t\tif (t[c].a_attr.hasOwnProperty(k)) {\n\t\t\t\t\t\t\t\t\t\tif (k === 'id') {\n\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (m[dpc[i]].a_attr[k] === undefined) {\n\t\t\t\t\t\t\t\t\t\t\tm[dpc[i]].a_attr[k] = t[c].a_attr[k];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (k === 'href' && m[dpc[i]].a_attr[k] === '#') {\n\t\t\t\t\t\t\t\t\t\t\tm[dpc[i]].a_attr['href'] = t[c].a_attr['href'];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (k === 'class') {\n\t\t\t\t\t\t\t\t\t\t\tm[dpc[i]].a_attr['class'] = t[c].a_attr['class'] + ' ' + m[dpc[i]].a_attr['class'];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tm[$.jstree.root].type = $.jstree.root;\n\t\t\t\t\t}, this));\n\t\t\tparent.bind.call(this);\n\t\t};\n\t\tthis.get_json = function (obj, options, flat) {\n\t\t\tvar i, j,\n\t\t\t\tm = this._model.data,\n\t\t\t\topt = options ? $.extend(true, {}, options, {no_id:false}) : {},\n\t\t\t\ttmp = parent.get_json.call(this, obj, opt, flat);\n\t\t\tif(tmp === false) { return false; }\n\t\t\tif($.isArray(tmp)) {\n\t\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\t\ttmp[i].type = tmp[i].id && m[tmp[i].id] && m[tmp[i].id].type ? m[tmp[i].id].type : \"default\";\n\t\t\t\t\tif(options && options.no_id) {\n\t\t\t\t\t\tdelete tmp[i].id;\n\t\t\t\t\t\tif(tmp[i].li_attr && tmp[i].li_attr.id) {\n\t\t\t\t\t\t\tdelete tmp[i].li_attr.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(tmp[i].a_attr && tmp[i].a_attr.id) {\n\t\t\t\t\t\t\tdelete tmp[i].a_attr.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\telse {\n\t\t\t\ttmp.type = tmp.id && m[tmp.id] && m[tmp.id].type ? m[tmp.id].type : \"default\";\n\t\t\t\tif(options && options.no_id) {\n\t\t\t\t\ttmp = this._delete_ids(tmp);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn tmp;\n\t\t};\n\t\tthis._delete_ids = function (tmp) {\n\t\t\tif($.isArray(tmp)) {\n\t\t\t\tfor(var i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\t\ttmp[i] = this._delete_ids(tmp[i]);\n\t\t\t\t}\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\tdelete tmp.id;\n\t\t\tif(tmp.li_attr && tmp.li_attr.id) {\n\t\t\t\tdelete tmp.li_attr.id;\n\t\t\t}\n\t\t\tif(tmp.a_attr && tmp.a_attr.id) {\n\t\t\t\tdelete tmp.a_attr.id;\n\t\t\t}\n\t\t\tif(tmp.children && $.isArray(tmp.children)) {\n\t\t\t\ttmp.children = this._delete_ids(tmp.children);\n\t\t\t}\n\t\t\treturn tmp;\n\t\t};\n\t\tthis.check = function (chk, obj, par, pos, more) {\n\t\t\tif(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; }\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tpar = par && par.id ? par : this.get_node(par);\n\t\t\tvar m = obj && obj.id ? (more && more.origin ? more.origin : $.jstree.reference(obj.id)) : null, tmp, d, i, j;\n\t\t\tm = m && m._model && m._model.data ? m._model.data : null;\n\t\t\tswitch(chk) {\n\t\t\t\tcase \"create_node\":\n\t\t\t\tcase \"move_node\":\n\t\t\t\tcase \"copy_node\":\n\t\t\t\t\tif(chk !== 'move_node' || $.inArray(obj.id, par.children) === -1) {\n\t\t\t\t\t\ttmp = this.get_rules(par);\n\t\t\t\t\t\tif(tmp.max_children !== undefined && tmp.max_children !== -1 && tmp.max_children === par.children.length) {\n\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_01', 'reason' : 'max_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(tmp.valid_children !== undefined && tmp.valid_children !== -1 && $.inArray((obj.type || 'default'), tmp.valid_children) === -1) {\n\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_02', 'reason' : 'valid_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(m && obj.children_d && obj.parents) {\n\t\t\t\t\t\t\td = 0;\n\t\t\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\td = Math.max(d, m[obj.children_d[i]].parents.length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\td = d - obj.parents.length + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(d <= 0 || d === undefined) { d = 1; }\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif(tmp.max_depth !== undefined && tmp.max_depth !== -1 && tmp.max_depth < d) {\n\t\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_03', 'reason' : 'max_depth prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpar = this.get_node(par.parent);\n\t\t\t\t\t\t\ttmp = this.get_rules(par);\n\t\t\t\t\t\t\td++;\n\t\t\t\t\t\t} while(par);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\t/**\n\t\t * used to retrieve the type settings object for a node\n\t\t * @name get_rules(obj)\n\t\t * @param {mixed} obj the node to find the rules for\n\t\t * @return {Object}\n\t\t * @plugin types\n\t\t */\n\t\tthis.get_rules = function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tvar tmp = this.get_type(obj, true);\n\t\t\tif(tmp.max_depth === undefined) { tmp.max_depth = -1; }\n\t\t\tif(tmp.max_children === undefined) { tmp.max_children = -1; }\n\t\t\tif(tmp.valid_children === undefined) { tmp.valid_children = -1; }\n\t\t\treturn tmp;\n\t\t};\n\t\t/**\n\t\t * used to retrieve the type string or settings object for a node\n\t\t * @name get_type(obj [, rules])\n\t\t * @param {mixed} obj the node to find the rules for\n\t\t * @param {Boolean} rules if set to `true` instead of a string the settings object will be returned\n\t\t * @return {String|Object}\n\t\t * @plugin types\n\t\t */\n\t\tthis.get_type = function (obj, rules) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn (!obj) ? false : ( rules ? $.extend({ 'type' : obj.type }, this.settings.types[obj.type]) : obj.type);\n\t\t};\n\t\t/**\n\t\t * used to change a node's type\n\t\t * @name set_type(obj, type)\n\t\t * @param {mixed} obj the node to change\n\t\t * @param {String} type the new type\n\t\t * @plugin types\n\t\t */\n\t\tthis.set_type = function (obj, type) {\n\t\t\tvar m = this._model.data, t, t1, t2, old_type, old_icon, k, d, a;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.set_type(obj[t1], type);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tt = this.settings.types;\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!t[type] || !obj) { return false; }\n\t\t\td = this.get_node(obj, true);\n\t\t\tif (d && d.length) {\n\t\t\t\ta = d.children('.jstree-anchor');\n\t\t\t}\n\t\t\told_type = obj.type;\n\t\t\told_icon = this.get_icon(obj);\n\t\t\tobj.type = type;\n\t\t\tif(old_icon === true || !t[old_type] || (t[old_type].icon !== undefined && old_icon === t[old_type].icon)) {\n\t\t\t\tthis.set_icon(obj, t[type].icon !== undefined ? t[type].icon : true);\n\t\t\t}\n\n\t\t\t// remove old type props\n\t\t\tif(t[old_type] && t[old_type].li_attr !== undefined && typeof t[old_type].li_attr === 'object') {\n\t\t\t\tfor (k in t[old_type].li_attr) {\n\t\t\t\t\tif (t[old_type].li_attr.hasOwnProperty(k)) {\n\t\t\t\t\t\tif (k === 'id') {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (k === 'class') {\n\t\t\t\t\t\t\tm[obj.id].li_attr['class'] = (m[obj.id].li_attr['class'] || '').replace(t[old_type].li_attr[k], '');\n\t\t\t\t\t\t\tif (d) { d.removeClass(t[old_type].li_attr[k]); }\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (m[obj.id].li_attr[k] === t[old_type].li_attr[k]) {\n\t\t\t\t\t\t\tm[obj.id].li_attr[k] = null;\n\t\t\t\t\t\t\tif (d) { d.removeAttr(k); }\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\tif(t[old_type] && t[old_type].a_attr !== undefined && typeof t[old_type].a_attr === 'object') {\n\t\t\t\tfor (k in t[old_type].a_attr) {\n\t\t\t\t\tif (t[old_type].a_attr.hasOwnProperty(k)) {\n\t\t\t\t\t\tif (k === 'id') {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (k === 'class') {\n\t\t\t\t\t\t\tm[obj.id].a_attr['class'] = (m[obj.id].a_attr['class'] || '').replace(t[old_type].a_attr[k], '');\n\t\t\t\t\t\t\tif (a) { a.removeClass(t[old_type].a_attr[k]); }\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (m[obj.id].a_attr[k] === t[old_type].a_attr[k]) {\n\t\t\t\t\t\t\tif (k === 'href') {\n\t\t\t\t\t\t\t\tm[obj.id].a_attr[k] = '#';\n\t\t\t\t\t\t\t\tif (a) { a.attr('href', '#'); }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tdelete m[obj.id].a_attr[k];\n\t\t\t\t\t\t\t\tif (a) { a.removeAttr(k); }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// add new props\n\t\t\tif(t[type].li_attr !== undefined && typeof t[type].li_attr === 'object') {\n\t\t\t\tfor (k in t[type].li_attr) {\n\t\t\t\t\tif (t[type].li_attr.hasOwnProperty(k)) {\n\t\t\t\t\t\tif (k === 'id') {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (m[obj.id].li_attr[k] === undefined) {\n\t\t\t\t\t\t\tm[obj.id].li_attr[k] = t[type].li_attr[k];\n\t\t\t\t\t\t\tif (d) {\n\t\t\t\t\t\t\t\tif (k === 'class') {\n\t\t\t\t\t\t\t\t\td.addClass(t[type].li_attr[k]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\td.attr(k, t[type].li_attr[k]);\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\telse if (k === 'class') {\n\t\t\t\t\t\t\tm[obj.id].li_attr['class'] = t[type].li_attr[k] + ' ' + m[obj.id].li_attr['class'];\n\t\t\t\t\t\t\tif (d) { d.addClass(t[type].li_attr[k]); }\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\tif(t[type].a_attr !== undefined && typeof t[type].a_attr === 'object') {\n\t\t\t\tfor (k in t[type].a_attr) {\n\t\t\t\t\tif (t[type].a_attr.hasOwnProperty(k)) {\n\t\t\t\t\t\tif (k === 'id') {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (m[obj.id].a_attr[k] === undefined) {\n\t\t\t\t\t\t\tm[obj.id].a_attr[k] = t[type].a_attr[k];\n\t\t\t\t\t\t\tif (a) {\n\t\t\t\t\t\t\t\tif (k === 'class') {\n\t\t\t\t\t\t\t\t\ta.addClass(t[type].a_attr[k]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\ta.attr(k, t[type].a_attr[k]);\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\telse if (k === 'href' && m[obj.id].a_attr[k] === '#') {\n\t\t\t\t\t\t\tm[obj.id].a_attr['href'] = t[type].a_attr['href'];\n\t\t\t\t\t\t\tif (a) { a.attr('href', t[type].a_attr['href']); }\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (k === 'class') {\n\t\t\t\t\t\t\tm[obj.id].a_attr['class'] = t[type].a_attr['class'] + ' ' + m[obj.id].a_attr['class'];\n\t\t\t\t\t\t\tif (a) { a.addClass(t[type].a_attr[k]); }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t};\n\t};\n\t// include the types plugin by default\n\t// $.jstree.defaults.plugins.push(\"types\");\n\n\n/**\n * ### Unique plugin\n *\n * Enforces that no nodes with the same name can coexist as siblings.\n */\n\n\t/**\n\t * stores all defaults for the unique plugin\n\t * @name $.jstree.defaults.unique\n\t * @plugin unique\n\t */\n\t$.jstree.defaults.unique = {\n\t\t/**\n\t\t * Indicates if the comparison should be case sensitive. Default is `false`.\n\t\t * @name $.jstree.defaults.unique.case_sensitive\n\t\t * @plugin unique\n\t\t */\n\t\tcase_sensitive : false,\n\t\t/**\n\t\t * A callback executed in the instance's scope when a new node is created and the name is already taken, the two arguments are the conflicting name and the counter. The default will produce results like `New node (2)`.\n\t\t * @name $.jstree.defaults.unique.duplicate\n\t\t * @plugin unique\n\t\t */\n\t\tduplicate : function (name, counter) {\n\t\t\treturn name + ' (' + counter + ')';\n\t\t}\n\t};\n\n\t$.jstree.plugins.unique = function (options, parent) {\n\t\tthis.check = function (chk, obj, par, pos, more) {\n\t\t\tif(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; }\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tpar = par && par.id ? par : this.get_node(par);\n\t\t\tif(!par || !par.children) { return true; }\n\t\t\tvar n = chk === \"rename_node\" ? pos : obj.text,\n\t\t\t\tc = [],\n\t\t\t\ts = this.settings.unique.case_sensitive,\n\t\t\t\tm = this._model.data, i, j;\n\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\tc.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase());\n\t\t\t}\n\t\t\tif(!s) { n = n.toLowerCase(); }\n\t\t\tswitch(chk) {\n\t\t\t\tcase \"delete_node\":\n\t\t\t\t\treturn true;\n\t\t\t\tcase \"rename_node\":\n\t\t\t\t\ti = ($.inArray(n, c) === -1 || (obj.text && obj.text[ s ? 'toString' : 'toLowerCase']() === n));\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_01', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t\tcase \"create_node\":\n\t\t\t\t\ti = ($.inArray(n, c) === -1);\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_04', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t\tcase \"copy_node\":\n\t\t\t\t\ti = ($.inArray(n, c) === -1);\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_02', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t\tcase \"move_node\":\n\t\t\t\t\ti = ( (obj.parent === par.id && (!more || !more.is_multi)) || $.inArray(n, c) === -1);\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_03', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\tthis.create_node = function (par, node, pos, callback, is_loaded) {\n\t\t\tif(!node || node.text === undefined) {\n\t\t\t\tif(par === null) {\n\t\t\t\t\tpar = $.jstree.root;\n\t\t\t\t}\n\t\t\t\tpar = this.get_node(par);\n\t\t\t\tif(!par) {\n\t\t\t\t\treturn parent.create_node.call(this, par, node, pos, callback, is_loaded);\n\t\t\t\t}\n\t\t\t\tpos = pos === undefined ? \"last\" : pos;\n\t\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\t\treturn parent.create_node.call(this, par, node, pos, callback, is_loaded);\n\t\t\t\t}\n\t\t\t\tif(!node) { node = {}; }\n\t\t\t\tvar tmp, n, dpc, i, j, m = this._model.data, s = this.settings.unique.case_sensitive, cb = this.settings.unique.duplicate;\n\t\t\t\tn = tmp = this.get_string('New node');\n\t\t\t\tdpc = [];\n\t\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\t\tdpc.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase());\n\t\t\t\t}\n\t\t\t\ti = 1;\n\t\t\t\twhile($.inArray(s ? n : n.toLowerCase(), dpc) !== -1) {\n\t\t\t\t\tn = cb.call(this, tmp, (++i)).toString();\n\t\t\t\t}\n\t\t\t\tnode.text = n;\n\t\t\t}\n\t\t\treturn parent.create_node.call(this, par, node, pos, callback, is_loaded);\n\t\t};\n\t};\n\n\t// include the unique plugin by default\n\t// $.jstree.defaults.plugins.push(\"unique\");\n\n\n/**\n * ### Wholerow plugin\n *\n * Makes each node appear block level. Making selection easier. May cause slow down for large trees in old browsers.\n */\n\n\tvar div = document.createElement('DIV');\n\tdiv.setAttribute('unselectable','on');\n\tdiv.setAttribute('role','presentation');\n\tdiv.className = 'jstree-wholerow';\n\tdiv.innerHTML = ' ';\n\t$.jstree.plugins.wholerow = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tthis.element\n\t\t\t\t.on('ready.jstree set_state.jstree', $.proxy(function () {\n\t\t\t\t\t\tthis.hide_dots();\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"init.jstree loading.jstree ready.jstree\", $.proxy(function () {\n\t\t\t\t\t\t//div.style.height = this._data.core.li_height + 'px';\n\t\t\t\t\t\tthis.get_container_ul().addClass('jstree-wholerow-ul');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"deselect_all.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"changed.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked');\n\t\t\t\t\t\tvar tmp = false, i, j;\n\t\t\t\t\t\tfor(i = 0, j = data.selected.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp = this.get_node(data.selected[i], true);\n\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\ttmp.children('.jstree-wholerow').addClass('jstree-wholerow-clicked');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"open_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.get_node(data.node, true).find('.jstree-clicked').parent().children('.jstree-wholerow').addClass('jstree-wholerow-clicked');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"hover_node.jstree dehover_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tif(e.type === \"hover_node\" && this.is_disabled(data.node)) { return; }\n\t\t\t\t\t\tthis.get_node(data.node, true).children('.jstree-wholerow')[e.type === \"hover_node\"?\"addClass\":\"removeClass\"]('jstree-wholerow-hovered');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"contextmenu.jstree\", \".jstree-wholerow\", $.proxy(function (e) {\n\t\t\t\t\t\tif (this._data.contextmenu) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tvar tmp = $.Event('contextmenu', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey, pageX : e.pageX, pageY : e.pageY });\n\t\t\t\t\t\t\t$(e.currentTarget).closest(\".jstree-node\").children(\".jstree-anchor\").first().trigger(tmp);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t/*!\n\t\t\t\t.on(\"mousedown.jstree touchstart.jstree\", \".jstree-wholerow\", function (e) {\n\t\t\t\t\t\tif(e.target === e.currentTarget) {\n\t\t\t\t\t\t\tvar a = $(e.currentTarget).closest(\".jstree-node\").children(\".jstree-anchor\");\n\t\t\t\t\t\t\te.target = a[0];\n\t\t\t\t\t\t\ta.trigger(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t*/\n\t\t\t\t.on(\"click.jstree\", \".jstree-wholerow\", function (e) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tvar tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });\n\t\t\t\t\t\t$(e.currentTarget).closest(\".jstree-node\").children(\".jstree-anchor\").first().trigger(tmp).focus();\n\t\t\t\t\t})\n\t\t\t\t.on(\"dblclick.jstree\", \".jstree-wholerow\", function (e) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tvar tmp = $.Event('dblclick', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });\n\t\t\t\t\t\t$(e.currentTarget).closest(\".jstree-node\").children(\".jstree-anchor\").first().trigger(tmp).focus();\n\t\t\t\t\t})\n\t\t\t\t.on(\"click.jstree\", \".jstree-leaf > .jstree-ocl\", $.proxy(function (e) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tvar tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });\n\t\t\t\t\t\t$(e.currentTarget).closest(\".jstree-node\").children(\".jstree-anchor\").first().trigger(tmp).focus();\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"mouseover.jstree\", \".jstree-wholerow, .jstree-icon\", $.proxy(function (e) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tif(!this.is_disabled(e.currentTarget)) {\n\t\t\t\t\t\t\tthis.hover_node(e.currentTarget);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"mouseleave.jstree\", \".jstree-node\", $.proxy(function (e) {\n\t\t\t\t\t\tthis.dehover_node(e.currentTarget);\n\t\t\t\t\t}, this));\n\t\t};\n\t\tthis.teardown = function () {\n\t\t\tif(this.settings.wholerow) {\n\t\t\t\tthis.element.find(\".jstree-wholerow\").remove();\n\t\t\t}\n\t\t\tparent.teardown.call(this);\n\t\t};\n\t\tthis.redraw_node = function(obj, deep, callback, force_render) {\n\t\t\tobj = parent.redraw_node.apply(this, arguments);\n\t\t\tif(obj) {\n\t\t\t\tvar tmp = div.cloneNode(true);\n\t\t\t\t//tmp.style.height = this._data.core.li_height + 'px';\n\t\t\t\tif($.inArray(obj.id, this._data.core.selected) !== -1) { tmp.className += ' jstree-wholerow-clicked'; }\n\t\t\t\tif(this._data.core.focused && this._data.core.focused === obj.id) { tmp.className += ' jstree-wholerow-hovered'; }\n\t\t\t\tobj.insertBefore(tmp, obj.childNodes[0]);\n\t\t\t}\n\t\t\treturn obj;\n\t\t};\n\t};\n\t// include the wholerow plugin by default\n\t// $.jstree.defaults.plugins.push(\"wholerow\");\n\tif(document.registerElement && Object && Object.create) {\n\t\tvar proto = Object.create(HTMLElement.prototype);\n\t\tproto.createdCallback = function () {\n\t\t\tvar c = { core : {}, plugins : [] }, i;\n\t\t\tfor(i in $.jstree.plugins) {\n\t\t\t\tif($.jstree.plugins.hasOwnProperty(i) && this.attributes[i]) {\n\t\t\t\t\tc.plugins.push(i);\n\t\t\t\t\tif(this.getAttribute(i) && JSON.parse(this.getAttribute(i))) {\n\t\t\t\t\t\tc[i] = JSON.parse(this.getAttribute(i));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(i in $.jstree.defaults.core) {\n\t\t\t\tif($.jstree.defaults.core.hasOwnProperty(i) && this.attributes[i]) {\n\t\t\t\t\tc.core[i] = JSON.parse(this.getAttribute(i)) || this.getAttribute(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\t$(this).jstree(c);\n\t\t};\n\t\t// proto.attributeChangedCallback = function (name, previous, value) { };\n\t\ttry {\n\t\t\tdocument.registerElement(\"vakata-jstree\", { prototype: proto });\n\t\t} catch(ignore) { }\n\t}\n\n}));","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2017 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.0\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o 0) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n continue;\n }\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n};\n\nAsync.prototype._drainQueues = function () {\n this._drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n this._drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n async.invokeLater(this._notifyUnhandledRejection, this, undefined);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new CustomEvent(name.toLowerCase(), {\n detail: event,\n cancelable: true\n });\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.0\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var l = 8;\n while (l--) new FakeConstructor();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\";\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a