UNPKG

1.69 MBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///packages/perspective-viewer/webpack/universalModuleDefinition","webpack:///packages/node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js","webpack:///packages/node_modules/awesomplete/awesomplete.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/version.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/scan/reg_exp_parser.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/scan/reg_exp.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/scan/lexer.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/scan/tokens.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/scan/lexer_errors_public.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/scan/lexer_public.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/scan/tokens_public.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_public.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/rest.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_visitor_public.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/first.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/constants.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/follow.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/keys.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/cst/cst.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/interpreter.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/lookahead.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/checks.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/errors_public.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/resolver.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_resolver_public.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/exceptions_public.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recoverable.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/parser/traits/looksahead.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/cst/cst_visitor.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/lang/lang_extensions.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/parser/traits/tree_builder.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/parser/traits/lexer_adapter.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recognizer_api.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recognizer_engine.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/parser/traits/error_handler.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/parser/traits/context_assist.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/parser/traits/gast_recorder.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/parser/traits/perf_tracer.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/parse/parser/parser.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/diagrams/render_public.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/generate/generate.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/generate/generate_public.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/api.js","webpack:///packages/node_modules/chevrotain/lib_esm/src/utils/utils.js","webpack:///packages/node_modules/core-js/internals/a-function.js","webpack:///packages/node_modules/core-js/internals/a-possible-prototype.js","webpack:///packages/node_modules/core-js/internals/add-to-unscopables.js","webpack:///packages/node_modules/core-js/internals/advance-string-index.js","webpack:///packages/node_modules/core-js/internals/an-instance.js","webpack:///packages/node_modules/core-js/internals/an-object.js","webpack:///packages/node_modules/core-js/internals/array-buffer-native.js","webpack:///packages/node_modules/core-js/internals/array-buffer-view-core.js","webpack:///packages/node_modules/core-js/internals/array-buffer.js","webpack:///packages/node_modules/core-js/internals/array-fill.js","webpack:///packages/node_modules/core-js/internals/array-from.js","webpack:///packages/node_modules/core-js/internals/array-includes.js","webpack:///packages/node_modules/core-js/internals/array-iteration.js","webpack:///packages/node_modules/core-js/internals/array-method-is-strict.js","webpack:///packages/node_modules/core-js/internals/array-method-uses-to-length.js","webpack:///packages/node_modules/core-js/internals/array-reduce.js","webpack:///packages/node_modules/core-js/internals/array-species-create.js","webpack:///packages/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///packages/node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///packages/node_modules/core-js/internals/classof-raw.js","webpack:///packages/node_modules/core-js/internals/classof.js","webpack:///packages/node_modules/core-js/internals/copy-constructor-properties.js","webpack:///packages/node_modules/core-js/internals/correct-prototype-getter.js","webpack:///packages/node_modules/core-js/internals/create-iterator-constructor.js","webpack:///packages/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///packages/node_modules/core-js/internals/create-property-descriptor.js","webpack:///packages/node_modules/core-js/internals/create-property.js","webpack:///packages/node_modules/core-js/internals/define-iterator.js","webpack:///packages/node_modules/core-js/internals/descriptors.js","webpack:///packages/node_modules/core-js/internals/document-create-element.js","webpack:///packages/node_modules/core-js/internals/dom-iterables.js","webpack:///packages/node_modules/core-js/internals/engine-is-node.js","webpack:///packages/node_modules/core-js/internals/engine-user-agent.js","webpack:///packages/node_modules/core-js/internals/engine-v8-version.js","webpack:///packages/node_modules/core-js/internals/enum-bug-keys.js","webpack:///packages/node_modules/core-js/internals/export.js","webpack:///packages/node_modules/core-js/internals/fails.js","webpack:///packages/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///packages/node_modules/core-js/internals/function-bind-context.js","webpack:///packages/node_modules/core-js/internals/get-built-in.js","webpack:///packages/node_modules/core-js/internals/get-iterator-method.js","webpack:///packages/node_modules/core-js/internals/get-iterator.js","webpack:///packages/node_modules/core-js/internals/get-substitution.js","webpack:///packages/node_modules/core-js/internals/global.js","webpack:///packages/node_modules/core-js/internals/has.js","webpack:///packages/node_modules/core-js/internals/hidden-keys.js","webpack:///packages/node_modules/core-js/internals/html.js","webpack:///packages/node_modules/core-js/internals/ie8-dom-define.js","webpack:///packages/node_modules/core-js/internals/ieee754.js","webpack:///packages/node_modules/core-js/internals/indexed-object.js","webpack:///packages/node_modules/core-js/internals/inherit-if-required.js","webpack:///packages/node_modules/core-js/internals/inspect-source.js","webpack:///packages/node_modules/core-js/internals/internal-state.js","webpack:///packages/node_modules/core-js/internals/is-array-iterator-method.js","webpack:///packages/node_modules/core-js/internals/is-array.js","webpack:///packages/node_modules/core-js/internals/is-forced.js","webpack:///packages/node_modules/core-js/internals/is-object.js","webpack:///packages/node_modules/core-js/internals/is-pure.js","webpack:///packages/node_modules/core-js/internals/iterator-close.js","webpack:///packages/node_modules/core-js/internals/iterators-core.js","webpack:///packages/node_modules/core-js/internals/iterators.js","webpack:///packages/node_modules/core-js/internals/native-promise-constructor.js","webpack:///packages/node_modules/core-js/internals/native-symbol.js","webpack:///packages/node_modules/core-js/internals/native-url.js","webpack:///packages/node_modules/core-js/internals/native-weak-map.js","webpack:///packages/node_modules/core-js/internals/new-promise-capability.js","webpack:///packages/node_modules/core-js/internals/object-assign.js","webpack:///packages/node_modules/core-js/internals/object-create.js","webpack:///packages/node_modules/core-js/internals/object-define-properties.js","webpack:///packages/node_modules/core-js/internals/object-define-property.js","webpack:///packages/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///packages/node_modules/core-js/internals/object-get-own-property-names.js","webpack:///packages/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///packages/node_modules/core-js/internals/object-get-prototype-of.js","webpack:///packages/node_modules/core-js/internals/object-keys-internal.js","webpack:///packages/node_modules/core-js/internals/object-keys.js","webpack:///packages/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///packages/node_modules/core-js/internals/object-set-prototype-of.js","webpack:///packages/node_modules/core-js/internals/own-keys.js","webpack:///packages/node_modules/core-js/internals/path.js","webpack:///packages/node_modules/core-js/internals/promise-resolve.js","webpack:///packages/node_modules/core-js/internals/redefine-all.js","webpack:///packages/node_modules/core-js/internals/redefine.js","webpack:///packages/node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///packages/node_modules/core-js/internals/regexp-exec.js","webpack:///packages/node_modules/core-js/internals/regexp-flags.js","webpack:///packages/node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///packages/node_modules/core-js/internals/require-object-coercible.js","webpack:///packages/node_modules/core-js/internals/set-global.js","webpack:///packages/node_modules/core-js/internals/set-species.js","webpack:///packages/node_modules/core-js/internals/set-to-string-tag.js","webpack:///packages/node_modules/core-js/internals/shared-key.js","webpack:///packages/node_modules/core-js/internals/shared-store.js","webpack:///packages/node_modules/core-js/internals/shared.js","webpack:///packages/node_modules/core-js/internals/species-constructor.js","webpack:///packages/node_modules/core-js/internals/string-multibyte.js","webpack:///packages/node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:///packages/node_modules/core-js/internals/to-absolute-index.js","webpack:///packages/node_modules/core-js/internals/to-index.js","webpack:///packages/node_modules/core-js/internals/to-indexed-object.js","webpack:///packages/node_modules/core-js/internals/to-integer.js","webpack:///packages/node_modules/core-js/internals/to-length.js","webpack:///packages/node_modules/core-js/internals/to-object.js","webpack:///packages/node_modules/core-js/internals/to-offset.js","webpack:///packages/node_modules/core-js/internals/to-positive-integer.js","webpack:///packages/node_modules/core-js/internals/to-primitive.js","webpack:///packages/node_modules/core-js/internals/to-string-tag-support.js","webpack:///packages/node_modules/core-js/internals/typed-array-constructor.js","webpack:///packages/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack:///packages/node_modules/core-js/internals/typed-array-from.js","webpack:///packages/node_modules/core-js/internals/uid.js","webpack:///packages/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///packages/node_modules/core-js/internals/well-known-symbol.js","webpack:///packages/node_modules/core-js/modules/es.array.iterator.js","webpack:///packages/node_modules/core-js/modules/es.array.reduce.js","webpack:///packages/node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack:///packages/node_modules/core-js/modules/es.promise.finally.js","webpack:///packages/node_modules/core-js/modules/es.regexp.exec.js","webpack:///packages/node_modules/core-js/modules/es.string.iterator.js","webpack:///packages/node_modules/core-js/modules/es.string.replace.js","webpack:///packages/node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack:///packages/node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///packages/node_modules/core-js/modules/web.url-search-params.js","webpack:///packages/node_modules/core-js/modules/web.url.js","webpack:///packages/node_modules/lodash/_DataView.js","webpack:///packages/node_modules/lodash/_Hash.js","webpack:///packages/node_modules/lodash/_ListCache.js","webpack:///packages/node_modules/lodash/_Map.js","webpack:///packages/node_modules/lodash/_MapCache.js","webpack:///packages/node_modules/lodash/_Promise.js","webpack:///packages/node_modules/lodash/_Set.js","webpack:///packages/node_modules/lodash/_SetCache.js","webpack:///packages/node_modules/lodash/_Stack.js","webpack:///packages/node_modules/lodash/_Symbol.js","webpack:///packages/node_modules/lodash/_Uint8Array.js","webpack:///packages/node_modules/lodash/_WeakMap.js","webpack:///packages/node_modules/lodash/_arrayFilter.js","webpack:///packages/node_modules/lodash/_arrayLikeKeys.js","webpack:///packages/node_modules/lodash/_arrayPush.js","webpack:///packages/node_modules/lodash/_arraySome.js","webpack:///packages/node_modules/lodash/_assocIndexOf.js","webpack:///packages/node_modules/lodash/_baseGetAllKeys.js","webpack:///packages/node_modules/lodash/_baseGetTag.js","webpack:///packages/node_modules/lodash/_baseIsArguments.js","webpack:///packages/node_modules/lodash/_baseIsEqual.js","webpack:///packages/node_modules/lodash/_baseIsEqualDeep.js","webpack:///packages/node_modules/lodash/_baseIsNative.js","webpack:///packages/node_modules/lodash/_baseIsTypedArray.js","webpack:///packages/node_modules/lodash/_baseKeys.js","webpack:///packages/node_modules/lodash/_baseTimes.js","webpack:///packages/node_modules/lodash/_baseUnary.js","webpack:///packages/node_modules/lodash/_cacheHas.js","webpack:///packages/node_modules/lodash/_coreJsData.js","webpack:///packages/node_modules/lodash/_equalArrays.js","webpack:///packages/node_modules/lodash/_equalByTag.js","webpack:///packages/node_modules/lodash/_equalObjects.js","webpack:///packages/node_modules/lodash/_freeGlobal.js","webpack:///packages/node_modules/lodash/_getAllKeys.js","webpack:///packages/node_modules/lodash/_getMapData.js","webpack:///packages/node_modules/lodash/_getNative.js","webpack:///packages/node_modules/lodash/_getRawTag.js","webpack:///packages/node_modules/lodash/_getSymbols.js","webpack:///packages/node_modules/lodash/_getTag.js","webpack:///packages/node_modules/lodash/_getValue.js","webpack:///packages/node_modules/lodash/_hashClear.js","webpack:///packages/node_modules/lodash/_hashDelete.js","webpack:///packages/node_modules/lodash/_hashGet.js","webpack:///packages/node_modules/lodash/_hashHas.js","webpack:///packages/node_modules/lodash/_hashSet.js","webpack:///packages/node_modules/lodash/_isIndex.js","webpack:///packages/node_modules/lodash/_isKeyable.js","webpack:///packages/node_modules/lodash/_isMasked.js","webpack:///packages/node_modules/lodash/_isPrototype.js","webpack:///packages/node_modules/lodash/_listCacheClear.js","webpack:///packages/node_modules/lodash/_listCacheDelete.js","webpack:///packages/node_modules/lodash/_listCacheGet.js","webpack:///packages/node_modules/lodash/_listCacheHas.js","webpack:///packages/node_modules/lodash/_listCacheSet.js","webpack:///packages/node_modules/lodash/_mapCacheClear.js","webpack:///packages/node_modules/lodash/_mapCacheDelete.js","webpack:///packages/node_modules/lodash/_mapCacheGet.js","webpack:///packages/node_modules/lodash/_mapCacheHas.js","webpack:///packages/node_modules/lodash/_mapCacheSet.js","webpack:///packages/node_modules/lodash/_mapToArray.js","webpack:///packages/node_modules/lodash/_nativeCreate.js","webpack:///packages/node_modules/lodash/_nativeKeys.js","webpack:///packages/node_modules/lodash/_nodeUtil.js","webpack:///packages/node_modules/lodash/_objectToString.js","webpack:///packages/node_modules/lodash/_overArg.js","webpack:///packages/node_modules/lodash/_root.js","webpack:///packages/node_modules/lodash/_setCacheAdd.js","webpack:///packages/node_modules/lodash/_setCacheHas.js","webpack:///packages/node_modules/lodash/_setToArray.js","webpack:///packages/node_modules/lodash/_stackClear.js","webpack:///packages/node_modules/lodash/_stackDelete.js","webpack:///packages/node_modules/lodash/_stackGet.js","webpack:///packages/node_modules/lodash/_stackHas.js","webpack:///packages/node_modules/lodash/_stackSet.js","webpack:///packages/node_modules/lodash/_toSource.js","webpack:///packages/node_modules/lodash/debounce.js","webpack:///packages/node_modules/lodash/eq.js","webpack:///packages/node_modules/lodash/isArguments.js","webpack:///packages/node_modules/lodash/isArray.js","webpack:///packages/node_modules/lodash/isArrayLike.js","webpack:///packages/node_modules/lodash/isBuffer.js","webpack:///packages/node_modules/lodash/isEqual.js","webpack:///packages/node_modules/lodash/isFunction.js","webpack:///packages/node_modules/lodash/isLength.js","webpack:///packages/node_modules/lodash/isObject.js","webpack:///packages/node_modules/lodash/isObjectLike.js","webpack:///packages/node_modules/lodash/isSymbol.js","webpack:///packages/node_modules/lodash/isTypedArray.js","webpack:///packages/node_modules/lodash/keys.js","webpack:///packages/node_modules/lodash/now.js","webpack:///packages/node_modules/lodash/stubArray.js","webpack:///packages/node_modules/lodash/stubFalse.js","webpack:///packages/node_modules/lodash/toNumber.js","webpack:///packages/node_modules/regexp-to-ast/lib/regexp-to-ast.js","webpack:///packages/node_modules/lit-html/lib/directive.js","webpack:///packages/node_modules/lit-html/lib/dom.js","webpack:///packages/node_modules/lit-html/lib/part.js","webpack:///packages/node_modules/lit-html/lib/template.js","webpack:///packages/node_modules/lit-html/lib/template-instance.js","webpack:///packages/node_modules/lit-html/lib/template-result.js","webpack:///packages/node_modules/lit-html/lib/parts.js","webpack:///packages/node_modules/lit-html/lib/default-template-processor.js","webpack:///packages/node_modules/lit-html/lib/template-factory.js","webpack:///packages/node_modules/lit-html/lib/render.js","webpack:///packages/node_modules/lit-html/lit-html.js","webpack:///packages/src/js/config/constants.js","webpack:///packages/src/js/polyfill.js","webpack:///packages/src/js/utils.js","webpack:///packages/src/js/viewer/renderers.js","webpack:///packages/src/js/row.js","webpack:///packages/src/js/autocomplete_widget.js","webpack:///packages/src/js/expression_editor.js","webpack:///packages/src/js/computed_expressions/error.js","webpack:///packages/src/js/computed_expressions/lexer.js","webpack:///packages/src/js/computed_expressions/parser.js","webpack:///packages/src/js/computed_expressions/formatter.js","webpack:///packages/src/js/computed_expressions/computed_expression_parser.js","webpack:///packages/src/js/viewer/dragdrop.js","webpack:///packages/src/js/computed_expressions/widget.js","webpack:///packages/src/js/viewer/cancel_task.js","webpack:///packages/src/js/viewer/state_element.js","webpack:///packages/src/js/viewer/perspective_element.js","webpack:///packages/src/js/viewer/dom_element.js","webpack:///packages/src/js/viewer/action_element.js","webpack:///packages/src/js/viewer.js","webpack:///packages/src/js/config/index.js","webpack:///packages/src/js/config/settings.js","webpack:///packages/perspective-viewer/webpack/bootstrap","webpack:///packages/perspective-viewer/webpack/startup","webpack:///packages/perspective-viewer/webpack/runtime/compat get default export","webpack:///packages/perspective-viewer/webpack/runtime/define property getters","webpack:///packages/perspective-viewer/webpack/runtime/global","webpack:///packages/perspective-viewer/webpack/runtime/hasOwnProperty shorthand","webpack:///packages/perspective-viewer/webpack/runtime/make namespace object","webpack:///packages/perspective-viewer/webpack/runtime/node module decorator"],"names":["root","factory","exports","module","define","amd","a","i","self","r","aa","Object","defineProperties","defineProperty","b","c","Array","prototype","value","ba","window","this","g","ca","Symbol","ea","ka","fa","iterator","configurable","writable","ha","next","ia","length","done","ja","call","setPrototypeOf","la","na","__proto__","Pa","TypeError","oa","pa","f","G","qa","ra","Ra","Va","sa","ta","wa","d","e","xa","return","ya","m","throw","ua","za","document","createEvent","initEvent","preventDefault","defaultPrevented","Event","cancelable","get","test","navigator","userAgent","CustomEvent","initCustomEvent","bubbles","detail","MouseEvent","initMouseEvent","view","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","from","slice","assign","arguments","n","p","getOwnPropertyNames","H","WebComponents","childNodes","nodeType","Node","DOCUMENT_NODE","va","DOCUMENT_FRAGMENT_NODE","lf","A","HTMLTemplateElement","createDocumentFragment","cloneNode","DocumentFragment","firstChild","querySelectorAll","HTMLElement","querySelector","localName","nodeName","insertBefore","appendChild","removeChild","replaceChild","Document","createElement","h","importNode","k","DOMParser","parseFromString","getOwnPropertyDescriptor","B","Element","mf","content","da","implementation","createHTMLDocument","Gc","q","textContent","Hc","head","firstElementChild","create","nf","hasOwnProperty","R","namespaceURI","documentElement","l","D","xh","sb","option","thead","col","tr","th","td","tb","set","exec","toLowerCase","body","innerHTML","lastChild","parentNode","Error","ownerDocument","addEventListener","apply","enumerable","of","pf","Ic","qf","split","rf","ELEMENT_NODE","attributes","name","replace","TEXT_NODE","data","COMMENT_NODE","console","error","ub","sf","tf","setAttribute","Ba","setTimeout","Ca","t","J","U","Ea","Fa","push","Xa","Ya","Ga","Ha","then","Ia","Da","Ja","constructor","resolve","reject","setImmediate","warn","Promise","all","race","Ka","createTextNode","La","MutationObserver","splice","observe","characterData","Ma","Na","Oa","u","eb","Qa","y","Ta","v","String","Sa","keyFor","toStringTag","substr","vb","wb","match","search","yb","zb","unscopables","toString","valueOf","Ua","Set","forEach","Map","flags","Wa","w","noOpts","location","Za","log","$a","ab","shadydom","ShadyDOM","force","bb","register","ce","cb","Aa","N","$","ma","assignedSlot","assignedNodes","S","nextSibling","previousSibling","V","Z","x","customElements","forcePolyfill","toJSON","z","attachShadow","getRootNode","db","K","fb","gb","C","hb","ib","jb","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","kb","lb","nb","ob","pb","qb","shift","rb","contains","getAttribute","isNaN","item","namedItem","xb","Ab","Bb","addedNodes","removedNodes","list","flush","takeRecords","Gb","Hb","Ib","Jb","Kb","removeAttribute","Lb","Mb","Nb","Ob","removeEventListener","Pb","Window","Qb","Rb","dispatchEvent","Sb","Tb","getElementById","Ub","Vb","Wb","Xb","Yb","Zb","E","$b","ac","bc","cc","dc","ec","fc","F","createTreeWalker","NodeFilter","SHOW_ALL","SHOW_ELEMENT","gc","currentNode","I","parentElement","lastElementChild","previousElementSibling","nextElementSibling","children","SHOW_TEXT","nextNode","nodeValue","hc","ic","jc","kc","lc","mb","L","mc","nc","oc","pc","qc","rc","sc","tc","className","uc","childElementCount","join","filter","createElementNS","vc","shadowRoot","wc","activeElement","host","M","xc","Ac","Bc","Cc","Dc","Ec","Fc","Jc","Kc","__noInsertionPoint","o","Lc","Mc","Nc","adoptNode","Oc","Pc","Qc","indexOf","Rc","Sc","Tc","Uc","Vc","Cb","Wc","Xc","Yc","Zc","$c","ShadyCSS","ScopingShim","setElementClass","ad","bd","Date","now","cd","dd","blur","focus","focusin","focusout","click","dblclick","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","wheel","beforeinput","input","keydown","keyup","compositionstart","compositionupdate","compositionend","touchstart","touchend","touchmove","touchcancel","pointerover","pointerenter","pointerdown","pointermove","pointerup","pointercancel","pointerout","pointerleave","gotpointercapture","lostpointercapture","dragstart","drag","dragenter","dragleave","dragover","drop","dragend","DOMActivate","DOMFocusIn","DOMFocusOut","keypress","ed","DOMAttrModified","DOMAttributeNameChanged","DOMCharacterDataModified","DOMElementNameChanged","DOMNodeInserted","DOMNodeInsertedIntoDocument","DOMNodeRemoved","DOMNodeRemovedFromDocument","DOMSubtreeModified","fd","gd","hd","Y","isTrusted","type","composedPath","__target","composed","currentTarget","__previousCurrentTarget","stopPropagation","stopImmediatePropagation","id","jd","kd","target","ld","__handlers","md","AT_TARGET","nd","capture","once","passive","node","od","handleEvent","pd","eventPhase","BUBBLING_PHASE","CAPTURING_PHASE","bubble","qd","getPrototypeOf","__patchProto","sd","ud","wd","index","W","xd","Math","min","yd","reverse","Cd","zd","Ad","Bd","deferConnectionCallbacks","readyState","Dd","unshift","zc","mode","Ed","_renderRoot","Fd","slot","Gd","Hd","sort","Id","clear","CustomElementRegistry","connectedCallback","disconnectedCallback","isConnected","Jd","Kd","Ld","bind","Md","ATTRIBUTE_NODE","Nd","Od","Pd","flatten","Qd","Rd","_activeElement","Sd","Td","Ud","Vd","Wd","substring","Xd","inUse","patch","isShadyRoot","enqueue","settings","filterMutations","map","observeChildren","add","P","unobserveChildren","delete","size","nativeMethods","nativeTree","rd","vd","Yd","nativeHTMLElement","Text","HTMLSlotElement","yc","ShadowRoot","Zd","$d","has","O","__CE_isImportDocument","ae","be","import","__CE_shadowRoot","ee","fe","Q","__CE_state","ge","__CE_hasRegistry","__CE_documentLoadHandled","defaultView","constructionStack","pop","__CE_definition","attributeChangedCallback","observedAttributes","he","childList","subtree","ie","disconnect","je","T","__CE_patched","Function","SyntaxError","adoptedCallback","de","ke","some","upgrade","whenDefined","polyfillWrapFlushCallback","le","me","ne","oe","prepend","pe","append","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","getAttributeNS","Ee","setAttributeNS","Fe","removeAttributeNS","Ge","insertAdjacentElement","He","insertAdjacentHTML","Ie","Je","Ke","before","Le","after","Me","replaceWith","Ne","remove","Oe","Pe","Qe","Re","Se","Ve","ga","$e","Ue","Te","We","Xe","Ye","Ze","af","end","start","rules","parent","previous","cssText","parsedCssText","atRule","parsedSelector","selector","keyframesName","bf","ef","cf","df","trim","ff","gf","lastIndexOf","hf","jf","kf","uf","vf","wf","xf","yf","zf","Af","Bf","Cf","shimcssproperties","CSS","supports","nativeCss","Df","Ef","Ff","Gf","Hf","If","Jf","Kf","Lf","Mf","__cssRules","Nf","matchMedia","Of","Pf","Qf","Rf","createComment","compareDocumentPosition","DOCUMENT_POSITION_PRECEDING","Sf","Tf","Uf","Vf","is","extends","X","Wf","Xf","Zf","$f","classList","ag","bg","__styleScoped","cg","dg","__cssBuild","fg","gg","hg","eg","ig","jg","kg","ug","xg","Bg","Cg","mg","lg","og","pg","qg","sg","yg","zg","Ag","tg","vg","wg","stop","rg","reduce","ng","Dg","RegExp","Eg","__styleInfo","Fg","Gg","_getStyleRules","Hg","Ig","Kg","Lg","Mg","Ng","lastIndex","Tg","Ug","Vg","Wg","Xg","Yg","Zg","cache","$g","ah","SVGElement","hasAttribute","store","styleElement","fetch","bh","ch","dh","HTMLImports","whenReady","requestAnimationFrame","eh","fh","gh","hh","_applyShimCurrentVersion","_applyShimValidatingVersion","_applyShimNextVersion","ih","kh","lh","ApplyShim","invalidCallback","CustomStyleInterface","transformCallback","validateCallback","enqueued","flushCustomStyles","mh","oh","nh","Pg","Qg","parseInt","key","Og","prepareTemplate","prepareTemplateDom","prepareTemplateStyles","transformRules","_styleAst","Jg","Yf","processStyles","getStyleForCustomStyle","styleDocument","style","removeProperty","setProperty","jh","Sg","Rg","_useCount","styleSubtree","transformRule","getComputedStyleValue","getComputedStyle","getPropertyValue","_styleInfoForNode","transformCustomStyleForDocument","getStyleAst","styleAstToString","nativeShadow","ph","qh","charCodeAt","encodeURIComponent","j","s","URL","pathname","href","ftp","file","gopher","http","https","ws","wss","protocol","createObjectURL","revokeObjectURL","rh","sh","uh","vh","wh","bootstrap","ready","_","count","isOpened","options","instance","properties","initial","attrValue","configure","minChars","maxItems","autoFirst","DATA","FILTER_CONTAINS","SORT_BYLENGTH","container","CONTAINER","ITEM","REPLACE","tabSelect","ul","hidden","role","inside","status","_events","evaluate","close","reason","evt","keyCode","opened","selected","select","undefined","form","li","Suggestion","isArray","label","_list","items","el","disabled","text","fire","open","goto","destroy","unbind","indexOfAwesomplete","pos","lis","scrollTop","offsetTop","clientHeight","suggestions","origin","originalEvent","siblingIndex","suggestion","regExpEscape","FILTER_STARTSWITH","around","item_id","html","expr","con","$$","init","tag","element","val","ref","event","callback","Awesomplete","VERSION","regExpAstCache","regExpParser","RegExpParser","getRegExpAst","regExp","regExpStr","regExpAst","pattern","extendStatics","__extends","__","complementErrorMessage","failedOptimizationPrefixMsg","getOptimizedStartCodesIndices","ensureOptimizations","ast","firstCharOptimizedIndices","ignoreCase","message","msgSuffix","result","terms","term","atom","addOptimizedIdxToResult","complement","code","range","rangeCode","to","minOptimizationVal","minUnOptVal","maxUnOptVal","minOptIdx","charCodeToOptimizedIndex","maxOptIdx","currOptIdx","isOptionalQuantifier","quantifier","atLeast","isWholeOptional","optimizedCharIdx","char","fromCharCode","upperChar","toUpperCase","lowerChar","handleIgnoreCase","findCode","setNode","targetCharCodes","codeOrRange","range_1","targetCode","CharCodeFinder","_super","_this","found","visitChildren","visitLookahead","visitNegativeLookahead","visitCharacter","visitSet","BaseRegExpVisitor","canMatchCharCode","charCodes","charCodeFinder","visit","DEFAULT_MODE","MODES","SUPPORT_STICKY","sticky","analyzeTokenTypes","tokenTypes","onlyRelevantTypes","tracer","useSticky","debug","safeMode","positionTracking","lineTerminatorCharacters","msg","action","charCodeToOptimizedIdxMap","initCharCodeToOptimizedIndexMap","currType","Lexer","NA","allTransformedPatterns","patternIdxToType","patternIdxToGroup","patternIdxToLongerAltIdx","patternIdxToPushMode","patternIdxToPopMode","patternIdxToCanLineTerminator","patternIdxToIsCustom","patternIdxToShort","emptyGroups","patternIdxToConfig","hasCustom","currPattern","regExpSource","source","addStickyFlag","addStartOfInput","escapedRegExpString","wrappedRegExp","tokenTypeIdx","clazz","groupName","GROUP","SKIPPED","longerAltType","LONGER_ALT","PUSH_MODE","lineTerminatorCharCodes","getCharCodes","tokType","LINE_BREAKS","checkLineBreaksIssues","PATTERN","isCustomPattern","isShortPattern","acc","idx","longerAlt","canLineTerminator","isCustom","short","group","tokenType","canBeOptimized","charCodeToPatternIdxToConfig","currTokType","optimizedIdx","addToMapOfArrays","START_CHARS_HINT","lastOptimizedIdx_1","charOrInt","currOptimizedIdx","unicode","optimizedCodes","validatePatterns","validModesNames","errors","missingResult","tokenTypesWithMissingPattern","LexerDefinitionErrorType","MISSING_PATTERN","valid","findMissingPatterns","concat","invalidResult","tokenTypesWithInvalidPattern","INVALID_PATTERN","findInvalidPatterns","validTokenTypes","withRegExpPatterns","EndAnchorFinder","visitEndAnchor","invalidRegex","regexpAst","endAnchorVisitor","end_of_input","EOI_ANCHOR_FOUND","findEndOfInputAnchor","StartAnchorFinder","visitStartAnchor","startAnchorVisitor","start_of_input","SOI_ANCHOR_FOUND","findStartOfInputAnchor","invalidFlags","multiline","global","UNSUPPORTED_FLAGS_FOUND","findUnsupportedFlags","identicalPatterns","outerType","innerType","duplicatePatterns","currIdenticalSet","setOfIdentical","tokenTypeNames","DUPLICATE_PATTERNS_FOUND","findDuplicatePatterns","matchesEmptyString","EMPTY_MATCH_PATTERN","findEmptyMatchRegExps","validateRegExpPattern","invalidTypes","INVALID_GROUP_TYPE_FOUND","findInvalidGroupType","validModes","invalidModes","PUSH_MODE_DOES_NOT_EXIST","findModesThatDoNotExist","canBeTested","metaChars","str","testIdx","_a","regExpArray","testTokenType","UNREACHABLE_PATTERN","findUnreachablePatterns","performWarningRuntimeChecks","lexerDefinition","trackLines","warnings","hasAnyLineBreak","allTokenTypes","modes","tokTypes","concreteTokenTypes","terminatorCharCodes","currIssue","warningDescriptor","details","issue","IDENTIFY_TERMINATOR","errMsg","CUSTOM_LINE_BREAK","buildLineBreakIssueMessage","NO_LINE_BREAKS_FLAGS","LineTerminatorOptimizedTester","len","charsOrCodes","numOrString","charCode","tokenStructuredMatcher","tokInstance","tokConstructor","instanceType","isParent","categoryMatchesMap","tokenStructuredMatcherNoCategories","token","tokenShortNameIdx","tokenIdxToClass","augmentTokenTypes","tokenTypesAndParents","categories","searching","CATEGORIES","newCategories","expandCategories","hasShortKeyProperty","hasCategoriesProperty","categoryMatches","hasExtendingTokensTypesMapProperty","assignTokenDefaultProps","singleAssignCategoriesToksMap","assignCategoriesMapProp","assignCategoriesTokensProp","path","pathNode","nextCategory","newPath","isTokenType","defaultLexerErrorProvider","buildUnableToPopLexerModeMessage","image","buildUnexpectedCharactersMessage","fullText","startOffset","line","column","charAt","DEFAULT_LEXER_CONFIG","deferDefinitionErrorsHandling","lineTerminatorsPattern","errorMessageProvider","traceInitPerf","skipValidations","freeze","config","lexerDefinitionErrors","lexerDefinitionWarning","trackStartLines","trackEndLines","canModeBeOptimized","traceInitVal","traceInitMaxIdent","Infinity","traceInitIndent","TRACE_INIT","actualDefinition","hasOnlySingleMode","MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE","MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY","defaultMode","MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST","currModeValue","currModeName","currIdx","LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED","performRuntimeChecks","allModeNames","currModDef","currModName","currAnalyzeResult_1","allErrMessagesString","chopInput","matchWithTest","updateLastIndex","matchWithExec","handleModes","computeNewColumn","updateTokenEndLineColumnLocation","createTokenInstance","createFullToken","createStartOnlyToken","createOffsetOnlyToken","addToken","addTokenUsingPush","handlePayload","handlePayloadWithCustom","addTokenUsingMemberAccess","handlePayloadNoCustom","unOptimizedModes","cannotBeOptimized","modeName","tokenize","initialMode","tokenizeInternal","matchAltImage","longerAltIdx","matchedImage","payload","altPayload","imageLength","newToken","errLength","clonedResult","groupKeys","orgText","orgLength","offset","matchedTokensIndex","guessedNumberOfTokens","floor","matchedTokens","groups","currKey","currGroupValue","lineTerminatorPattern","currModePatternsLength","currCharCodeToPatternIdxToConfig","modeStack","emptyArray","getPossiblePatterns","getPossiblePatternsSlow","getPossiblePatternsOptimized","possiblePatterns","currConfig","pop_mode","popToken","msg_1","startLine","startColumn","newMode","modeCanBeOptimized","push_mode","nextCharCode","chosenPatternIdxToConfig","chosenPatternsLength","singleCharCode","longerAltConfig","longerAltPattern","numOfLTsInMatch","foundTerminator","lastLTEndOffset","errorStartOffset","errorLine","errorColumn","foundResyncPoint","currConfig_1","tokens","pushMode","newLastIndex","lastLTIdx","lastCharIsLT","fixForEndingInLT","endLine","endColumn","oldColumn","args","_i","endOffset","tokenVector","tokenToAdd","phaseDesc","phaseImpl","indent","time","traceMethod","tokenLabel","hasTokenLabel","LABEL","tokenName","obj","createToken","POP_MODE","createTokenInternal","EOF","tokenMatcher","AbstractProduction","definition","accept","visitor","prod","NonTerminal","referencedRule","Rule","Flat","ignoreAmbiguities","Option","RepetitionMandatory","RepetitionMandatoryWithSeparator","Repetition","RepetitionWithSeparator","Alternation","hasPredicates","Terminal","serializeGrammar","topRules","serializeProduction","convertDefinition","nonTerminalName","separator","terminalType","serializedTerminal","RestWalker","walk","prevRest","subProd","currRest","walkProdRef","walkTerminal","walkFlat","walkOption","walkAtLeastOne","walkAtLeastOneSep","walkManySep","walkMany","walkOr","terminal","refProd","flatProd","fullOrRest","optionProd","atLeastOneProd","fullAtLeastOneRest","atLeastOneSepProd","fullAtLeastOneSepRest","restForRepetitionWithSeparator","manyProd","fullManyRest","manySepProd","fullManySepRest","orProd","alt","prodWrapper","repSepProd","GAstVisitor","nodeAny","visitNonTerminal","visitFlat","visitOption","visitRepetitionMandatory","visitRepetitionMandatoryWithSeparator","visitRepetitionWithSeparator","visitRepetition","visitAlternation","visitTerminal","visitRule","isOptionalProd","alreadyVisited","getProductionDslName","DslMethodsCollectorVisitor","dslMethods","alternation","repetition","repetitionWithSeparator","repetitionMandatory","repetitionMandatoryWithSeparator","reset","subrule","manySep","atLeastOne","atLeastOneSep","many","or","collectorVisitor","first","isSequenceProd","currSubProd","firstSet","seq","nextSubProdIdx","hasInnerProdsRemaining","isLastInnerProdOptional","firstForSequence","isBranchingProd","allAlternativesFirsts","innerProd","firstForBranching","ResyncFollowsWalker","topProd","follows","startWalking","inner","occurenceInParent","followName","fullRest","t_in_topProd_follows","OR_IDX","OPTION_IDX","MANY_IDX","AT_LEAST_ONE_IDX","MANY_SEP_IDX","AT_LEAST_ONE_SEP_IDX","getKeyForAutomaticLookahead","ruleIdx","dslMethodIdx","occurrence","getKeyForAltIndex","altIdx","altIdxBitMap","setNodeLocationOnlyOffset","currNodeLocation","newLocationInfo","setNodeLocationFull","addNoneTerminalToCst","ruleName","ruleResult","NamedDSLMethodsCollectorVisitor","collectNamedDSLMethod","newNodeConstructor","methodIdx","nameLessNode","def","orgProd","hasMoreThanOneAlternative","currFlatAlt","NextAfterTokenWalker","nextTerminalName","nextTerminalOccurrence","lastTok","lastTokOccurrence","isAtEndOfPath","restProd","possibleTokTypes","AbstractNextPossibleTokensWalker","nextProductionName","nextProductionOccurrence","ruleStack","occurrenceStack","updateExpectedNext","AbstractNextTerminalAfterProductionWalker","topRule","isEndOfRule","NextTerminalAfterManyWalker","firstAfterMany","NextTerminalAfterManySepWalker","firstAfterManySep","NextTerminalAfterAtLeastOneWalker","firstAfterAtLeastOne","NextTerminalAfterAtLeastOneSepWalker","atleastOneSepProd","firstAfterfirstAfterAtLeastOneSep","possiblePathsFrom","targetDef","maxLength","currPath","getAlternativesForProd","alternatives","newDef","currAlt","partialPath","suffixDef","nextPossibleTokensAfter","initialDef","tokMatcher","maxLookAhead","EXIT_NON_TERMINAL","EXIT_NON_TERMINAL_ARR","EXIT_ALTERNATIVE","foundCompletePath","tokenVectorLength","minimalAlternativesIndex","possiblePaths","currDef","currRuleStack","currOccurrenceStack","nextPath","nextIdx","nextTokenType","nextTokenOccurrence","newRuleStack","newOccurrenceStack","nextPathWithout","nextPathWith","secondIteration","separatorGast","nthRepetition","currAltPath","expandTopLevelRule","newCurrOccurrenceStack","PROD_TYPE","RestDefinitionFinderWalker","targetOccurrence","targetProdType","restDef","checkIsTarget","expectedProdType","OPTION","REPETITION_MANDATORY","REPETITION_MANDATORY_WITH_SEPARATOR","REPETITION","REPETITION_WITH_SEPARATOR","InsideDefinitionFinderVisitor","targetRef","expectedProdName","ALTERNATION","initializeArrayOfArrays","pathToHashKeys","keys","longerKeys","currShorterKey","categoriesKeySuffix","isUniquePrefixHash","altKnownPathsKeys","searchPathKeys","currAltIdx","otherAltKnownPathsKeys","searchIdx","lookAheadSequenceFromAlternatives","altsDefs","partialAlts","finalResult","altsHashes","currAltPaths","dict","newData","pathLength","currDataset","_loop_1","currAltPathsAndSuffixes","currPathIdx","currPathPrefix","prefixKeys","currAltResult","containsPath","newPartialPathsAndSuffixes","getLookaheadPathsForOr","ruleGrammar","getLookaheadPathsForOptionalProd","prodType","insideDefVisitor","insideDef","afterDef","alternative","searchPath","compareOtherPath","otherPath","searchTok","otherTok","areTokenCategoriesNotUsed","lookAheadPaths","singleAltPaths","singlePath","validateGrammar","topLevels","globalMaxLookahead","ignoredIssues","errMsgProvider","grammarName","duplicateErrors","utils","currTopLevel","topLevelRule","OccurrenceValidationCollector","allRuleProductions","allProductions","productionGroups","identifyProductionForDuplicates","duplicates","currGroup","currDuplicates","firstProd","buildDuplicateFoundError","dslName","defError","ParserDefinitionErrorType","DUPLICATE_PRODUCTIONS","param","getExtraProductionArgument","parameter","validateDuplicateProductions","leftRecursionErrors","currTopRule","validateNoLeftRecursion","emptyAltErrors","ambiguousAltsErrors","emptyRepetitionErrors","orCollector","OrCollector","ors","alternations","currOr","exceptLast","currErrors","currAlternative","possibleFirstInAlt","buildEmptyAlternationError","emptyChoiceIdx","NONE_LAST_EMPTY_ALT","validateEmptyOrAlternative","ignoredIssuesForCurrentRule","currOccurrence","actualMaxLookahead","maxLookahead","altsAmbiguityErrors","rule","foundAmbiguousPaths","identicalAmbiguities","altsCurrPathAppearsIn","currOtherAlt","currOtherAltIdx","alts","currAmbDescriptor","ambgIndices","buildAlternationAmbiguityError","ambiguityIndices","prefixPath","AMBIGUOUS_ALTS","checkAlternativesAmbiguities","altsPrefixAmbiguityErrors","pathsAndIndices","currPathsAndIdx","currPathAndIdx","targetIdx","targetPath","prefixAmbiguitiesPathsAndIndices","searchPathAndIdx","prefix","other","otherTokType","currPathPrefixErrors","currAmbPathAndIdx","buildAlternationPrefixAmbiguityError","AMBIGUOUS_PREFIX_ALTS","checkPrefixAlternativesAmbiguities","validateAmbiguousAlternationAlternatives","topLevelRules","RepetionCollector","currProd","getProdType","pathsInsideProduction","buildEmptyRepetitionError","NO_NON_EMPTY_LOOKAHEAD","validateSomeNonEmptyLookaheadPath","termsNamespaceConflictErrors","tokenNames","currToken","currRule","currRuleName","buildNamespaceConflictError","CONFLICT_TOKENS_RULES_NAMESPACE","checkTerminalAndNoneTerminalsNameSpace","tokenNameErrors","validTermsPattern","buildTokenNameError","expectedPattern","INVALID_TOKEN_NAME","validateTokenName","nestedRulesNameErrors","curTopLevel","namedCollectorVisitor","nestedProds","currItem","currNestedProd","topLevel","nestedProd","validNestedRuleName","buildInvalidNestedRuleNameError","INVALID_NESTED_RULE_NAME","validateNestedRuleName","validateNestedRulesNames","nestedRulesDuplicateErrors","prodsByGroup","currDupGroup","currDupProds","dupGroup","buildDuplicateNestedRuleNameError","DUPLICATE_NESTED_NAME","validateDuplicateNestedRules","tooManyAltsErrors","curRule","buildTooManyAlternativesError","TOO_MANY_ALTS","validateTooManyAlts","ruleNameErrors","buildInvalidRuleNameError","INVALID_RULE_NAME","validateRuleName","duplicateRulesError","allRules","buildDuplicateRuleNameError","DUPLICATE_RULE_NAME","validateRuleDoesNotAlreadyExist","nextNonTerminals","getFirstNoneTerminal","buildLeftRecursionError","leftRecursionPath","LEFT_RECURSION","validNextSteps","errorsFromNextSteps","currRefRule","currSubDef","isFirstOptional","hasMore","rest","defaultParserErrorProvider","buildMismatchTokenMessage","expected","actual","buildNotAllInputParsedMessage","firstRedundant","buildNoViableAltMessage","expectedPathsPerAlt","customUserDescription","errPrefix","errSuffix","allLookAheadPaths","nextValidTokenSequences","currTokenType","itemMsg","buildEarlyExitMessage","expectedIterationPaths","defaultGrammarResolverErrorProvider","buildRuleNotFoundError","undefinedRule","defaultGrammarValidatorErrorProvider","duplicateProds","topLevelName","duplicateProd","extraArgument","pathMsg","currTok","currtok","currMessage","GastRefResolverVisitor","nameToTopRule","resolveRefs","UNRESOLVED_SUBRULE_REF","unresolvedRefName","refResolver","topRulesTable","assignOccurrenceIndices","methodsCollector","methods","currMethod","arrIdx","MISMATCHED_TOKEN_EXCEPTION","NO_VIABLE_ALT_EXCEPTION","EARLY_EXIT_EXCEPTION","NOT_ALL_INPUT_PARSED_EXCEPTION","RECOGNITION_EXCEPTION_NAMES","isRecognitionException","MismatchedTokenException","previousToken","resyncedTokens","NoViableAltException","NotAllInputParsedException","EarlyExitException","EOF_FOLLOW_KEY","IN_RULE_RECOVERY_EXCEPTION","InRuleRecoveryException","Recoverable","initRecoverable","firstAfterRepMap","resyncFollows","recoveryEnabled","DEFAULT_PARSER_CONFIG","attemptInRepetitionRecovery","getTokenToInsert","tokToInsert","NaN","isInsertedInRecovery","canTokenTypeBeInsertedInRecovery","tryInRepetitionRecovery","grammarRule","grammarRuleArgs","lookAheadFunc","expectedTokType","reSyncTokType","findReSyncTokenType","savedLexerState","exportLexerState","passedResyncPoint","nextTokenWithoutResync","LA","generateErrorMessage","getCurrRuleFullName","SAVE_ERROR","SKIP_TOKEN","addToResyncTokens","importLexerState","shouldInRepetitionRecoveryBeTried","expectTokAfterLastMatch","nextTokIdx","notStuck","isBackTracking","canPerformInRuleRecovery","getFollowsForInRuleRecovery","tokIdxInRule","grammarPath","getCurrentGrammarPath","getNextPossibleTokenTypes","tryInRuleRecovery","canRecoverWithSingleTokenInsertion","canRecoverWithSingleTokenDeletion","nextTok","consumeToken","expectedToken","mismatchedTok","possibleFollowsTokType","isInCurrentRuleReSyncSet","followKey","getCurrFollowKey","currentRuleReSyncSet","getFollowSetFromFollowKey","allPossibleReSyncTokTypes","flattenFollowSet","nextToken","RULE_STACK","currRuleShortName","getLastExplicitRuleShortName","currRuleIdx","getLastExplicitRuleOccurrenceIndex","prevRuleShortName","getPreviousExplicitRuleShortName","shortRuleNameToFullName","idxInCallingRule","inRule","buildFullFollowKeyStack","explicitRuleStack","explicitOccurrenceStack","RULE_OCCURRENCE_STACK","LAST_EXPLICIT_RULE_STACK","followStack","resyncTokens","reSyncTo","prodFunc","lookaheadFunc","prodOccurrence","nextToksWalker","getHumanReadableRuleStack","currShortName","firstAfterRepInfo","getGAstProductions","CstVisitorDefinitionError","LooksAhead","initLooksAhead","dynamicTokensEnabled","lookAheadFuncsCache","getLaFuncFromCache","getLaFuncFromMap","setLaFuncCache","setLaFuncCacheUsingMap","getLaFuncFromObj","setLaFuncUsingObj","preComputeLookaheadFunctions","collectMethods","prodIdx","laFunc","buildLookaheadFuncForOr","lookAheadBuilderForAlternatives","fullRuleNameToShort","computeLookaheadFunc","prodKey","prodMaxLookahead","dslMethodName","lookaheadBuilder","buildLookaheadFuncForOptionalProd","lookAheadBuilderForOptional","areAllOneTokenLookahead","numOfPaths","singleTokensTypes","expectedTokenUniqueKey_1","choiceToAlt_2","currExtendingType","currPathLength","buildSingleAlternativeLookaheadFunction","numOfAlts","orAlts","predicates","GATE","currNumOfPaths","currPredicate","singleTokenAlts","choiceToAlt_1","buildAlternativesLookAheadFunc","FUNC_NAME_REGEXP","NAME","functionName","func","defineNameProp","nameValue","namePropDescriptor","defaultVisit","ctx","childrenNames","childrenNamesLength","currChildArray","currChildArrayLength","currChild","fullName","VALID_PROP_NAMES","TreeBuilder","initTreeBuilder","CST_STACK","outputCst","nodeLocationTracking","setNodeLocationFromToken","setNodeLocationFromNode","cstPostRule","setInitialNodeLocation","setInitialNodeLocationFullRecovery","cstPostRuleFull","setInitialNodeLocationFullRegular","setInitialNodeLocationOnlyOffsetRecovery","cstPostRuleOnlyOffset","setInitialNodeLocationOnlyOffsetRegular","cstInvocationStateUpdate","cstFinallyStateUpdate","cstPostTerminal","cstPostNonTerminal","getLastExplicitRuleShortNameNoCst","getPreviousExplicitRuleShortNameNoCst","getLastExplicitRuleOccurrenceIndexNoCst","manyInternal","manyInternalNoCst","orInternal","orInternalNoCst","optionInternal","optionInternalNoCst","atLeastOneInternal","atLeastOneInternalNoCst","manySepFirstInternal","manySepFirstInternalNoCst","atLeastOneSepFirstInternal","atLeastOneSepFirstInternalNoCst","cstNode","cstNestedInvocationStateUpdate","nestedName","shortName","shortRuleNameToFull","fullRuleName","cstNestedFinallyStateUpdate","lastCstNode","ruleCstNode","prevToken","loc","consumedToken","tokenTypeName","rootCst","ruleCstResult","preCstNode","getBaseCstVisitorConstructor","baseCstVisitorConstructor","newBaseCstVisitorConstructor","ruleNames","allRuleNames","derivedConstructor","validateVisitor","semanticDefinitionErrors","visitorInstance","missingErrors","MISSING_METHOD","methodName","validateMissingCstMethods","redundantErrors","prop","REDUNDANT_METHOD","validateRedundantMethods","errorMessages","currDefError","_RULE_NAMES","getBaseCstVisitorConstructorWithDefaults","baseCstVisitorWithDefaultsConstructor","newConstructor","baseConstructor","withDefaultsProto","createBaseVisitorConstructorWithDefaults","nestedRuleBeforeClause","methodOpts","laKey","nestedRuleInvocationStateUpdate","nestedAltBeforeClause","methodKeyIdx","nestedRuleFinallyClause","cstStack","nestedRuleCst","nestedRuleFinallyStateUpdate","parentCstNode","lastExplictIndex","lastExplicitIndex","nestedRuleName","shortNameKey","LexerAdapter","initLexerAdapter","tokVector","tokVectorLength","newInput","selfAnalysisDone","END_OF_FILE","howMuch","soughtIdx","newState","resetLexerState","moveToTerminatedState","getLexerPosition","RecognizerApi","ACTION","impl","consume","consumeInternal","ruleToCall","subruleInternal","actionORMethodDef","altsOrOpts","CONSUME","CONSUME1","CONSUME2","CONSUME3","CONSUME4","CONSUME5","CONSUME6","CONSUME7","CONSUME8","CONSUME9","SUBRULE","SUBRULE1","SUBRULE2","SUBRULE3","SUBRULE4","SUBRULE5","SUBRULE6","SUBRULE7","SUBRULE8","SUBRULE9","OPTION1","OPTION2","OPTION3","OPTION4","OPTION5","OPTION6","OPTION7","OPTION8","OPTION9","OR","OR1","OR2","OR3","OR4","OR5","OR6","OR7","OR8","OR9","MANY","MANY1","MANY2","MANY3","MANY4","MANY5","MANY6","MANY7","MANY8","MANY9","MANY_SEP","MANY_SEP1","MANY_SEP2","MANY_SEP3","MANY_SEP4","MANY_SEP5","MANY_SEP6","MANY_SEP7","MANY_SEP8","MANY_SEP9","AT_LEAST_ONE","AT_LEAST_ONE1","AT_LEAST_ONE2","AT_LEAST_ONE3","AT_LEAST_ONE4","AT_LEAST_ONE5","AT_LEAST_ONE6","AT_LEAST_ONE7","AT_LEAST_ONE8","AT_LEAST_ONE9","AT_LEAST_ONE_SEP","AT_LEAST_ONE_SEP1","AT_LEAST_ONE_SEP2","AT_LEAST_ONE_SEP3","AT_LEAST_ONE_SEP4","AT_LEAST_ONE_SEP5","AT_LEAST_ONE_SEP6","AT_LEAST_ONE_SEP7","AT_LEAST_ONE_SEP8","AT_LEAST_ONE_SEP9","RULE","DEFAULT_RULE_CONFIG","definedRulesNames","definitionErrors","ruleImplementation","defineRule","OVERRIDE_RULE","ruleErrors","INVALID_RULE_OVERRIDE","BACKTRACK","isBackTrackingStack","orgState","saveRecogState","reloadRecogState","gastProductionsCache","getSerializedGastProductions","RecognizerEngine","initRecognizerEngine","tokenVocabulary","ruleShortNameIdx","tokensMap","uniqueTokens","noTokenCategoriesUsed","tokenConstructor","wrappedGrammarRule","resyncEnabled","recoveryValueFunc","invokeRuleWithTry","cst","invokeRuleCatch","ruleFinallyStateUpdate","ruleInvocationStateUpdate","resyncEnabledConfig","isFirstInvokedRule","reSyncEnabled","recogError","partialCstResult","recoveredNode","optionInternalLogic","predicate","DEF","orgLookaheadFunction_1","atLeastOneInternalLogic","orgLookaheadFunction_2","raiseEarlyExitException","ERR_MSG","doSingleRepetition","atLeastOneSepFirstInternalLogic","SEP","separatorLookAheadFunc","repetitionSepSecondInternal","manyInternalLogic","lookaheadFunction","orgLookaheadFunction_3","manySepFirstInternalLogic","nextTerminalAfterWalker","beforeIteration","altIdxToTake","ALT","raiseNoAltException","chosenAlternative","nestedAltBeforeClauseResult","isAtEndOfInput","firstRedundantTok","ARGS","subruleInternalError","consumeInternalError","eFromConsumption","consumeInternalRecovery","eFromInRuleRecovery","savedErrors","savedRuleStack","lexerState","ErrorHandler","initErrorHandler","_errors","context","ruleOccurrenceStack","newErrors","userDefinedErrMsg","insideProdPaths","actualTokens","errMsgTypes","lookAheadPathsPerAlternative","ContentAssist","initContentAssist","computeContentAssist","startRuleName","precedingInput","startRuleGast","topRuleName","topProduction","RECORDING_NULL_OBJECT","description","MAX_METHOD_IDX","pow","RFT","RECORDING_PHASE_TOKEN","RECORDING_PHASE_CSTNODE","GastRecorder","initGastRecorder","recordingProdStack","RECORDING_PHASE","enableRecording","arg1","arg2","consumeInternalRecord","subruleInternalRecord","optionInternalRecord","orInternalRecord","manyInternalRecord","manySepFirstInternalRecord","atLeastOneInternalRecord","atLeastOneSepFirstInternalRecord","ACTION_RECORD","BACKTRACK_RECORD","LA_RECORD","disableRecording","topLevelRuleRecord","newTopLevelRule","originalError","KNOWN_RECORDER_ERROR","mutabilityError","recordProd","recordOrProd","assertMethodIdxIsValid","getIdxSuffix","JSON","stringify","prevProd","newNoneTerminal","prodConstructor","mainProdArg","handleSep","grammarAction","newProd","MAX_LOOKAHEAD","hasOptions","newOrProd","IGNORE_AMBIGUITIES","currAltFlat","PerformanceTracer","initPerformanceTracer","userTraceInitPerf","traceIsNumber","EMPTY_ALT","Parser","that","performSelfAnalysis","parserInstance","defErrorsMsgs","originalGrammarAction","recordedRuleGast","resolverErrors","validationErrors","topProductions","reSyncFollows","allFollows","currRefsFollow","fullToShortName","cstAnalysisResult","currTopRuleShortName","DEFER_DEFINITION_ERRORS_HANDLING","CstParser","configClone","EmbeddedActionsParser","createSyntaxDiagramsCode","grammar","_b","_c","resourceBase","_d","css","header","NL","genClass","genDefinition","genProd","genNonTerminal","genDSLRule","altDef","genSingleAlt","genAlternation","genTerminal","genDefFunction","generateParserFactory","wrapperText","genWrapperFunction","constructorWrapper","generateParserModule","genUmdModule","clearCache","isEmpty","arr","values","vals","mapValues","objKeys","last","collection","iteratorCallback","isObject","colKeys","isString","isUndefined","isFunction","dropRight","pick","find","cloneArr","newArr","cloneObj","clonedObj","findAll","arrOrObj","isArr","accumulator","compact","uniq","identity","identities","currIdentity","isRegExp","every","difference","sources","curSource","currSourceKeys","assignNoOverwrite","defaults","groupBy","groupKeyFunc","currGroupKey","currGroupArr","merge","obj1","obj2","keys2","NOOP","IDENTITY","packArray","holeyArr","orgValue","PRINT_ERROR","PRINT_WARNING","isES2015MapSupported","applyMixins","derivedCtor","baseCtors","baseCtor","baseProto","propName","basePropDescriptor","toFastProperties","toBecomeFast","FakeConstructor","fakeInstance","fakeAccess","bar","peek","timer","getTime","it","wellKnownSymbol","definePropertyModule","UNSCOPABLES","ArrayPrototype","Constructor","ArrayBuffer","DataView","NATIVE_ARRAY_BUFFER","DESCRIPTORS","classof","createNonEnumerableProperty","redefine","uid","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TO_STRING_TAG","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isTypedArray","klass","aTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","exportTypedArrayMethod","KEY","property","forced","exportTypedArrayStaticMethod","isView","redefineAll","fails","anInstance","toInteger","toLength","toIndex","IEEE754","arrayFill","setToStringTag","InternalStateModule","getInternalState","setInternalState","ARRAY_BUFFER","DATA_VIEW","WRONG_INDEX","NativeArrayBuffer","$ArrayBuffer","$DataView","$DataViewPrototype","RangeError","packIEEE754","pack","unpackIEEE754","unpack","packInt8","number","packInt16","packInt32","unpackInt32","buffer","packFloat32","packFloat64","addGetter","isLittleEndian","intIndex","byteLength","bytes","byteOffset","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","unsafe","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","toObject","toAbsoluteIndex","argumentsLength","endPos","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","step","mapfn","mapping","iteratorMethod","toIndexedObject","createMethod","IS_INCLUDES","$this","fromIndex","includes","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","callbackfn","specificCreate","boundFunction","findIndex","filterOut","METHOD_NAME","argument","method","thrower","ACCESSORS","argument0","argument1","aFunction","IS_RIGHT","memo","left","right","SPECIES","originalArray","anObject","iteratorClose","fn","ENTRIES","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","object","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","ownKeys","getOwnPropertyDescriptorModule","IteratorPrototype","createPropertyDescriptor","Iterators","returnThis","IteratorConstructor","bitmap","toPrimitive","propertyKey","createIteratorConstructor","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","proto","EXISTS","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","process","getBuiltIn","version","versions","v8","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","regexp","forceStringMethod","stringMethod","regexMethod","string","arg","variable","namespace","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","position","captures","namedCaptures","replacement","tailPos","symbols","check","globalThis","abs","LN2","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","sign","nBits","propertyIsEnumerable","dummy","Wrapper","NewTarget","NewTargetPrototype","functionToString","inspectSource","NATIVE_WEAK_MAP","objectHas","shared","sharedKey","hiddenKeys","WeakMap","state","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","feature","detection","normalize","POLYFILL","NATIVE","returnMethod","PrototypeOfArrayIteratorPrototype","arrayIterator","getOwnPropertySymbols","url","searchParams","URLSearchParams","username","hash","PromiseCapability","promise","$$resolve","$$reject","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","nativeAssign","symbol","alphabet","chr","activeXDocument","enumBugKeys","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","write","temp","parentWindow","NullProtoObjectViaActiveX","display","src","contentWindow","Properties","IE8_DOM_DEFINE","nativeDefineProperty","Attributes","nativeGetOwnPropertyDescriptor","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","names","nativePropertyIsEnumerable","NASHORN_BUG","1","aPossiblePrototype","setter","CORRECT_SETTER","getOwnPropertyNamesModule","newPromiseCapability","promiseCapability","enforceInternalState","TEMPLATE","simple","re1","re2","regexpFlags","stickyHelpers","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","charsAdded","strCopy","dotAll","RE","CONSTRUCTOR_NAME","TAG","SHARED","copyright","defaultConstructor","requireObjectCoercible","CONVERT_TO_STRING","second","codeAt","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","base","encode","currentValue","output","inputLength","counter","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","encoded","labels","max","integer","ceil","toPositiveInteger","BYTES","PREFERRED_STRING","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","toOffset","typedArrayFrom","setSpecies","inheritIfRequired","round","BYTES_PER_ELEMENT","WRONG_LENGTH","fromList","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","getter","typedArrayOffset","$length","$len","checkCorrectnessOfIteration","iterable","postfix","random","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","addToUnscopables","defineIterator","ARRAY_ITERATOR","iterated","kind","Arguments","$reduce","arrayMethodIsStrict","arrayMethodUsesToLength","CHROME_VERSION","IS_NODE","STRICT_METHOD","USES_TO_LENGTH","NativePromise","speciesConstructor","promiseResolve","real","onFinally","STRING_ITERATOR","point","fixRegExpWellKnownSymbolLogic","advanceStringIndex","getSubstitution","regExpExec","maybeCallNative","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","res","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","replacerArgs","createTypedArrayConstructor","DOMIterables","ArrayIteratorMethods","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","USE_NATIVE_URL","hasOwn","getIterator","$fetch","Headers","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","plus","sequences","percentSequence","percentDecode","sequence","decodeURIComponent","deserialize","serialize","parseSearchParams","query","attribute","entry","updateSearchParams","validateArgumentsLength","passed","required","URLSearchParamsIterator","params","URLSearchParamsConstructor","entryIterator","entryNext","updateURL","URLSearchParamsPrototype","getAll","entriesIndex","sliceIndex","headers","getState","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getInternalURLState","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","radix","ipv4","parts","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","serializeHost","ignore0","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","seenAt","seenBracket","seenPasswordToken","port","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","serializeURL","getOrigin","getProtocol","getUsername","getPassword","getHost","hostname","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","nativeRevokeObjectURL","blob","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","setCacheAdd","setCacheHas","SetCache","__data__","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","array","resIndex","baseTimes","isArguments","isBuffer","isIndex","inherited","isArg","isBuff","isType","skipIndexes","eq","arrayPush","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","bitmask","customizer","stack","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","isPrototype","nativeKeys","iteratee","coreJsData","arraySome","cacheHas","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","symbolProto","symbolValueOf","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","freeGlobal","baseGetAllKeys","getSymbols","isKeyable","baseIsNative","getValue","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","Ctor","ctorString","nativeCreate","reIsUint","maskSrcKey","assocIndexOf","getMapData","overArg","freeExports","freeModule","freeProcess","nodeUtil","require","types","binding","transform","freeSelf","pairs","LARGE_ARRAY_SIZE","toNumber","nativeMax","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","clearTimeout","cancel","baseIsArguments","stubFalse","Buffer","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeys","isArrayLike","isSymbol","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","saveState","groupIdx","restoreState","consumeChar","disjunction","multiLine","isRegExpFlag","popChar","addFlag","peekChar","isTerm","isAssertion","assertion","ASSERT_EXISTS","ASSERT_NEVER_REACH_HERE","isBacktracking","atMost","integerIncludingZero","isDigit","greedy","atomEscape","characterClass","isPatternCharacter","patternCharacter","isQuantifier","decimalEscapeAtom","characterClassEscape","controlEscapeAtom","controlLetterEscapeAtom","nulCharacterAtom","hexEscapeSequenceAtom","regExpUnicodeEscapeSequenceAtom","identityEscapeAtom","positiveInteger","digitsCharCodes","whitespaceCodes","wordCharCodes","escapeCode","letter","parseHexDigits","classPatternCharacterAtom","isClassAtom","classAtom","isRangeDash","insertToSet","classEscape","capturing","groupAst","decimalPatternNoZero","decimalPattern","nextChar","isAtom","prevState","howMany","hexString","hexChar","hexDigitPattern","subItem","flagObj","flagKey","child","subChild","visitPattern","visitFlags","visitDisjunction","visitAlternative","visitWordBoundary","visitNonWordBoundary","visitGroup","visitGroupBackReference","visitQuantifier","directives","isDirective","isCEPolyfill","removeNodes","noChange","nothing","marker","nodeMarker","markerRegex","boundAttributeSuffix","Template","nodesToRemove","walker","lastPartIndex","partIndex","strings","hasAttributes","endsWith","stringForPart","lastAttributeNameRegex","attributeLookupName","attributeValue","statics","tagName","insert","createMarker","suffix","isTemplatePartActive","TemplateInstance","template","processor","__parts","setValue","commit","nodeIndex","handleTextExpression","insertAfterNode","handleAttributeExpressions","policy","trustedTypes","createPolicy","createHTML","commentMarker","TemplateResult","isCommentBinding","commentOpen","attributeMatch","getHTML","isPrimitive","isIterable","AttributeCommitter","dirty","_createPart","AttributePart","_getValue","committer","directive","NodePart","__pendingValue","startNode","endNode","__insert","__commitText","__commitTemplateResult","__commitNode","__commitIterable","valueAsString","templateFactory","update","_clone","itemParts","itemPart","appendIntoPart","insertAfterPart","BooleanAttributePart","PropertyCommitter","super","single","PropertyPart","eventOptionsSupported","_e","EventPart","eventName","eventContext","__boundHandleEvent","newListener","oldListener","shouldRemoveListener","shouldAddListener","__options","getOptions","templateCache","templateCaches","stringsArray","keyString","getTemplateElement","render","appendInto","CONFIG_ALIASES","row_pivot","col_pivot","col_pivots","column_pivot","filters","sorts","CONFIG_VALID_KEYS","NUMBER_AGGREGATES","STRING_AGGREGATES","SORT_ORDERS","SORT_ORDER_IDS","TYPE_AGGREGATES","float","boolean","datetime","date","FILTER_OPERATORS","lessThan","greaterThan","equals","lessThanOrEquals","greaterThanOrEquals","doesNotEqual","isNull","isNotNull","isIn","isNotIn","bitwiseAnd","bitwiseOr","and","beginsWith","BOOLEAN_FILTERS","NUMBER_FILTERS","STRING_FILTERS","DATETIME_FILTERS","COLUMN_SEPARATOR_STRING","TYPE_FILTERS","CLASS_PREFIX","ALLOWED_EFFECTS","DROP_EFFECTS","supportsPassive","supportsPassiveEventListeners","opts","supportsPassiveEventListener","isDOMElement","addDocumentListener","ev","handler","removeDocumentListener","onEvt","off","prepareNodeCopyAsDragImage","srcNode","dstNode","cs","csName","getPropertyPriority","pointerEvents","canvasSrc","canvasDst","canvasSrcImgData","getContext","getImageData","width","height","putImageData","hasChildNodes","average","isTouchIdentifierContainedInTouchEvent","touchEvent","touchIdentifier","changedTouches","identifier","updateCentroidCoordinatesOfTouchesIn","coordinateProp","outPoint","pageXs","pageYs","touches","touch","TRANSFORM_CSS_VENDOR_PREFIXES","translateElementToPoint","pnt","originalTransforms","centerOnCoordinates","offsetWidth","offsetHeight","translate","transformProp","DataTransfer","_dataStore","_setDragImageHandler","_dropEffect","effectAllowed","setData","getData","clearData","format","setDragImage","determineDropEffect","sourceNode","dispatchDragEvent","dragEvent","targetElement","dataStore","dataTransfer","leaveEvt","dndEvent","pageX","pageY","targetRect","getBoundingClientRect","offsetX","offsetY","top","createDragEventFromTouch","cancelled","determineDragOperation","dropEffect","DragOperationController","_initialEvent","_config","_sourceNode","_dragOperationEndedCb","_dragOperationState","_immediateUserSelection","_currentDropTarget","_lastTouchEvent","_initialTouch","_touchMoveHandler","_onTouchMove","_touchEndOrCancelHandler","_onTouchEndOrCancel","_setup","_currentDragOperation","_dragDataStore","_currentHotspotCoordinates","_dragImagePageCoordinates","dragImageSrc","_dataTransfer","_dragImageOffset","_cleanup","dragImage","dragImageSetup","_dragImageTransforms","zIndex","_dragImage","dragImageOffset","dragImageCenterOnTouch","marginLeft","marginTop","_iterationIntervalId","setInterval","_iterationLock","_dragAndDropProcessModelIteration","iterationInterval","clearInterval","startDrag","dragStartConditionOverride","dragImageTranslateOverride","handledDragImageTranslate_1","previousDragOperation","dragCancelled","_dragOperationEnded","sourceEl","dragImageTransforms","transitionEndCb","visibility","csDragImage","durationInS","parseFloat","transitionDuration","rect","scrollLeft","delayInS","transitionDelay","durationInMs","applyDragImageSnapback","_finishDragOperation","newUserSelection","elementFromPoint","previousTargetElement","currentDragOperationClass","dragFailed","tryFindDraggableTarget","draggable","activeDragOperation","onTouchstart","composePath","dragTarget","dragOperationEnded","err","onDelayTouchstart","onReleasedItem","move","scroll","EVENT_PREFIX","holdToDrag","defaultActionOverride","bindTemplate","styleStrings","cls","templateString","styleString","div","importTemplate","setTemplateContent","old","_initializing","_initialized","registerElement","_attribute","_default","desc","old_set","attr","parse","invertPromise","_resolve","throttlePromise","lock","async","elems","override","forceApply","detectedFeatures","features","dragEvents","userAgentSupportingNativeDnD","isBlinkEngine","chrome","detectFeatures","polyfill","cp","_path","json_attribute","array_attribute","RENDERERS","renderers","registerPlugin","plugin","old_plugin","getPlugin","getInstance","__perspective_plugins__","SPAN","get_text_width","fontFamily","fontSize","_option_template","agg","_select_template","category","perspective","weighted_options","_weights","has_weighted_mean","set_weights","xs","elem","type_config","get_type_config","agg_dropdown","filter_dropdown","aggregate","filter_operand","_callback","_update_filter","choices","filter_operator","_filter_operand","operator","filter_input","operand","_blur_agg_dropdown","_get_computed_data","column_name","input_columns","input_type","computation","_set_data_transfer","_register_ids","_li","_visible","_row_close","_agg_dropdown","_sort_order","_filter_operator","_edit_computed_column_button","_column_aggregate_category","_focus_agg_dropdown","_register_callbacks","debounced_filter","debounce","displayed","_selection_index","markup","_details","_container","reposition","warning","item_clicked","item_mouseover","_render_details_panel","item_mouseleave","get_selected_value","hide","_next","_go_to","_prev","scrollIntoView","block","_clear_details_panel","help","signature","_value","_ignored_nodes","renderer","_render_content","set_renderer","render_function","update_content","selection","getSelection","get_tokens","_edit_area","input_event","nodes","anchor_idx","focus_idx","current_idx","anchorNode","anchorOffset","focusNode","focusOffset","clear_content","restore_selection","rendered_event","absolute_anchor_idx","absolute_focus_idx","anchor_node","focus_node","start_idx","end_idx","setBaseAndExtent","get_text","_capture_drop_data","parsed","_reset_selection","token_name_to_display_name","columnName","leftParen","rightParen","subtract","multiply","divide","percent_of","actual_token_to_string","PerspectiveLexerErrorMessage","PerspectiveParserErrorMessage","vocabulary","OperatorTokenType","FunctionTokenType","ColumnNameTokenType","UpperLowerCaseTokenType","COLUMN_NAME_REGEX_PATTERN","ColumnName","start_offset","line_breaks","As","longer_alt","Add","Subtract","Multiply","Divide","Pow","PercentOf","Equals","NotEquals","GreaterThan","LessThan","Is","Sqrt","Pow2","Abs","Invert","Log","Exp","Bin10","Bin100","Bin1000","Bin10th","Bin100th","Bin1000th","Length","Lowercase","Uppercase","ConcatComma","ConcatSpace","HourOfDay","DayOfWeek","MonthOfYear","SecondBucket","MinuteBucket","HourBucket","DayBucket","WeekBucket","MonthBucket","YearBucket","LeftParen","RightParen","Comma","Whitespace","raw","clean_tokens","cleaned_tokens","ComputedExpressionColumnParser","Expression","OperatorComputedColumn","AdditionOperatorComputedColumn","Operator","MultiplicationOperatorComputedColumn","AdditionOperator","ExponentOperatorComputedColumn","MultiplicationOperator","ExponentOperator","TerminalColumnName","ParentheticalExpression","FunctionComputedColumn","COMPUTED_FUNCTION_FORMATTERS","invert","exp","pow2","sqrt","bin10","bin100","bin1000","bin10th","bin100th","bin1000th","uppercase","lowercase","concat_space","concat_comma","hour_of_day","day_of_week","month_of_year","second_bucket","minute_bucket","hour_bucket","day_bucket","week_bucket","month_bucket","year_bucket","token_types","ComputedExpressionAutocompleteSuggestion","input_types","return_type","num_params","is_column_name","COMPUTED_EXPRESSION_PARSER","is_initialized","_vocabulary","_tokens","_metadata","_lexer","_parser","_visitor","_construct_lexer","_construct_parser","_construct_visitor","lex","expression","_check_initialized","lex_result","SuperExpression","get_autocomplete_suggestions","lexer_result","match_types","initial_suggestions","_apply_suggestion_metadata","partial_function","extract_partial_function","last_token","get_last_token","exact_matches","fuzzy_matches","lower_value","lower_input","startsWith","partial","last_idx","get_last_token_with_types","limit","bin_functions","meta","_make_token","bin_function","regex","base_visitor","computed_columns","_VisitOperatorComputedColumn","get_operator","final_column_name","rhs","left_hand","as","computed_function_name","inputs","computed","not_equals","greater_than","less_than","suggestions_with_metadata","calc_index","_active_columns","is_last_null","cidx","last_index","attr_name","attr_value","DRAG_COUNT_MAP","_drop_target_hover","columns","data_index","filtering","_plugin","deselectMode","_get_visible_column_count","_update_column_view","_debounce_update","column_dragend","column_dragleave","_drop_target_null","_original_index","_unset_drop_target_null","column_swap","new_index","column_replace","column_dragover","toggleAttribute","current_index","over_elem","to_replace","is_diff","from_active","from_replace","from_append","from_required","to_null","column_drop","_parsed_expression","expressions","_valid","_expression_editor","render_expression","_editor_observer","_resize_editor","_autocomplete","_position_autocomplete","_observe_editor","attributeFilter","_get_type","_make_column_name_suggestions","_computed_expression_parser","offsets","token_map","_get_view_all_column_names","class_name","exists","make_autocomplete_markup","_clear_error","_disable_save_button","name_fragments","has_name_fragments","show_column_names","is_paren","is_alias","last_function_or_operator","column_names","_get_view_column_names_by_types","column_name_suggestions","_set_error","_error","parsed_expression","computed_schema","expected_types","invalid","_enable_save_button","_save_expression","_save_button","editor","last_span","offset_left","offsetLeft","offset_width","offset_top","_autocomplete_replace","new_value","old_value","last_input","innerText","final_value","last_word","last_word_is_column_name","new_is_column_name","last_word_idx","partials_inside_func","stripped_last","_autocomplete_item_clicked","_clear_expression_editor","_close_expression_widget","_side_panel_actions","_editor_keydown","_close_button","_validate_expression","dragenterleave","dragHoverCount","toggle","CancelTask","on_cancel","_on_cancel","_cancelled","StateElement","current_renderers","_get_view_dom_columns","_get_view_all_columns","_get_view_active_columns","_get_view_active_valid_columns","_get_view_inactive_columns","_get_view_active_column_names","_get_view_all_valid_column_names","_get_view_active_valid_column_names","_get_view_active_valid_column_count","viewer_columns","_get_view_columns","active","_get_view_aggregates","op","_get_view_row_pivots","_get_view_column_pivots","_get_view_filter_nodes","_get_view_filters","_get_view_sorts","order","_get_view_computed_columns","_get_view_parsed_computed_columns","get_aggregate_attribute","aggs","new_aggs","_aggregate_defaults","numberWithCommas","TYPE_ORDER","_total_template","total","_nowrap_template","_warning","flatMap","PerspectiveElement","_validate_parsed_computed_columns","validated","table","_set_updating","_clear_state","_table","computed_functions","get_computed_functions","cols","schema","_initial_col_order","parsed_computed_columns","computed_expressions","computed_column_names","s1","s2","column_sorter","aggregates","aggregate_attribute","get_aggregates_with_defaults","shown","get_aggregate_defaults","_clear_columns","row","_new_row","_inactive_columns","active_row","_columns_container","_show_column_container","compute","_show_side_panel_actions","_edit_port","make_port","_edit_port_lock","force_update","max_columns","render_warning","max_cols","max_rows","num_columns","_view","schema_columns","column_group_diff","column_limit","max_cells","_show_warnings","num_rows","columns_are_truncated","rows_are_truncated","_plugin_information","_plugin_information_message","_calculate_throttle_timeout","timeout","throttle","__render_times","_view_on_update","limit_points","_debounced","_render_time","_task","task","updater","get_maxes","_warn_render_size_exceeded","_datavis","operandNode","exclamation","is_valid_filter","title","borderColor","_is_config_changed","plugin_name","isEqual","_previous_config","_previous_plugin_name","ignore_size_check","_check_responsive_layout","row_pivots","column_pivots","_validate_filters","view_aggregates","remove_update","_view_updater","on_update","_render_count","_check_loaded_table","_load_table","performance","_restyle_plugin","remove_delete","_updating_promise","_register_debounce_instance","_update","_new_view","DomElement","set_aggregate_attribute","is_set","_set_row_type","weights","computed_names","nrows","json","to_json","end_row","_autocomplete_choices","finally","_column_visibility_clicked","_column_aggregate_clicked","_column_filter_clicked","_sort_order_clicked","_update_computed_column_view","added_count","reset_columns_attr","_diff_computed_column_view","old_computed_columns","new_computed_columns","to_remove","new_names","_reset_computed_column_view","filtered_active","rp","inactive_computed","pop_cols","_update_column_list","accessor","active_columns","next_col","_set_row_styles","nidx","_remove_null_columns","since_index","_set_column_defaults","active_cols","valid_active_cols","pref","_fill_numeric","selectMode","bypass","app","clientWidth","_persisted_side_panel_width","_side_panel","panel","_pre_resize","_aggregate_selector","_vis_selector","_filters","_row_pivots","_column_pivots","_add_computed_expression_button","_computed_expression_widget","_inner_drop_target","_drop_target","_config_button","_reset_button","_download_button","_copy_button","_top_panel","_sort","_transpose_button","_plugin_information_action","_resize_bar","_register_view_options","row_path","__ROW_PATH__","choice","toLocaleString","ActionElement","_show_context_menu","_hide_context_menu","_show_config","_post_resize","post","pre","offsetParent","resize","_open_computed_expression_widget","_save_computed_expression","_type_check_expression","functions","get_computation_input_types","_clear_all_computed_expressions","_set_computed_expression","min_columns","new_aggregates","updated_agg","new_filters","_updating_filter","_increment_sort","column_sorting","abs_sorting","sort_orders","new_sort_order","_transpose","has_row","has_col","_reset_sidepanel","_resize_sidepanel","cursor","new_width","notifyResize","_vis_selector_changed","classname","_type_check_computed_expression","_toggle_config","copy","download","PERSISTENT_ATTRIBUTES","_resize_handler","csv","to_csv","delimiter","toggleConfig","dir","show","diff","old_columns","fterms","plugin_names","guess_plugin","pivots","pivot","immediate","clone","widget","restore","save","restyleElement","plugin_config","flat","formatted","binStr","Blob","catch","execCommand","copy_to_clipboard","DEFAULT_CONFIG","mergeDeep","get_types","get_config","props","__PERSPECTIVE_CONFIG__","override_config","__TEMPLATE_CONFIG__","minimumFractionDigits","maximumFractionDigits","week","year","month","day","hour","minute","null_value","__webpack_module_cache__","__webpack_require__","moduleId","loaded","__webpack_modules__","__esModule","nmd","paths"],"mappings":"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","file":"perspective-viewer.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","/**\n@license @nocompile\nCopyright (c) 2018 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n(function(){/*\n\n Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n Code distributed by Google as part of the polymer project is also\n subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';var r,aa=\"function\"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ba=\"undefined\"!=typeof window&&window===this?this:\"undefined\"!=typeof global&&null!=global?global:this;function ca(){ca=function(){};ba.Symbol||(ba.Symbol=ea)}var ea=function(){var a=0;return function(b){return\"jscomp_symbol_\"+(b||\"\")+a++}}();\nfunction fa(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol(\"iterator\"));\"function\"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ha(this)}});fa=function(){}}function ha(a){var b=0;return ia(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ia(a){fa();a={next:a};a[ba.Symbol.iterator]=function(){return this};return a}function ja(a){fa();var b=a[Symbol.iterator];return b?b.call(a):ha(a)}var ka;\nif(\"function\"==typeof Object.setPrototypeOf)ka=Object.setPrototypeOf;else{var la;a:{var ma={Pa:!0},na={};try{na.__proto__=ma;la=na.Pa;break a}catch(a){}la=!1}ka=la?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+\" is not extensible\");return a}:null}var oa=ka;function pa(){this.f=!1;this.b=null;this.fa=void 0;this.a=1;this.G=0;this.c=null}function qa(a){if(a.f)throw new TypeError(\"Generator is already running\");a.f=!0}pa.prototype.m=function(a){this.fa=a};\nfunction ra(a,b){a.c={Ra:b,Va:!0};a.a=a.G}pa.prototype.return=function(a){this.c={return:a};this.a=this.G};function sa(a,b){a.a=3;return{value:b}}function ta(a){this.a=new pa;this.b=a}function ua(a,b){qa(a.a);var c=a.a.b;if(c)return wa(a,\"return\"in c?c[\"return\"]:function(a){return{value:a,done:!0}},b,a.a.return);a.a.return(b);return xa(a)}\nfunction wa(a,b,c,d){try{var e=b.call(a.a.b,c);if(!(e instanceof Object))throw new TypeError(\"Iterator result \"+e+\" is not an object\");if(!e.done)return a.a.f=!1,e;var f=e.value}catch(g){return a.a.b=null,ra(a.a,g),xa(a)}a.a.b=null;d.call(a.a,f);return xa(a)}function xa(a){for(;a.a.a;)try{var b=a.b(a.a);if(b)return a.a.f=!1,{value:b.value,done:!1}}catch(c){a.a.fa=void 0,ra(a.a,c)}a.a.f=!1;if(a.a.c){b=a.a.c;a.a.c=null;if(b.Va)throw b.Ra;return{value:b.return,done:!0}}return{value:void 0,done:!0}}\nfunction ya(a){this.next=function(b){qa(a.a);a.a.b?b=wa(a,a.a.b.next,b,a.a.m):(a.a.m(b),b=xa(a));return b};this.throw=function(b){qa(a.a);a.a.b?b=wa(a,a.a.b[\"throw\"],b,a.a.m):(ra(a.a,b),b=xa(a));return b};this.return=function(b){return ua(a,b)};fa();this[Symbol.iterator]=function(){return this}}function za(a,b){b=new ya(new ta(b));oa&&oa(b,a.prototype);return b}function Aa(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c}\n(function(){if(!function(){var a=document.createEvent(\"Event\");a.initEvent(\"foo\",!0,!0);a.preventDefault();return a.defaultPrevented}()){var a=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){this.cancelable&&(a.call(this),Object.defineProperty(this,\"defaultPrevented\",{get:function(){return!0},configurable:!0}))}}var b=/Trident/.test(navigator.userAgent);if(!window.CustomEvent||b&&\"function\"!==typeof window.CustomEvent)window.CustomEvent=function(a,b){b=b||{};var c=document.createEvent(\"CustomEvent\");\nc.initCustomEvent(a,!!b.bubbles,!!b.cancelable,b.detail);return c},window.CustomEvent.prototype=window.Event.prototype;if(!window.Event||b&&\"function\"!==typeof window.Event){var c=window.Event;window.Event=function(a,b){b=b||{};var c=document.createEvent(\"Event\");c.initEvent(a,!!b.bubbles,!!b.cancelable);return c};if(c)for(var d in c)window.Event[d]=c[d];window.Event.prototype=c.prototype}if(!window.MouseEvent||b&&\"function\"!==typeof window.MouseEvent){b=window.MouseEvent;window.MouseEvent=function(a,\nb){b=b||{};var c=document.createEvent(\"MouseEvent\");c.initMouseEvent(a,!!b.bubbles,!!b.cancelable,b.view||window,b.detail,b.screenX,b.screenY,b.clientX,b.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,b.button,b.relatedTarget);return c};if(b)for(d in b)window.MouseEvent[d]=b[d];window.MouseEvent.prototype=b.prototype}Array.from||(Array.from=function(a){return[].slice.call(a)});Object.assign||(Object.assign=function(a,b){for(var c=[].slice.call(arguments,1),d=0,e;d<c.length;d++)if(e=c[d])for(var f=\na,n=e,p=Object.getOwnPropertyNames(n),H=0;H<p.length;H++)e=p[H],f[e]=n[e];return a})})(window.WebComponents);(function(){function a(){}function b(a,b){if(!a.childNodes.length)return[];switch(a.nodeType){case Node.DOCUMENT_NODE:return va.call(a,b);case Node.DOCUMENT_FRAGMENT_NODE:return lf.call(a,b);default:return A.call(a,b)}}var c=\"undefined\"===typeof HTMLTemplateElement,d=!(document.createDocumentFragment().cloneNode()instanceof DocumentFragment),e=!1;/Trident/.test(navigator.userAgent)&&function(){function a(a,b){if(a instanceof DocumentFragment)for(var d;d=a.firstChild;)c.call(this,d,b);else c.call(this,\na,b);return a}e=!0;var b=Node.prototype.cloneNode;Node.prototype.cloneNode=function(a){a=b.call(this,a);this instanceof DocumentFragment&&(a.__proto__=DocumentFragment.prototype);return a};DocumentFragment.prototype.querySelectorAll=HTMLElement.prototype.querySelectorAll;DocumentFragment.prototype.querySelector=HTMLElement.prototype.querySelector;Object.defineProperties(DocumentFragment.prototype,{nodeType:{get:function(){return Node.DOCUMENT_FRAGMENT_NODE},configurable:!0},localName:{get:function(){},\nconfigurable:!0},nodeName:{get:function(){return\"#document-fragment\"},configurable:!0}});var c=Node.prototype.insertBefore;Node.prototype.insertBefore=a;var d=Node.prototype.appendChild;Node.prototype.appendChild=function(b){b instanceof DocumentFragment?a.call(this,b,null):d.call(this,b);return b};var f=Node.prototype.removeChild,g=Node.prototype.replaceChild;Node.prototype.replaceChild=function(b,c){b instanceof DocumentFragment?(a.call(this,b,c),f.call(this,c)):g.call(this,b,c);return c};Document.prototype.createDocumentFragment=\nfunction(){var a=this.createElement(\"df\");a.__proto__=DocumentFragment.prototype;return a};var h=Document.prototype.importNode;Document.prototype.importNode=function(a,b){b=h.call(this,a,b||!1);a instanceof DocumentFragment&&(b.__proto__=DocumentFragment.prototype);return b}}();var f=Node.prototype.cloneNode,g=Document.prototype.createElement,h=Document.prototype.importNode,k=Node.prototype.removeChild,m=Node.prototype.appendChild,n=Node.prototype.replaceChild,p=DOMParser.prototype.parseFromString,\nH=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,\"innerHTML\"),B=Object.getOwnPropertyDescriptor(window.Node.prototype,\"childNodes\"),A=Element.prototype.querySelectorAll,va=Document.prototype.querySelectorAll,lf=DocumentFragment.prototype.querySelectorAll,mf=function(){if(!c){var a=document.createElement(\"template\"),b=document.createElement(\"template\");b.content.appendChild(document.createElement(\"div\"));a.content.appendChild(b);a=a.cloneNode(!0);return 0===a.content.childNodes.length||\n0===a.content.firstChild.content.childNodes.length||d}}();if(c){var da=document.implementation.createHTMLDocument(\"template\"),Gc=!0,q=document.createElement(\"style\");q.textContent=\"template{display:none;}\";var Hc=document.head;Hc.insertBefore(q,Hc.firstElementChild);a.prototype=Object.create(HTMLElement.prototype);var nf=!document.createElement(\"div\").hasOwnProperty(\"innerHTML\");a.R=function(b){if(!b.content&&b.namespaceURI===document.documentElement.namespaceURI){b.content=da.createDocumentFragment();\nfor(var c;c=b.firstChild;)m.call(b.content,c);if(nf)b.__proto__=a.prototype;else if(b.cloneNode=function(b){return a.b(this,b)},Gc)try{l(b),D(b)}catch(xh){Gc=!1}a.a(b.content)}};var sb={option:[\"select\"],thead:[\"table\"],col:[\"colgroup\",\"table\"],tr:[\"tbody\",\"table\"],th:[\"tr\",\"tbody\",\"table\"],td:[\"tr\",\"tbody\",\"table\"]},l=function(b){Object.defineProperty(b,\"innerHTML\",{get:function(){return tb(this)},set:function(b){var c=sb[(/<([a-z][^/\\0>\\x20\\t\\r\\n\\f]+)/i.exec(b)||[\"\",\"\"])[1].toLowerCase()];if(c)for(var d=\n0;d<c.length;d++)b=\"<\"+c[d]+\">\"+b+\"</\"+c[d]+\">\";da.body.innerHTML=b;for(a.a(da);this.content.firstChild;)k.call(this.content,this.content.firstChild);b=da.body;if(c)for(d=0;d<c.length;d++)b=b.lastChild;for(;b.firstChild;)m.call(this.content,b.firstChild)},configurable:!0})},D=function(a){Object.defineProperty(a,\"outerHTML\",{get:function(){return\"<template>\"+this.innerHTML+\"</template>\"},set:function(a){if(this.parentNode){da.body.innerHTML=a;for(a=this.ownerDocument.createDocumentFragment();da.body.firstChild;)m.call(a,\nda.body.firstChild);n.call(this.parentNode,a,this)}else throw Error(\"Failed to set the 'outerHTML' property on 'Element': This element has no parent node.\");},configurable:!0})};l(a.prototype);D(a.prototype);a.a=function(c){c=b(c,\"template\");for(var d=0,e=c.length,f;d<e&&(f=c[d]);d++)a.R(f)};document.addEventListener(\"DOMContentLoaded\",function(){a.a(document)});Document.prototype.createElement=function(){var b=g.apply(this,arguments);\"template\"===b.localName&&a.R(b);return b};DOMParser.prototype.parseFromString=\nfunction(){var b=p.apply(this,arguments);a.a(b);return b};Object.defineProperty(HTMLElement.prototype,\"innerHTML\",{get:function(){return tb(this)},set:function(b){H.set.call(this,b);a.a(this)},configurable:!0,enumerable:!0});var of=/[&\\u00A0\"]/g,pf=/[&\\u00A0<>]/g,Ic=function(a){switch(a){case \"&\":return\"&amp;\";case \"<\":return\"&lt;\";case \">\":return\"&gt;\";case '\"':return\"&quot;\";case \"\\u00a0\":return\"&nbsp;\"}};q=function(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b};var qf=q(\"area base br col command embed hr img input keygen link meta param source track wbr\".split(\" \")),\nrf=q(\"style script xmp iframe noembed noframes plaintext noscript\".split(\" \")),tb=function(a,b){\"template\"===a.localName&&(a=a.content);for(var c=\"\",d=b?b(a):B.get.call(a),e=0,f=d.length,g;e<f&&(g=d[e]);e++){a:{var h=g;var k=a;var m=b;switch(h.nodeType){case Node.ELEMENT_NODE:for(var n=h.localName,l=\"<\"+n,p=h.attributes,A=0;k=p[A];A++)l+=\" \"+k.name+'=\"'+k.value.replace(of,Ic)+'\"';l+=\">\";h=qf[n]?l:l+tb(h,m)+\"</\"+n+\">\";break a;case Node.TEXT_NODE:h=h.data;h=k&&rf[k.localName]?h:h.replace(pf,Ic);break a;\ncase Node.COMMENT_NODE:h=\"\\x3c!--\"+h.data+\"--\\x3e\";break a;default:throw window.console.error(h),Error(\"not implemented\");}}c+=h}return c}}if(c||mf){a.b=function(a,b){var c=f.call(a,!1);this.R&&this.R(c);b&&(m.call(c.content,f.call(a.content,!0)),ub(c.content,a.content));return c};var ub=function(c,d){if(d.querySelectorAll&&(d=b(d,\"template\"),0!==d.length)){c=b(c,\"template\");for(var e=0,f=c.length,g,h;e<f;e++)h=d[e],g=c[e],a&&a.R&&a.R(h),n.call(g.parentNode,sf.call(h,!0),g)}},sf=Node.prototype.cloneNode=\nfunction(b){if(!e&&d&&this instanceof DocumentFragment)if(b)var c=tf.call(this.ownerDocument,this,!0);else return this.ownerDocument.createDocumentFragment();else this.nodeType===Node.ELEMENT_NODE&&\"template\"===this.localName&&this.namespaceURI==document.documentElement.namespaceURI?c=a.b(this,b):c=f.call(this,b);b&&ub(c,this);return c},tf=Document.prototype.importNode=function(c,d){d=d||!1;if(\"template\"===c.localName)return a.b(c,d);var e=h.call(this,c,d);if(d){ub(e,c);c=b(e,'script:not([type]),script[type=\"application/javascript\"],script[type=\"text/javascript\"]');\nfor(var f,k=0;k<c.length;k++){f=c[k];d=g.call(document,\"script\");d.textContent=f.textContent;for(var m=f.attributes,l=0,p;l<m.length;l++)p=m[l],d.setAttribute(p.name,p.value);n.call(f.parentNode,d,f)}}return e}}c&&(window.HTMLTemplateElement=a)})();var Ba=setTimeout;function Ca(){}function Da(a,b){return function(){a.apply(b,arguments)}}function t(a){if(!(this instanceof t))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!==typeof a)throw new TypeError(\"not a function\");this.J=0;this.wa=!1;this.A=void 0;this.U=[];Ea(a,this)}\nfunction Fa(a,b){for(;3===a.J;)a=a.A;0===a.J?a.U.push(b):(a.wa=!0,t.a(function(){var c=1===a.J?b.Xa:b.Ya;if(null===c)(1===a.J?Ga:Ha)(b.qa,a.A);else{try{var d=c(a.A)}catch(e){Ha(b.qa,e);return}Ga(b.qa,d)}}))}function Ga(a,b){try{if(b===a)throw new TypeError(\"A promise cannot be resolved with itself.\");if(b&&(\"object\"===typeof b||\"function\"===typeof b)){var c=b.then;if(b instanceof t){a.J=3;a.A=b;Ia(a);return}if(\"function\"===typeof c){Ea(Da(c,b),a);return}}a.J=1;a.A=b;Ia(a)}catch(d){Ha(a,d)}}\nfunction Ha(a,b){a.J=2;a.A=b;Ia(a)}function Ia(a){2===a.J&&0===a.U.length&&t.a(function(){a.wa||t.b(a.A)});for(var b=0,c=a.U.length;b<c;b++)Fa(a,a.U[b]);a.U=null}function Ja(a,b,c){this.Xa=\"function\"===typeof a?a:null;this.Ya=\"function\"===typeof b?b:null;this.qa=c}function Ea(a,b){var c=!1;try{a(function(a){c||(c=!0,Ga(b,a))},function(a){c||(c=!0,Ha(b,a))})}catch(d){c||(c=!0,Ha(b,d))}}t.prototype[\"catch\"]=function(a){return this.then(null,a)};\nt.prototype.then=function(a,b){var c=new this.constructor(Ca);Fa(this,new Ja(a,b,c));return c};t.prototype[\"finally\"]=function(a){var b=this.constructor;return this.then(function(c){return b.resolve(a()).then(function(){return c})},function(c){return b.resolve(a()).then(function(){return b.reject(c)})})};\nt.c=function(a){return new t(function(b,c){function d(a,g){try{if(g&&(\"object\"===typeof g||\"function\"===typeof g)){var h=g.then;if(\"function\"===typeof h){h.call(g,function(b){d(a,b)},c);return}}e[a]=g;0===--f&&b(e)}catch(n){c(n)}}if(!a||\"undefined\"===typeof a.length)throw new TypeError(\"Promise.all accepts an array\");var e=Array.prototype.slice.call(a);if(0===e.length)return b([]);for(var f=e.length,g=0;g<e.length;g++)d(g,e[g])})};\nt.resolve=function(a){return a&&\"object\"===typeof a&&a.constructor===t?a:new t(function(b){b(a)})};t.reject=function(a){return new t(function(b,c){c(a)})};t.f=function(a){return new t(function(b,c){for(var d=0,e=a.length;d<e;d++)a[d].then(b,c)})};t.a=\"function\"===typeof setImmediate&&function(a){setImmediate(a)}||function(a){Ba(a,0)};t.b=function(a){\"undefined\"!==typeof console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",a)};/*\n\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nif(!window.Promise&&(window.Promise=t,t.prototype.then=t.prototype.then,t.all=t.c,t.race=t.f,t.resolve=t.resolve,t.reject=t.reject,!window.setImmediate)){var Ka=document.createTextNode(\"\"),La=[];(new MutationObserver(function(){for(var a=La.length,b=0;b<a;b++)La[b]();La.splice(0,a)})).observe(Ka,{characterData:!0});t.a=function(a){La.push(a);Ka.textContent=0<Ka.textContent.length?\"\":\"a\"}};var Ma={},Na=Object.create,Oa=Object.defineProperties,Pa=Object.defineProperty;function u(a,b){b=void 0===b?{}:b;return{value:a,configurable:!!b.xa,writable:!!b.eb,enumerable:!!b.e}}var Qa=void 0;try{Qa=1===Pa({},\"y\",{get:function(){return 1}}).y}catch(a){Qa=!1}var Ra={};function Sa(a){a=String(a);for(var b=\"\",c=0;Ra[a+b];)b=c+=1;Ra[a+b]=1;var d=\"Symbol(\"+a+b+\")\";Qa&&Pa(Object.prototype,d,{get:void 0,set:function(a){Pa(this,d,u(a,{xa:!0,eb:!0}))},configurable:!0,enumerable:!1});return d}var Ta=Na(null);\nfunction v(a){if(this instanceof v)throw new TypeError(\"Symbol is not a constructor\");a=void 0===a?\"\":String(a);var b=Sa(a);return Qa?Na(Ta,{ta:u(a),Ja:u(b)}):b}Oa(v,{\"for\":u(function(a){a=String(a);if(Ma[a])return Ma[a];var b=v(a);return Ma[a]=b}),keyFor:u(function(a){if(Qa&&(!a||\"Symbol\"!==a[v.toStringTag]))throw new TypeError(\"\"+a+\" is not a symbol\");for(var b in Ma)if(Ma[b]===a)return Qa?Ma[b].ta:Ma[b].substr(7,Ma[b].length-8)})});\nOa(v,{vb:u(v(\"hasInstance\")),wb:u(v(\"isConcatSpreadable\")),iterator:u(v(\"iterator\")),match:u(v(\"match\")),replace:u(v(\"replace\")),search:u(v(\"search\")),yb:u(v(\"species\")),split:u(v(\"split\")),zb:u(v(\"toPrimitive\")),toStringTag:u(v(\"toStringTag\")),unscopables:u(v(\"unscopables\"))});Oa(Ta,{constructor:u(v),toString:u(function(){return this.Ja}),valueOf:u(function(){return\"Symbol(\"+this.ta+\")\"})});Qa&&Pa(Ta,v.toStringTag,u(\"Symbol\",{xa:!0}));var Ua=\"function\"===typeof Symbol?Symbol:v;/*\n\nCopyright (c) 2018 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nif(!window.Symbol){window.Symbol=Ua;var Va=window.Symbol.iterator;Array.prototype[Va]=function b(){var c,d=this;return za(b,function(b){1==b.a&&(c=0);if(3!=b.a)return c<d.length?b=sa(b,d[c]):(b.a=0,b=void 0),b;c++;b.a=2})};Set.prototype[Va]=function c(){var d,e=this,f;return za(c,function(c){1==c.a&&(d=[],e.forEach(function(c){d.push(c)}),f=0);if(3!=c.a)return f<d.length?c=sa(c,d[f]):(c.a=0,c=void 0),c;f++;c.a=2})};Map.prototype[Va]=function d(){var e,f=this,g;return za(d,function(d){1==d.a&&(e=[],\nf.forEach(function(d,f){e.push([f,d])}),g=0);if(3!=d.a)return g<e.length?d=sa(d,e[g]):(d.a=0,d=void 0),d;g++;d.a=2})};String.prototype[Va]=function e(){var f,g=this;return za(e,function(e){1==e.a&&(f=0);if(3!=e.a)return f<g.length?e=sa(e,g[f]):(e.a=0,e=void 0),e;f++;e.a=2})}};/*\n\n Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n Code distributed by Google as part of the polymer project is also\n subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nwindow.WebComponents=window.WebComponents||{flags:{}};var Wa=document.querySelector('script[src*=\"webcomponents-bundle\"]'),Xa=/wc-(.+)/,w={};if(!w.noOpts){location.search.slice(1).split(\"&\").forEach(function(a){a=a.split(\"=\");var b;a[0]&&(b=a[0].match(Xa))&&(w[b[1]]=a[1]||!0)});if(Wa)for(var Ya=0,Za;Za=Wa.attributes[Ya];Ya++)\"src\"!==Za.name&&(w[Za.name]=Za.value||!0);if(w.log&&w.log.split){var $a=w.log.split(\",\");w.log={};$a.forEach(function(a){w.log[a]=!0})}else w.log={}}\nwindow.WebComponents.flags=w;var ab=w.shadydom;ab&&(window.ShadyDOM=window.ShadyDOM||{},window.ShadyDOM.force=ab);var bb=w.register||w.ce;bb&&window.customElements&&(window.customElements.forcePolyfill=bb);/*\n\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nfunction cb(){this.Aa=this.root=null;this.da=!1;this.N=this.$=this.ma=this.assignedSlot=this.assignedNodes=this.S=null;this.childNodes=this.nextSibling=this.previousSibling=this.lastChild=this.firstChild=this.parentNode=this.V=void 0;this.Fa=this.ua=!1;this.Z={}}cb.prototype.toJSON=function(){return{}};function x(a){a.ka||(a.ka=new cb);return a.ka}function y(a){return a&&a.ka};var z=window.ShadyDOM||{};z.Ta=!(!Element.prototype.attachShadow||!Node.prototype.getRootNode);var db=Object.getOwnPropertyDescriptor(Node.prototype,\"firstChild\");z.K=!!(db&&db.configurable&&db.get);z.oa=z.force||!z.Ta;var eb=navigator.userAgent.match(\"Trident\"),fb=navigator.userAgent.match(\"Edge\");void 0===z.Ca&&(z.Ca=z.K&&(eb||fb));function gb(a){return(a=y(a))&&void 0!==a.firstChild}function C(a){return\"ShadyRoot\"===a.La}function hb(a){a=a.getRootNode();if(C(a))return a}\nvar ib=Element.prototype,jb=ib.matches||ib.matchesSelector||ib.mozMatchesSelector||ib.msMatchesSelector||ib.oMatchesSelector||ib.webkitMatchesSelector;function kb(a,b){if(a&&b)for(var c=Object.getOwnPropertyNames(b),d=0,e;d<c.length&&(e=c[d]);d++){var f=e,g=a,h=Object.getOwnPropertyDescriptor(b,f);h&&Object.defineProperty(g,f,h)}}function lb(a,b){for(var c=[],d=1;d<arguments.length;++d)c[d-1]=arguments[d];for(d=0;d<c.length;d++)kb(a,c[d]);return a}function mb(a,b){for(var c in b)a[c]=b[c]}\nvar nb=document.createTextNode(\"\"),ob=0,pb=[];(new MutationObserver(function(){for(;pb.length;)try{pb.shift()()}catch(a){throw nb.textContent=ob++,a;}})).observe(nb,{characterData:!0});function qb(a){pb.push(a);nb.textContent=ob++}var rb=!!document.contains;function vb(a,b){for(;b;){if(b==a)return!0;b=b.parentNode}return!1}\nfunction wb(a){for(var b=a.length-1;0<=b;b--){var c=a[b],d=c.getAttribute(\"id\")||c.getAttribute(\"name\");d&&\"length\"!==d&&isNaN(d)&&(a[d]=c)}a.item=function(b){return a[b]};a.namedItem=function(b){if(\"length\"!==b&&isNaN(b)&&a[b])return a[b];for(var c=ja(a),d=c.next();!d.done;d=c.next())if(d=d.value,(d.getAttribute(\"id\")||d.getAttribute(\"name\"))==b)return d;return null};return a};var xb=[],yb;function zb(a){yb||(yb=!0,qb(Ab));xb.push(a)}function Ab(){yb=!1;for(var a=!!xb.length;xb.length;)xb.shift()();return a}Ab.list=xb;function Bb(){this.a=!1;this.addedNodes=[];this.removedNodes=[];this.ca=new Set}function Cb(a){a.a||(a.a=!0,qb(function(){a.flush()}))}Bb.prototype.flush=function(){if(this.a){this.a=!1;var a=this.takeRecords();a.length&&this.ca.forEach(function(b){b(a)})}};Bb.prototype.takeRecords=function(){if(this.addedNodes.length||this.removedNodes.length){var a=[{addedNodes:this.addedNodes,removedNodes:this.removedNodes}];this.addedNodes=[];this.removedNodes=[];return a}return[]};\nfunction Db(a,b){var c=x(a);c.S||(c.S=new Bb);c.S.ca.add(b);var d=c.S;return{Ka:b,P:d,Ma:a,takeRecords:function(){return d.takeRecords()}}}function Eb(a){var b=a&&a.P;b&&(b.ca.delete(a.Ka),b.ca.size||(x(a.Ma).S=null))}\nfunction Fb(a,b){var c=b.getRootNode();return a.map(function(a){var b=c===a.target.getRootNode();if(b&&a.addedNodes){if(b=Array.from(a.addedNodes).filter(function(a){return c===a.getRootNode()}),b.length)return a=Object.create(a),Object.defineProperty(a,\"addedNodes\",{value:b,configurable:!0}),a}else if(b)return a}).filter(function(a){return a})};var Gb=Element.prototype.insertBefore,Hb=Element.prototype.replaceChild,Ib=Element.prototype.removeChild,Jb=Element.prototype.setAttribute,Kb=Element.prototype.removeAttribute,Lb=Element.prototype.cloneNode,Mb=Document.prototype.importNode,Nb=Element.prototype.addEventListener,Ob=Element.prototype.removeEventListener,Pb=Window.prototype.addEventListener,Qb=Window.prototype.removeEventListener,Rb=Element.prototype.dispatchEvent,Sb=Node.prototype.contains||HTMLElement.prototype.contains,Tb=Document.prototype.getElementById,\nUb=Element.prototype.querySelector,Vb=DocumentFragment.prototype.querySelector,Wb=Document.prototype.querySelector,Xb=Element.prototype.querySelectorAll,Yb=DocumentFragment.prototype.querySelectorAll,Zb=Document.prototype.querySelectorAll,E={};E.appendChild=Element.prototype.appendChild;E.insertBefore=Gb;E.replaceChild=Hb;E.removeChild=Ib;E.setAttribute=Jb;E.removeAttribute=Kb;E.cloneNode=Lb;E.importNode=Mb;E.addEventListener=Nb;E.removeEventListener=Ob;E.fb=Pb;E.gb=Qb;E.dispatchEvent=Rb;\nE.contains=Sb;E.getElementById=Tb;E.pb=Ub;E.tb=Vb;E.nb=Wb;E.querySelector=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return Ub.call(this,a);case Node.DOCUMENT_NODE:return Wb.call(this,a);default:return Vb.call(this,a)}};E.qb=Xb;E.ub=Yb;E.ob=Zb;E.querySelectorAll=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return Xb.call(this,a);case Node.DOCUMENT_NODE:return Zb.call(this,a);default:return Yb.call(this,a)}};var $b=/[&\\u00A0\"]/g,ac=/[&\\u00A0<>]/g;function bc(a){switch(a){case \"&\":return\"&amp;\";case \"<\":return\"&lt;\";case \">\":return\"&gt;\";case '\"':return\"&quot;\";case \"\\u00a0\":return\"&nbsp;\"}}function cc(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b}var dc=cc(\"area base br col command embed hr img input keygen link meta param source track wbr\".split(\" \")),ec=cc(\"style script xmp iframe noembed noframes plaintext noscript\".split(\" \"));\nfunction fc(a,b){\"template\"===a.localName&&(a=a.content);for(var c=\"\",d=b?b(a):a.childNodes,e=0,f=d.length,g;e<f&&(g=d[e]);e++){a:{var h=g;var k=a;var m=b;switch(h.nodeType){case Node.ELEMENT_NODE:for(var n=h.localName,p=\"<\"+n,H=h.attributes,B=0;k=H[B];B++)p+=\" \"+k.name+'=\"'+k.value.replace($b,bc)+'\"';p+=\">\";h=dc[n]?p:p+fc(h,m)+\"</\"+n+\">\";break a;case Node.TEXT_NODE:h=h.data;h=k&&ec[k.localName]?h:h.replace(ac,bc);break a;case Node.COMMENT_NODE:h=\"\\x3c!--\"+h.data+\"--\\x3e\";break a;default:throw window.console.error(h),\nError(\"not implemented\");}}c+=h}return c};var F=document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,!1),G=document.createTreeWalker(document,NodeFilter.SHOW_ELEMENT,null,!1);function gc(a){var b=[];F.currentNode=a;for(a=F.firstChild();a;)b.push(a),a=F.nextSibling();return b}\nvar I={parentNode:function(a){F.currentNode=a;return F.parentNode()},firstChild:function(a){F.currentNode=a;return F.firstChild()},lastChild:function(a){F.currentNode=a;return F.lastChild()},previousSibling:function(a){F.currentNode=a;return F.previousSibling()},nextSibling:function(a){F.currentNode=a;return F.nextSibling()}};I.childNodes=gc;I.parentElement=function(a){G.currentNode=a;return G.parentNode()};I.firstElementChild=function(a){G.currentNode=a;return G.firstChild()};\nI.lastElementChild=function(a){G.currentNode=a;return G.lastChild()};I.previousElementSibling=function(a){G.currentNode=a;return G.previousSibling()};I.nextElementSibling=function(a){G.currentNode=a;return G.nextSibling()};I.children=function(a){var b=[];G.currentNode=a;for(a=G.firstChild();a;)b.push(a),a=G.nextSibling();return wb(b)};I.innerHTML=function(a){return fc(a,function(a){return gc(a)})};\nI.textContent=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);for(var b=\"\",c;c=a.nextNode();)b+=c.nodeValue;return b;default:return a.nodeValue}};var hc=z.K,ic=[Node.prototype,Element.prototype,HTMLElement.prototype];function J(a){var b;a:{for(b=0;b<ic.length;b++){var c=ic[b];if(c.hasOwnProperty(a)){b=c;break a}}b=void 0}if(!b)throw Error(\"Could not find descriptor for \"+a);return Object.getOwnPropertyDescriptor(b,a)}\nvar K=hc?{parentNode:J(\"parentNode\"),firstChild:J(\"firstChild\"),lastChild:J(\"lastChild\"),previousSibling:J(\"previousSibling\"),nextSibling:J(\"nextSibling\"),childNodes:J(\"childNodes\"),parentElement:J(\"parentElement\"),previousElementSibling:J(\"previousElementSibling\"),nextElementSibling:J(\"nextElementSibling\"),innerHTML:J(\"innerHTML\"),textContent:J(\"textContent\"),firstElementChild:J(\"firstElementChild\"),lastElementChild:J(\"lastElementChild\"),children:J(\"children\")}:{},jc=hc?{firstElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,\n\"firstElementChild\"),lastElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,\"lastElementChild\"),children:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,\"children\")}:{},kc=hc?{firstElementChild:Object.getOwnPropertyDescriptor(Document.prototype,\"firstElementChild\"),lastElementChild:Object.getOwnPropertyDescriptor(Document.prototype,\"lastElementChild\"),children:Object.getOwnPropertyDescriptor(Document.prototype,\"children\")}:{},lc={za:K,sb:jc,mb:kc,parentNode:function(a){return K.parentNode.get.call(a)},\nfirstChild:function(a){return K.firstChild.get.call(a)},lastChild:function(a){return K.lastChild.get.call(a)},previousSibling:function(a){return K.previousSibling.get.call(a)},nextSibling:function(a){return K.nextSibling.get.call(a)},childNodes:function(a){return Array.prototype.slice.call(K.childNodes.get.call(a))},parentElement:function(a){return K.parentElement.get.call(a)},previousElementSibling:function(a){return K.previousElementSibling.get.call(a)},nextElementSibling:function(a){return K.nextElementSibling.get.call(a)},\ninnerHTML:function(a){return K.innerHTML.get.call(a)},textContent:function(a){return K.textContent.get.call(a)},children:function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return jc.children.get.call(a);case Node.DOCUMENT_NODE:return kc.children.get.call(a);default:return K.children.get.call(a)}},firstElementChild:function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return jc.firstElementChild.get.call(a);case Node.DOCUMENT_NODE:return kc.firstElementChild.get.call(a);default:return K.firstElementChild.get.call(a)}},\nlastElementChild:function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return jc.lastElementChild.get.call(a);case Node.DOCUMENT_NODE:return kc.lastElementChild.get.call(a);default:return K.lastElementChild.get.call(a)}}};var L=z.Ca?lc:I;function mc(a){for(;a.firstChild;)a.removeChild(a.firstChild)}\nvar nc=z.K,oc=document.implementation.createHTMLDocument(\"inert\"),pc=Object.getOwnPropertyDescriptor(Node.prototype,\"isConnected\"),qc=pc&&pc.get,rc=Object.getOwnPropertyDescriptor(Document.prototype,\"activeElement\"),sc={parentElement:{get:function(){var a=y(this);(a=a&&a.parentNode)&&a.nodeType!==Node.ELEMENT_NODE&&(a=null);return void 0!==a?a:L.parentElement(this)},configurable:!0},parentNode:{get:function(){var a=y(this);a=a&&a.parentNode;return void 0!==a?a:L.parentNode(this)},configurable:!0},\nnextSibling:{get:function(){var a=y(this);a=a&&a.nextSibling;return void 0!==a?a:L.nextSibling(this)},configurable:!0},previousSibling:{get:function(){var a=y(this);a=a&&a.previousSibling;return void 0!==a?a:L.previousSibling(this)},configurable:!0},nextElementSibling:{get:function(){var a=y(this);if(a&&void 0!==a.nextSibling){for(a=this.nextSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return L.nextElementSibling(this)},configurable:!0},previousElementSibling:{get:function(){var a=\ny(this);if(a&&void 0!==a.previousSibling){for(a=this.previousSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return L.previousElementSibling(this)},configurable:!0}},tc={className:{get:function(){return this.getAttribute(\"class\")||\"\"},set:function(a){this.setAttribute(\"class\",a)},configurable:!0}},uc={childNodes:{get:function(){if(gb(this)){var a=y(this);if(!a.childNodes){a.childNodes=[];for(var b=this.firstChild;b;b=b.nextSibling)a.childNodes.push(b)}var c=a.childNodes}else c=\nL.childNodes(this);c.item=function(a){return c[a]};return c},configurable:!0},childElementCount:{get:function(){return this.children.length},configurable:!0},firstChild:{get:function(){var a=y(this);a=a&&a.firstChild;return void 0!==a?a:L.firstChild(this)},configurable:!0},lastChild:{get:function(){var a=y(this);a=a&&a.lastChild;return void 0!==a?a:L.lastChild(this)},configurable:!0},textContent:{get:function(){if(gb(this)){for(var a=[],b=0,c=this.childNodes,d;d=c[b];b++)d.nodeType!==Node.COMMENT_NODE&&\na.push(d.textContent);return a.join(\"\")}return L.textContent(this)},set:function(a){if(\"undefined\"===typeof a||null===a)a=\"\";switch(this.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:if(!gb(this)&&nc){var b=this.firstChild;(b!=this.lastChild||b&&b.nodeType!=Node.TEXT_NODE)&&mc(this);lc.za.textContent.set.call(this,a)}else mc(this),(0<a.length||this.nodeType===Node.ELEMENT_NODE)&&this.appendChild(document.createTextNode(a));break;default:this.nodeValue=a}},configurable:!0},firstElementChild:{get:function(){var a=\ny(this);if(a&&void 0!==a.firstChild){for(a=this.firstChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return L.firstElementChild(this)},configurable:!0},lastElementChild:{get:function(){var a=y(this);if(a&&void 0!==a.lastChild){for(a=this.lastChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return L.lastElementChild(this)},configurable:!0},children:{get:function(){return gb(this)?wb(Array.prototype.filter.call(this.childNodes,function(a){return a.nodeType===Node.ELEMENT_NODE})):\nL.children(this)},configurable:!0},innerHTML:{get:function(){return gb(this)?fc(\"template\"===this.localName?this.content:this):L.innerHTML(this)},set:function(a){var b=\"template\"===this.localName?this.content:this;mc(b);var c=this.localName||\"div\";c=this.namespaceURI&&this.namespaceURI!==oc.namespaceURI?oc.createElementNS(this.namespaceURI,c):oc.createElement(c);nc?lc.za.innerHTML.set.call(c,a):c.innerHTML=a;for(a=\"template\"===this.localName?c.content:c;a.firstChild;)b.appendChild(a.firstChild)},\nconfigurable:!0}},vc={shadowRoot:{get:function(){var a=y(this);return a&&a.Aa||null},configurable:!0}},wc={activeElement:{get:function(){var a=rc&&rc.get?rc.get.call(document):z.K?void 0:document.activeElement;if(a&&a.nodeType){var b=!!C(this);if(this===document||b&&this.host!==a&&E.contains.call(this.host,a)){for(b=hb(a);b&&b!==this;)a=b.host,b=hb(a);a=this===document?b?null:a:b===this?a:null}else a=null}else a=null;return a},set:function(){},configurable:!0}};\nfunction M(a,b,c){for(var d in b){var e=Object.getOwnPropertyDescriptor(a,d);e&&e.configurable||!e&&c?Object.defineProperty(a,d,b[d]):c&&console.warn(\"Could not define\",d,\"on\",a)}}function xc(a){M(a,sc);M(a,tc);M(a,uc);M(a,wc)}\nfunction yc(){var a=zc.prototype;a.__proto__=DocumentFragment.prototype;M(a,sc,!0);M(a,uc,!0);M(a,wc,!0);Object.defineProperties(a,{nodeType:{value:Node.DOCUMENT_FRAGMENT_NODE,configurable:!0},nodeName:{value:\"#document-fragment\",configurable:!0},nodeValue:{value:null,configurable:!0}});[\"localName\",\"namespaceURI\",\"prefix\"].forEach(function(b){Object.defineProperty(a,b,{value:void 0,configurable:!0})});[\"ownerDocument\",\"baseURI\",\"isConnected\"].forEach(function(b){Object.defineProperty(a,b,{get:function(){return this.host[b]},\nconfigurable:!0})})}var Ac=z.K?function(){}:function(a){var b=x(a);b.ua||(b.ua=!0,M(a,sc,!0),M(a,tc,!0))},Bc=z.K?function(){}:function(a){x(a).Fa||(M(a,uc,!0),M(a,vc,!0))};var Cc=L.childNodes;function Dc(a,b,c){Ac(a);c=c||null;var d=x(a),e=x(b),f=c?x(c):null;d.previousSibling=c?f.previousSibling:b.lastChild;if(f=y(d.previousSibling))f.nextSibling=a;if(f=y(d.nextSibling=c))f.previousSibling=a;d.parentNode=b;c?c===e.firstChild&&(e.firstChild=a):(e.lastChild=a,e.firstChild||(e.firstChild=a));e.childNodes=null}\nfunction Ec(a){var b=x(a);if(void 0===b.firstChild){b.childNodes=null;var c=Cc(a);b.firstChild=c[0]||null;b.lastChild=c[c.length-1]||null;Bc(a);for(b=0;b<c.length;b++){var d=c[b],e=x(d);e.parentNode=a;e.nextSibling=c[b+1]||null;e.previousSibling=c[b-1]||null;Ac(d)}}};var Fc=L.parentNode;\nfunction Jc(a,b,c){if(b===a)throw Error(\"Failed to execute 'appendChild' on 'Node': The new child element contains the parent.\");if(c){var d=y(c);d=d&&d.parentNode;if(void 0!==d&&d!==a||void 0===d&&Fc(c)!==a)throw Error(\"Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.\");}if(c===b)return b;b.parentNode&&Kc(b.parentNode,b);d=!0;var e,f;if(!b.__noInsertionPoint){if(f=e=hb(a)){var g;\"slot\"===b.localName?g=[b]:b.querySelectorAll&&\n(g=b.querySelectorAll(\"slot\"));f=g&&g.length?g:void 0}if(f){g=e;var h=f;g.a=g.a||[];g.o=g.o||[];g.w=g.w||{};g.a.push.apply(g.a,h instanceof Array?h:Aa(ja(h)))}}(\"slot\"===a.localName||f)&&(e=e||hb(a))&&Lc(e);if(gb(a)){e=c;Bc(a);f=x(a);void 0!==f.firstChild&&(f.childNodes=null);if(b.nodeType===Node.DOCUMENT_FRAGMENT_NODE){f=b.childNodes;for(g=0;g<f.length;g++)Dc(f[g],a,e);e=x(b);f=void 0!==e.firstChild?null:void 0;e.firstChild=e.lastChild=f;e.childNodes=f}else Dc(b,a,e);e=y(a);Mc(a)?(Lc(e.root),d=!1):\ne.root&&(d=!1)}d?(d=C(a)?a.host:a,c?(c=Nc(c),E.insertBefore.call(d,b,c)):E.appendChild.call(d,b)):b.ownerDocument!==a.ownerDocument&&a.ownerDocument.adoptNode(b);Oc(a,b);return b}\nfunction Kc(a,b){if(b.parentNode!==a)throw Error(\"The node to be removed is not a child of this node: \"+b);var c=hb(b),d=y(a);if(gb(a)){var e=x(b),f=x(a);b===f.firstChild&&(f.firstChild=e.nextSibling);b===f.lastChild&&(f.lastChild=e.previousSibling);var g=e.previousSibling,h=e.nextSibling;g&&(x(g).nextSibling=h);h&&(x(h).previousSibling=g);e.parentNode=e.previousSibling=e.nextSibling=void 0;void 0!==f.childNodes&&(f.childNodes=null);if(Mc(a)){Lc(d.root);var k=!0}}Pc(b);if(c){(e=a&&\"slot\"===a.localName)&&\n(k=!0);if(c.o){Qc(c);f=c.w;for(A in f)for(g=f[A],h=0;h<g.length;h++){var m=g[h];if(vb(b,m)){g.splice(h,1);var n=c.o.indexOf(m);0<=n&&c.o.splice(n,1);h--;n=y(m);if(m=n.N)for(var p=0;p<m.length;p++){var H=m[p],B=Rc(H);B&&E.removeChild.call(B,H)}n.N=[];n.assignedNodes=[];n=!0}}var A=n}else A=void 0;(A||e)&&Lc(c)}k||(k=C(a)?a.host:a,(!d.root&&\"slot\"!==b.localName||k===Fc(b))&&E.removeChild.call(k,b));Oc(a,null,b);return b}\nfunction Pc(a){var b=y(a);if(b&&void 0!==b.V){b=a.childNodes;for(var c=0,d=b.length,e;c<d&&(e=b[c]);c++)Pc(e)}if(a=y(a))a.V=void 0}function Nc(a){var b=a;a&&\"slot\"===a.localName&&(b=(b=(b=y(a))&&b.N)&&b.length?b[0]:Nc(a.nextSibling));return b}function Mc(a){return(a=(a=y(a))&&a.root)&&Sc(a)}\nfunction Tc(a,b){if(\"slot\"===b)a=a.parentNode,Mc(a)&&Lc(y(a).root);else if(\"slot\"===a.localName&&\"name\"===b&&(b=hb(a))){if(b.o){Qc(b);var c=a.Ia,d=Uc(a);if(d!==c){c=b.w[c];var e=c.indexOf(a);0<=e&&c.splice(e,1);c=b.w[d]||(b.w[d]=[]);c.push(a);1<c.length&&(b.w[d]=Vc(c))}}Lc(b)}}function Oc(a,b,c){if(a=(a=y(a))&&a.S)b&&a.addedNodes.push(b),c&&a.removedNodes.push(c),Cb(a)}\nfunction Wc(a){if(a&&a.nodeType){var b=x(a),c=b.V;void 0===c&&(C(a)?(c=a,b.V=c):(c=(c=a.parentNode)?Wc(c):a,E.contains.call(document.documentElement,a)&&(b.V=c)));return c}}function Xc(a,b,c){var d=[];Yc(a.childNodes,b,c,d);return d}function Yc(a,b,c,d){for(var e=0,f=a.length,g;e<f&&(g=a[e]);e++){var h;if(h=g.nodeType===Node.ELEMENT_NODE){h=g;var k=b,m=c,n=d,p=k(h);p&&n.push(h);m&&m(p)?h=p:(Yc(h.childNodes,k,m,n),h=void 0)}if(h)break}}var Zc=null;\nfunction $c(a,b,c){Zc||(Zc=window.ShadyCSS&&window.ShadyCSS.ScopingShim);Zc&&\"class\"===b?Zc.setElementClass(a,c):(E.setAttribute.call(a,b,c),Tc(a,b))}function ad(a,b){if(a.ownerDocument!==document||\"template\"===a.localName)return E.importNode.call(document,a,b);var c=E.importNode.call(document,a,!1);if(b){a=a.childNodes;b=0;for(var d;b<a.length;b++)d=ad(a[b],!0),c.appendChild(d)}return c};var bd=\"__eventWrappers\"+Date.now(),cd=function(){var a=Object.getOwnPropertyDescriptor(Event.prototype,\"composed\");return a?function(b){return a.get.call(b)}:null}(),dd={blur:!0,focus:!0,focusin:!0,focusout:!0,click:!0,dblclick:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,wheel:!0,beforeinput:!0,input:!0,keydown:!0,keyup:!0,compositionstart:!0,compositionupdate:!0,compositionend:!0,touchstart:!0,touchend:!0,touchmove:!0,touchcancel:!0,pointerover:!0,\npointerenter:!0,pointerdown:!0,pointermove:!0,pointerup:!0,pointercancel:!0,pointerout:!0,pointerleave:!0,gotpointercapture:!0,lostpointercapture:!0,dragstart:!0,drag:!0,dragenter:!0,dragleave:!0,dragover:!0,drop:!0,dragend:!0,DOMActivate:!0,DOMFocusIn:!0,DOMFocusOut:!0,keypress:!0},ed={DOMAttrModified:!0,DOMAttributeNameChanged:!0,DOMCharacterDataModified:!0,DOMElementNameChanged:!0,DOMNodeInserted:!0,DOMNodeInsertedIntoDocument:!0,DOMNodeRemoved:!0,DOMNodeRemovedFromDocument:!0,DOMSubtreeModified:!0};\nfunction fd(a,b){var c=[],d=a;for(a=a===window?window:a.getRootNode();d;)c.push(d),d=d.assignedSlot?d.assignedSlot:d.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&d.host&&(b||d!==a)?d.host:d.parentNode;c[c.length-1]===document&&c.push(window);return c}function gd(a,b){if(!C)return a;a=fd(a,!0);for(var c=0,d,e,f,g;c<b.length;c++)if(d=b[c],f=d===window?window:d.getRootNode(),f!==e&&(g=a.indexOf(f),e=f),!C(f)||-1<g)return d}\nvar hd={get composed(){void 0===this.Y&&(cd?this.Y=cd(this):!1!==this.isTrusted&&(this.Y=dd[this.type]));return this.Y||!1},composedPath:function(){this.sa||(this.sa=fd(this.__target,this.composed));return this.sa},get target(){return gd(this.currentTarget||this.__previousCurrentTarget,this.composedPath())},get relatedTarget(){if(!this.ja)return null;this.va||(this.va=fd(this.ja,!0));return gd(this.currentTarget||this.__previousCurrentTarget,this.va)},stopPropagation:function(){Event.prototype.stopPropagation.call(this);\nthis.ia=!0},stopImmediatePropagation:function(){Event.prototype.stopImmediatePropagation.call(this);this.ia=this.Ea=!0}};function id(a){function b(b,d){b=new a(b,d);b.Y=d&&!!d.composed;return b}mb(b,a);b.prototype=a.prototype;return b}var jd={focus:!0,blur:!0};function kd(a){return a.__target!==a.target||a.ja!==a.relatedTarget}\nfunction ld(a,b,c){if(c=b.__handlers&&b.__handlers[a.type]&&b.__handlers[a.type][c])for(var d=0,e;(e=c[d])&&(!kd(a)||a.target!==a.relatedTarget)&&(e.call(b,a),!a.Ea);d++);}\nfunction md(a){var b=a.composedPath();Object.defineProperty(a,\"currentTarget\",{get:function(){return d},configurable:!0});for(var c=b.length-1;0<=c;c--){var d=b[c];ld(a,d,\"capture\");if(a.ia)return}Object.defineProperty(a,\"eventPhase\",{get:function(){return Event.AT_TARGET}});var e;for(c=0;c<b.length;c++){d=b[c];var f=y(d);f=f&&f.root;if(0===c||f&&f===e)if(ld(a,d,\"bubble\"),d!==window&&(e=d.getRootNode()),a.ia)break}}\nfunction nd(a,b,c,d,e,f){for(var g=0;g<a.length;g++){var h=a[g],k=h.type,m=h.capture,n=h.once,p=h.passive;if(b===h.node&&c===k&&d===m&&e===n&&f===p)return g}return-1}\nfunction od(a,b,c){if(b){var d=typeof b;if(\"function\"===d||\"object\"===d)if(\"object\"!==d||b.handleEvent&&\"function\"===typeof b.handleEvent){var e=this instanceof Window?E.fb:E.addEventListener;if(ed[a])return e.call(this,a,b,c);if(c&&\"object\"===typeof c){var f=!!c.capture;var g=!!c.once;var h=!!c.passive}else f=!!c,h=g=!1;var k=c&&c.la||this,m=b[bd];if(m){if(-1<nd(m,k,a,f,g,h))return}else b[bd]=[];m=function(e){g&&this.removeEventListener(a,b,c);e.__target||pd(e);if(k!==this){var f=Object.getOwnPropertyDescriptor(e,\n\"currentTarget\");Object.defineProperty(e,\"currentTarget\",{get:function(){return k},configurable:!0})}e.__previousCurrentTarget=e.currentTarget;if(!C(k)||-1!=e.composedPath().indexOf(k))if(e.composed||-1<e.composedPath().indexOf(k))if(kd(e)&&e.target===e.relatedTarget)e.eventPhase===Event.BUBBLING_PHASE&&e.stopImmediatePropagation();else if(e.eventPhase===Event.CAPTURING_PHASE||e.bubbles||e.target===k||k instanceof Window){var h=\"function\"===d?b.call(k,e):b.handleEvent&&b.handleEvent(e);k!==this&&\n(f?(Object.defineProperty(e,\"currentTarget\",f),f=null):delete e.currentTarget);return h}};b[bd].push({node:k,type:a,capture:f,once:g,passive:h,hb:m});jd[a]?(this.__handlers=this.__handlers||{},this.__handlers[a]=this.__handlers[a]||{capture:[],bubble:[]},this.__handlers[a][f?\"capture\":\"bubble\"].push(m)):e.call(this,a,m,c)}}}\nfunction qd(a,b,c){if(b){var d=this instanceof Window?E.gb:E.removeEventListener;if(ed[a])return d.call(this,a,b,c);if(c&&\"object\"===typeof c){var e=!!c.capture;var f=!!c.once;var g=!!c.passive}else e=!!c,g=f=!1;var h=c&&c.la||this,k=void 0;var m=null;try{m=b[bd]}catch(n){}m&&(f=nd(m,h,a,e,f,g),-1<f&&(k=m.splice(f,1)[0].hb,m.length||(b[bd]=void 0)));d.call(this,a,k||b,c);k&&jd[a]&&this.__handlers&&this.__handlers[a]&&(a=this.__handlers[a][e?\"capture\":\"bubble\"],k=a.indexOf(k),-1<k&&a.splice(k,1))}}\nfunction rd(){for(var a in jd)window.addEventListener(a,function(a){a.__target||(pd(a),md(a))},!0)}function pd(a){a.__target=a.target;a.ja=a.relatedTarget;if(z.K){var b=Object.getPrototypeOf(a);if(!b.hasOwnProperty(\"__patchProto\")){var c=Object.create(b);c.jb=b;kb(c,hd);b.__patchProto=c}a.__proto__=b.__patchProto}else kb(a,hd)}var sd=id(window.Event),td=id(window.CustomEvent),ud=id(window.MouseEvent);\nfunction vd(){window.Event=sd;window.CustomEvent=td;window.MouseEvent=ud;rd();if(!cd&&Object.getOwnPropertyDescriptor(Event.prototype,\"isTrusted\")){var a=function(){var a=new MouseEvent(\"click\",{bubbles:!0,cancelable:!0,composed:!0});this.dispatchEvent(a)};Element.prototype.click?Element.prototype.click=a:HTMLElement.prototype.click&&(HTMLElement.prototype.click=a)}};function wd(a,b){return{index:a,W:[],ba:b}}\nfunction xd(a,b,c,d){var e=0,f=0,g=0,h=0,k=Math.min(b-e,d-f);if(0==e&&0==f)a:{for(g=0;g<k;g++)if(a[g]!==c[g])break a;g=k}if(b==a.length&&d==c.length){h=a.length;for(var m=c.length,n=0;n<k-g&&yd(a[--h],c[--m]);)n++;h=n}e+=g;f+=g;b-=h;d-=h;if(0==b-e&&0==d-f)return[];if(e==b){for(b=wd(e,0);f<d;)b.W.push(c[f++]);return[b]}if(f==d)return[wd(e,b-e)];k=e;g=f;d=d-g+1;h=b-k+1;b=Array(d);for(m=0;m<d;m++)b[m]=Array(h),b[m][0]=m;for(m=0;m<h;m++)b[0][m]=m;for(m=1;m<d;m++)for(n=1;n<h;n++)if(a[k+n-1]===c[g+m-1])b[m][n]=\nb[m-1][n-1];else{var p=b[m-1][n]+1,H=b[m][n-1]+1;b[m][n]=p<H?p:H}k=b.length-1;g=b[0].length-1;d=b[k][g];for(a=[];0<k||0<g;)0==k?(a.push(2),g--):0==g?(a.push(3),k--):(h=b[k-1][g-1],m=b[k-1][g],n=b[k][g-1],p=m<n?m<h?m:h:n<h?n:h,p==h?(h==d?a.push(0):(a.push(1),d=h),k--,g--):p==m?(a.push(3),k--,d=m):(a.push(2),g--,d=n));a.reverse();b=void 0;k=[];for(g=0;g<a.length;g++)switch(a[g]){case 0:b&&(k.push(b),b=void 0);e++;f++;break;case 1:b||(b=wd(e,0));b.ba++;e++;b.W.push(c[f]);f++;break;case 2:b||(b=wd(e,\n0));b.ba++;e++;break;case 3:b||(b=wd(e,0)),b.W.push(c[f]),f++}b&&k.push(b);return k}function yd(a,b){return a===b};var Rc=L.parentNode,zd=L.childNodes,Ad={},Bd=z.deferConnectionCallbacks&&\"loading\"===document.readyState,Cd;function Dd(a){var b=[];do b.unshift(a);while(a=a.parentNode);return b}\nfunction zc(a,b,c){if(a!==Ad)throw new TypeError(\"Illegal constructor\");this.La=\"ShadyRoot\";this.host=b;this.c=c&&c.mode;Ec(b);a=x(b);a.root=this;a.Aa=\"closed\"!==this.c?this:null;a=x(this);a.firstChild=a.lastChild=a.parentNode=a.nextSibling=a.previousSibling=null;a.childNodes=[];this.b=this.aa=!1;this.a=this.w=this.o=null;Lc(this)}function Lc(a){a.aa||(a.aa=!0,zb(function(){return Ed(a)}))}\nfunction Ed(a){for(var b;a;){a.aa&&(b=a);a:{var c=a;a=c.host.getRootNode();if(C(a))for(var d=c.host.childNodes,e=0;e<d.length;e++)if(c=d[e],\"slot\"==c.localName)break a;a=void 0}}b&&b._renderRoot()}\nzc.prototype._renderRoot=function(){var a=Bd;Bd=!0;this.aa=!1;if(this.o){Qc(this);for(var b=0,c;b<this.o.length;b++){c=this.o[b];var d=y(c),e=d.assignedNodes;d.assignedNodes=[];d.N=[];if(d.ma=e)for(d=0;d<e.length;d++){var f=y(e[d]);f.$=f.assignedSlot;f.assignedSlot===c&&(f.assignedSlot=null)}}for(c=this.host.firstChild;c;c=c.nextSibling)Fd(this,c);for(b=0;b<this.o.length;b++){c=this.o[b];e=y(c);if(!e.assignedNodes.length)for(d=c.firstChild;d;d=d.nextSibling)Fd(this,d,c);(d=(d=y(c.parentNode))&&d.root)&&\nSc(d)&&d._renderRoot();Gd(this,e.N,e.assignedNodes);if(d=e.ma){for(f=0;f<d.length;f++)y(d[f]).$=null;e.ma=null;d.length>e.assignedNodes.length&&(e.da=!0)}e.da&&(e.da=!1,Hd(this,c))}b=this.o;c=[];for(e=0;e<b.length;e++)d=b[e].parentNode,(f=y(d))&&f.root||!(0>c.indexOf(d))||c.push(d);for(b=0;b<c.length;b++){e=c[b];d=e===this?this.host:e;f=[];e=e.childNodes;for(var g=0;g<e.length;g++){var h=e[g];if(\"slot\"==h.localName){h=y(h).N;for(var k=0;k<h.length;k++)f.push(h[k])}else f.push(h)}e=void 0;g=zd(d);\nh=xd(f,f.length,g,g.length);for(var m=k=0;k<h.length&&(e=h[k]);k++){for(var n=0,p;n<e.W.length&&(p=e.W[n]);n++)Rc(p)===d&&E.removeChild.call(d,p),g.splice(e.index+m,1);m-=e.ba}for(m=0;m<h.length&&(e=h[m]);m++)for(k=g[e.index],n=e.index;n<e.index+e.ba;n++)p=f[n],E.insertBefore.call(d,p,k),g.splice(n,0,p)}}if(!this.b)for(p=this.host.childNodes,c=0,b=p.length;c<b;c++)e=p[c],d=y(e),Rc(e)!==this.host||\"slot\"!==e.localName&&d.assignedSlot||E.removeChild.call(this.host,e);this.b=!0;Bd=a;Cd&&Cd()};\nfunction Fd(a,b,c){var d=x(b),e=d.$;d.$=null;c||(c=(a=a.w[b.slot||\"__catchall\"])&&a[0]);c?(x(c).assignedNodes.push(b),d.assignedSlot=c):d.assignedSlot=void 0;e!==d.assignedSlot&&d.assignedSlot&&(x(d.assignedSlot).da=!0)}function Gd(a,b,c){for(var d=0,e;d<c.length&&(e=c[d]);d++)if(\"slot\"==e.localName){var f=y(e).assignedNodes;f&&f.length&&Gd(a,b,f)}else b.push(c[d])}function Hd(a,b){E.dispatchEvent.call(b,new Event(\"slotchange\"));b=y(b);b.assignedSlot&&Hd(a,b.assignedSlot)}\nfunction Qc(a){if(a.a&&a.a.length){for(var b=a.a,c,d=0;d<b.length;d++){var e=b[d];Ec(e);Ec(e.parentNode);var f=Uc(e);a.w[f]?(c=c||{},c[f]=!0,a.w[f].push(e)):a.w[f]=[e];a.o.push(e)}if(c)for(var g in c)a.w[g]=Vc(a.w[g]);a.a=[]}}function Uc(a){var b=a.name||a.getAttribute(\"name\")||\"__catchall\";return a.Ia=b}function Vc(a){return a.sort(function(a,c){a=Dd(a);for(var b=Dd(c),e=0;e<a.length;e++){c=a[e];var f=b[e];if(c!==f)return a=Array.from(c.parentNode.childNodes),a.indexOf(c)-a.indexOf(f)}})}\nfunction Sc(a){Qc(a);return!(!a.o||!a.o.length)}\nif(window.customElements&&z.oa){var Id=new Map;Cd=function(){var a=Array.from(Id);Id.clear();a=ja(a);for(var b=a.next();!b.done;b=a.next()){b=ja(b.value);var c=b.next().value;b.next().value?c.Ga():c.Ha()}};Bd&&document.addEventListener(\"readystatechange\",function(){Bd=!1;Cd()},{once:!0});var Jd=function(a,b,c){var d=0,e=\"__isConnected\"+d++;if(b||c)a.prototype.connectedCallback=a.prototype.Ga=function(){Bd?Id.set(this,!0):this[e]||(this[e]=!0,b&&b.call(this))},a.prototype.disconnectedCallback=a.prototype.Ha=\nfunction(){Bd?this.isConnected||Id.set(this,!1):this[e]&&(this[e]=!1,c&&c.call(this))};return a},define=window.customElements.define;Object.defineProperty(window.CustomElementRegistry.prototype,\"define\",{value:function(a,b){var c=b.prototype.connectedCallback,d=b.prototype.disconnectedCallback;define.call(window.customElements,a,Jd(b,c,d));b.prototype.connectedCallback=c;b.prototype.disconnectedCallback=d}})};function Kd(a){var b=a.getRootNode();C(b)&&Ed(b);return(a=y(a))&&a.assignedSlot||null}\nvar Ld={addEventListener:od.bind(window),removeEventListener:qd.bind(window)},Md={addEventListener:od,removeEventListener:qd,appendChild:function(a){return Jc(this,a)},insertBefore:function(a,b){return Jc(this,a,b)},removeChild:function(a){return Kc(this,a)},replaceChild:function(a,b){Jc(this,a,b);Kc(this,b);return a},cloneNode:function(a){if(\"template\"==this.localName)var b=E.cloneNode.call(this,a);else if(b=E.cloneNode.call(this,!1),a&&b.nodeType!==Node.ATTRIBUTE_NODE){a=this.childNodes;for(var c=\n0,d;c<a.length;c++)d=a[c].cloneNode(!0),b.appendChild(d)}return b},getRootNode:function(){return Wc(this)},contains:function(a){return vb(this,a)},dispatchEvent:function(a){Ab();return E.dispatchEvent.call(this,a)}};\nObject.defineProperties(Md,{isConnected:{get:function(){if(qc&&qc.call(this))return!0;if(this.nodeType==Node.DOCUMENT_FRAGMENT_NODE)return!1;var a=this.ownerDocument;if(rb){if(E.contains.call(a,this))return!0}else if(a.documentElement&&E.contains.call(a.documentElement,this))return!0;for(a=this;a&&!(a instanceof Document);)a=a.parentNode||(C(a)?a.host:void 0);return!!(a&&a instanceof Document)},configurable:!0}});\nvar Nd={get assignedSlot(){return Kd(this)}},Od={querySelector:function(a){return Xc(this,function(b){return jb.call(b,a)},function(a){return!!a})[0]||null},querySelectorAll:function(a,b){if(b){b=Array.prototype.slice.call(E.querySelectorAll.call(this,a));var c=this.getRootNode();return b.filter(function(a){return a.getRootNode()==c})}return Xc(this,function(b){return jb.call(b,a)})}},Pd={assignedNodes:function(a){if(\"slot\"===this.localName){var b=this.getRootNode();C(b)&&Ed(b);return(b=y(this))?\n(a&&a.flatten?b.N:b.assignedNodes)||[]:[]}}},Qd=lb({setAttribute:function(a,b){$c(this,a,b)},removeAttribute:function(a){E.removeAttribute.call(this,a);Tc(this,a)},attachShadow:function(a){if(!this)throw\"Must provide a host.\";if(!a)throw\"Not enough arguments.\";return new zc(Ad,this,a)},get slot(){return this.getAttribute(\"slot\")},set slot(a){$c(this,\"slot\",a)},get assignedSlot(){return Kd(this)}},Od,Pd);Object.defineProperties(Qd,vc);\nvar Rd=lb({importNode:function(a,b){return ad(a,b)},getElementById:function(a){return Xc(this,function(b){return b.id==a},function(a){return!!a})[0]||null}},Od);Object.defineProperties(Rd,{_activeElement:wc.activeElement});\nfor(var Sd=HTMLElement.prototype.blur,Td={blur:function(){var a=y(this);(a=(a=a&&a.root)&&a.activeElement)?a.blur():Sd.call(this)}},Ud={},Vd=ja(Object.getOwnPropertyNames(Document.prototype)),Wd=Vd.next();!Wd.done;Ud={H:Ud.H},Wd=Vd.next())Ud.H=Wd.value,\"on\"===Ud.H.substring(0,2)&&Object.defineProperty(Td,Ud.H,{set:function(a){return function(b){var c=x(this),d=a.H.substring(2);c.Z[a.H]&&this.removeEventListener(d,c.Z[a.H]);this.addEventListener(d,b,{});c.Z[a.H]=b}}(Ud),get:function(a){return function(){var b=\ny(this);return b&&b.Z[a.H]}}(Ud),configurable:!0});var Xd={addEventListener:function(a,b,c){\"object\"!==typeof c&&(c={capture:!!c});c.la=this;this.host.addEventListener(a,b,c)},removeEventListener:function(a,b,c){\"object\"!==typeof c&&(c={capture:!!c});c.la=this;this.host.removeEventListener(a,b,c)},getElementById:function(a){return Xc(this,function(b){return b.id==a},function(a){return!!a})[0]||null}};\nfunction N(a,b){for(var c=Object.getOwnPropertyNames(b),d=0;d<c.length;d++){var e=c[d],f=Object.getOwnPropertyDescriptor(b,e);f.value?a[e]=f.value:Object.defineProperty(a,e,f)}};if(z.oa){var ShadyDOM={inUse:z.oa,patch:function(a){Bc(a);Ac(a);return a},isShadyRoot:C,enqueue:zb,flush:Ab,settings:z,filterMutations:Fb,observeChildren:Db,unobserveChildren:Eb,nativeMethods:E,nativeTree:L,deferConnectionCallbacks:z.deferConnectionCallbacks};window.ShadyDOM=ShadyDOM;vd();var Yd=window.customElements&&window.customElements.nativeHTMLElement||HTMLElement;N(zc.prototype,Xd);N(window.Node.prototype,Md);N(window.Window.prototype,Ld);N(window.Text.prototype,Nd);N(window.DocumentFragment.prototype,\nOd);N(window.Element.prototype,Qd);N(window.Document.prototype,Rd);window.HTMLSlotElement&&N(window.HTMLSlotElement.prototype,Pd);N(Yd.prototype,Td);z.K&&(xc(window.Node.prototype),xc(window.Text.prototype),xc(window.DocumentFragment.prototype),xc(window.Element.prototype),xc(Yd.prototype),xc(window.Document.prototype),window.HTMLSlotElement&&xc(window.HTMLSlotElement.prototype));yc();window.ShadowRoot=zc};var Zd=new Set(\"annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph\".split(\" \"));function $d(a){var b=Zd.has(a);a=/^[a-z][.0-9_a-z]*-[\\-.0-9_a-z]*$/.test(a);return!b&&a}function O(a){var b=a.isConnected;if(void 0!==b)return b;for(;a&&!(a.__CE_isImportDocument||a instanceof Document);)a=a.parentNode||(window.ShadowRoot&&a instanceof ShadowRoot?a.host:void 0);return!(!a||!(a.__CE_isImportDocument||a instanceof Document))}\nfunction ae(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null}\nfunction be(a,b,c){c=void 0===c?new Set:c;for(var d=a;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;b(e);var f=e.localName;if(\"link\"===f&&\"import\"===e.getAttribute(\"rel\")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)be(d,b,c);d=ae(a,e);continue}else if(\"template\"===f){d=ae(a,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)be(e,b,c)}d=d.firstChild?d.firstChild:ae(a,d)}}function P(a,b,c){a[b]=c};function ce(){this.a=new Map;this.m=new Map;this.f=[];this.c=!1}function de(a,b,c){a.a.set(b,c);a.m.set(c.constructor,c)}function ee(a,b){a.c=!0;a.f.push(b)}function fe(a,b){a.c&&be(b,function(b){return a.b(b)})}ce.prototype.b=function(a){if(this.c&&!a.__CE_patched){a.__CE_patched=!0;for(var b=0;b<this.f.length;b++)this.f[b](a)}};function Q(a,b){var c=[];be(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state?a.connectedCallback(d):ge(a,d)}}\nfunction R(a,b){var c=[];be(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state&&a.disconnectedCallback(d)}}\nfunction S(a,b,c){c=void 0===c?{}:c;var d=c.cb||new Set,e=c.ha||function(b){return ge(a,b)},f=[];be(b,function(b){if(\"link\"===b.localName&&\"import\"===b.getAttribute(\"rel\")){var c=b.import;c instanceof Node&&(c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0);c&&\"complete\"===c.readyState?c.__CE_documentLoadHandled=!0:b.addEventListener(\"load\",function(){var c=b.import;if(!c.__CE_documentLoadHandled){c.__CE_documentLoadHandled=!0;var f=new Set(d);f.delete(c);S(a,c,{cb:f,ha:e})}})}else f.push(b)},d);\nif(a.c)for(b=0;b<f.length;b++)a.b(f[b]);for(b=0;b<f.length;b++)e(f[b])}\nfunction ge(a,b){if(void 0===b.__CE_state){var c=b.ownerDocument;if(c.defaultView||c.__CE_isImportDocument&&c.__CE_hasRegistry)if(c=a.a.get(b.localName)){c.constructionStack.push(b);var d=c.constructor;try{try{if(new d!==b)throw Error(\"The custom element constructor did not produce the element being upgraded.\");}finally{c.constructionStack.pop()}}catch(g){throw b.__CE_state=2,g;}b.__CE_state=1;b.__CE_definition=c;if(c.attributeChangedCallback)for(c=c.observedAttributes,d=0;d<c.length;d++){var e=c[d],\nf=b.getAttribute(e);null!==f&&a.attributeChangedCallback(b,e,null,f,null)}O(b)&&a.connectedCallback(b)}}}ce.prototype.connectedCallback=function(a){var b=a.__CE_definition;b.connectedCallback&&b.connectedCallback.call(a)};ce.prototype.disconnectedCallback=function(a){var b=a.__CE_definition;b.disconnectedCallback&&b.disconnectedCallback.call(a)};\nce.prototype.attributeChangedCallback=function(a,b,c,d,e){var f=a.__CE_definition;f.attributeChangedCallback&&-1<f.observedAttributes.indexOf(b)&&f.attributeChangedCallback.call(a,b,c,d,e)};function he(a){var b=document;this.b=a;this.a=b;this.P=void 0;S(this.b,this.a);\"loading\"===this.a.readyState&&(this.P=new MutationObserver(this.c.bind(this)),this.P.observe(this.a,{childList:!0,subtree:!0}))}function ie(a){a.P&&a.P.disconnect()}he.prototype.c=function(a){var b=this.a.readyState;\"interactive\"!==b&&\"complete\"!==b||ie(this);for(b=0;b<a.length;b++)for(var c=a[b].addedNodes,d=0;d<c.length;d++)S(this.b,c[d])};function je(){var a=this;this.a=this.A=void 0;this.b=new Promise(function(b){a.a=b;a.A&&b(a.A)})}je.prototype.resolve=function(a){if(this.A)throw Error(\"Already resolved.\");this.A=a;this.a&&this.a(a)};function T(a){this.c=!1;this.a=a;this.G=new Map;this.f=function(a){return a()};this.b=!1;this.m=[];this.fa=new he(a)}r=T.prototype;\nr.define=function(a,b){var c=this;if(!(b instanceof Function))throw new TypeError(\"Custom element constructors must be functions.\");if(!$d(a))throw new SyntaxError(\"The element name '\"+a+\"' is not valid.\");if(this.a.a.get(a))throw Error(\"A custom element with name '\"+a+\"' has already been defined.\");if(this.c)throw Error(\"A custom element is already being defined.\");this.c=!0;try{var d=function(a){var b=e[a];if(void 0!==b&&!(b instanceof Function))throw Error(\"The '\"+a+\"' callback must be a function.\");\nreturn b},e=b.prototype;if(!(e instanceof Object))throw new TypeError(\"The custom element constructor's prototype is not an object.\");var f=d(\"connectedCallback\");var g=d(\"disconnectedCallback\");var h=d(\"adoptedCallback\");var k=d(\"attributeChangedCallback\");var m=b.observedAttributes||[]}catch(n){return}finally{this.c=!1}b={localName:a,constructor:b,connectedCallback:f,disconnectedCallback:g,adoptedCallback:h,attributeChangedCallback:k,observedAttributes:m,constructionStack:[]};de(this.a,a,b);this.m.push(b);\nthis.b||(this.b=!0,this.f(function(){return ke(c)}))};r.ha=function(a){S(this.a,a)};function ke(a){if(!1!==a.b){a.b=!1;for(var b=a.m,c=[],d=new Map,e=0;e<b.length;e++)d.set(b[e].localName,[]);S(a.a,document,{ha:function(b){if(void 0===b.__CE_state){var e=b.localName,f=d.get(e);f?f.push(b):a.a.a.get(e)&&c.push(b)}}});for(e=0;e<c.length;e++)ge(a.a,c[e]);for(;0<b.length;){var f=b.shift();e=f.localName;f=d.get(f.localName);for(var g=0;g<f.length;g++)ge(a.a,f[g]);(e=a.G.get(e))&&e.resolve(void 0)}}}\nr.get=function(a){if(a=this.a.a.get(a))return a.constructor};r.Da=function(a){if(!$d(a))return Promise.reject(new SyntaxError(\"'\"+a+\"' is not a valid custom element name.\"));var b=this.G.get(a);if(b)return b.b;b=new je;this.G.set(a,b);this.a.a.get(a)&&!this.m.some(function(b){return b.localName===a})&&b.resolve(void 0);return b.b};r.Za=function(a){ie(this.fa);var b=this.f;this.f=function(c){return a(function(){return b(c)})}};window.CustomElementRegistry=T;T.prototype.define=T.prototype.define;\nT.prototype.upgrade=T.prototype.ha;T.prototype.get=T.prototype.get;T.prototype.whenDefined=T.prototype.Da;T.prototype.polyfillWrapFlushCallback=T.prototype.Za;var le=window.Document.prototype.createElement,me=window.Document.prototype.createElementNS,ne=window.Document.prototype.importNode,oe=window.Document.prototype.prepend,pe=window.Document.prototype.append,qe=window.DocumentFragment.prototype.prepend,re=window.DocumentFragment.prototype.append,se=window.Node.prototype.cloneNode,te=window.Node.prototype.appendChild,ue=window.Node.prototype.insertBefore,ve=window.Node.prototype.removeChild,we=window.Node.prototype.replaceChild,xe=Object.getOwnPropertyDescriptor(window.Node.prototype,\n\"textContent\"),ye=window.Element.prototype.attachShadow,ze=Object.getOwnPropertyDescriptor(window.Element.prototype,\"innerHTML\"),Ae=window.Element.prototype.getAttribute,Be=window.Element.prototype.setAttribute,Ce=window.Element.prototype.removeAttribute,De=window.Element.prototype.getAttributeNS,Ee=window.Element.prototype.setAttributeNS,Fe=window.Element.prototype.removeAttributeNS,Ge=window.Element.prototype.insertAdjacentElement,He=window.Element.prototype.insertAdjacentHTML,Ie=window.Element.prototype.prepend,\nJe=window.Element.prototype.append,Ke=window.Element.prototype.before,Le=window.Element.prototype.after,Me=window.Element.prototype.replaceWith,Ne=window.Element.prototype.remove,Oe=window.HTMLElement,Pe=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,\"innerHTML\"),Qe=window.HTMLElement.prototype.insertAdjacentElement,Re=window.HTMLElement.prototype.insertAdjacentHTML;var Se=new function(){};function Te(){var a=Ue;window.HTMLElement=function(){function b(){var b=this.constructor,d=a.m.get(b);if(!d)throw Error(\"The custom element being constructed was not registered with `customElements`.\");var e=d.constructionStack;if(0===e.length)return e=le.call(document,d.localName),Object.setPrototypeOf(e,b.prototype),e.__CE_state=1,e.__CE_definition=d,a.b(e),e;d=e.length-1;var f=e[d];if(f===Se)throw Error(\"The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.\");\ne[d]=Se;Object.setPrototypeOf(f,b.prototype);a.b(f);return f}b.prototype=Oe.prototype;Object.defineProperty(b.prototype,\"constructor\",{writable:!0,configurable:!0,enumerable:!1,value:b});return b}()};function Ve(a,b,c){function d(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e]=arguments[e];e=[];for(var f=[],m=0;m<d.length;m++){var n=d[m];n instanceof Element&&O(n)&&f.push(n);if(n instanceof DocumentFragment)for(n=n.firstChild;n;n=n.nextSibling)e.push(n);else e.push(n)}b.apply(this,d);for(d=0;d<f.length;d++)R(a,f[d]);if(O(this))for(d=0;d<e.length;d++)f=e[d],f instanceof Element&&Q(a,f)}}void 0!==c.ga&&(b.prepend=d(c.ga));void 0!==c.append&&(b.append=d(c.append))};function We(){var a=Ue;P(Document.prototype,\"createElement\",function(b){if(this.__CE_hasRegistry){var c=a.a.get(b);if(c)return new c.constructor}b=le.call(this,b);a.b(b);return b});P(Document.prototype,\"importNode\",function(b,c){b=ne.call(this,b,c);this.__CE_hasRegistry?S(a,b):fe(a,b);return b});P(Document.prototype,\"createElementNS\",function(b,c){if(this.__CE_hasRegistry&&(null===b||\"http://www.w3.org/1999/xhtml\"===b)){var d=a.a.get(c);if(d)return new d.constructor}b=me.call(this,b,c);a.b(b);return b});\nVe(a,Document.prototype,{ga:oe,append:pe})};function Xe(){function a(a,d){Object.defineProperty(a,\"textContent\",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(a){if(this.nodeType===Node.TEXT_NODE)d.set.call(this,a);else{var c=void 0;if(this.firstChild){var e=this.childNodes,h=e.length;if(0<h&&O(this)){c=Array(h);for(var k=0;k<h;k++)c[k]=e[k]}}d.set.call(this,a);if(c)for(a=0;a<c.length;a++)R(b,c[a])}}})}var b=Ue;P(Node.prototype,\"insertBefore\",function(a,d){if(a instanceof DocumentFragment){var c=Array.prototype.slice.apply(a.childNodes);\na=ue.call(this,a,d);if(O(this))for(d=0;d<c.length;d++)Q(b,c[d]);return a}c=O(a);d=ue.call(this,a,d);c&&R(b,a);O(this)&&Q(b,a);return d});P(Node.prototype,\"appendChild\",function(a){if(a instanceof DocumentFragment){var c=Array.prototype.slice.apply(a.childNodes);a=te.call(this,a);if(O(this))for(var e=0;e<c.length;e++)Q(b,c[e]);return a}c=O(a);e=te.call(this,a);c&&R(b,a);O(this)&&Q(b,a);return e});P(Node.prototype,\"cloneNode\",function(a){a=se.call(this,a);this.ownerDocument.__CE_hasRegistry?S(b,a):\nfe(b,a);return a});P(Node.prototype,\"removeChild\",function(a){var c=O(a),e=ve.call(this,a);c&&R(b,a);return e});P(Node.prototype,\"replaceChild\",function(a,d){if(a instanceof DocumentFragment){var c=Array.prototype.slice.apply(a.childNodes);a=we.call(this,a,d);if(O(this))for(R(b,d),d=0;d<c.length;d++)Q(b,c[d]);return a}c=O(a);var f=we.call(this,a,d),g=O(this);g&&R(b,d);c&&R(b,a);g&&Q(b,a);return f});xe&&xe.get?a(Node.prototype,xe):ee(b,function(b){a(b,{enumerable:!0,configurable:!0,get:function(){for(var a=\n[],b=0;b<this.childNodes.length;b++)a.push(this.childNodes[b].textContent);return a.join(\"\")},set:function(a){for(;this.firstChild;)ve.call(this,this.firstChild);te.call(this,document.createTextNode(a))}})})};function Ye(a){function b(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e]=arguments[e];e=[];for(var h=[],k=0;k<d.length;k++){var m=d[k];m instanceof Element&&O(m)&&h.push(m);if(m instanceof DocumentFragment)for(m=m.firstChild;m;m=m.nextSibling)e.push(m);else e.push(m)}b.apply(this,d);for(d=0;d<h.length;d++)R(a,h[d]);if(O(this))for(d=0;d<e.length;d++)h=e[d],h instanceof Element&&Q(a,h)}}var c=Element.prototype;void 0!==Ke&&(c.before=b(Ke));void 0!==Ke&&(c.after=b(Le));void 0!==Me&&\nP(c,\"replaceWith\",function(b){for(var c=[],d=0;d<arguments.length;++d)c[d]=arguments[d];d=[];for(var g=[],h=0;h<c.length;h++){var k=c[h];k instanceof Element&&O(k)&&g.push(k);if(k instanceof DocumentFragment)for(k=k.firstChild;k;k=k.nextSibling)d.push(k);else d.push(k)}h=O(this);Me.apply(this,c);for(c=0;c<g.length;c++)R(a,g[c]);if(h)for(R(a,this),c=0;c<d.length;c++)g=d[c],g instanceof Element&&Q(a,g)});void 0!==Ne&&P(c,\"remove\",function(){var b=O(this);Ne.call(this);b&&R(a,this)})};function Ze(){function a(a,b){Object.defineProperty(a,\"innerHTML\",{enumerable:b.enumerable,configurable:!0,get:b.get,set:function(a){var c=this,e=void 0;O(this)&&(e=[],be(this,function(a){a!==c&&e.push(a)}));b.set.call(this,a);if(e)for(var f=0;f<e.length;f++){var g=e[f];1===g.__CE_state&&d.disconnectedCallback(g)}this.ownerDocument.__CE_hasRegistry?S(d,this):fe(d,this);return a}})}function b(a,b){P(a,\"insertAdjacentElement\",function(a,c){var e=O(c);a=b.call(this,a,c);e&&R(d,c);O(a)&&Q(d,c);return a})}\nfunction c(a,b){function c(a,b){for(var c=[];a!==b;a=a.nextSibling)c.push(a);for(b=0;b<c.length;b++)S(d,c[b])}P(a,\"insertAdjacentHTML\",function(a,d){a=a.toLowerCase();if(\"beforebegin\"===a){var e=this.previousSibling;b.call(this,a,d);c(e||this.parentNode.firstChild,this)}else if(\"afterbegin\"===a)e=this.firstChild,b.call(this,a,d),c(this.firstChild,e);else if(\"beforeend\"===a)e=this.lastChild,b.call(this,a,d),c(e||this.firstChild,null);else if(\"afterend\"===a)e=this.nextSibling,b.call(this,a,d),c(this.nextSibling,\ne);else throw new SyntaxError(\"The value provided (\"+String(a)+\") is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.\");})}var d=Ue;ye&&P(Element.prototype,\"attachShadow\",function(a){return this.__CE_shadowRoot=a=ye.call(this,a)});ze&&ze.get?a(Element.prototype,ze):Pe&&Pe.get?a(HTMLElement.prototype,Pe):ee(d,function(b){a(b,{enumerable:!0,configurable:!0,get:function(){return se.call(this,!0).innerHTML},set:function(a){var b=\"template\"===this.localName,c=b?this.content:this,d=me.call(document,\nthis.namespaceURI,this.localName);for(d.innerHTML=a;0<c.childNodes.length;)ve.call(c,c.childNodes[0]);for(a=b?d.content:d;0<a.childNodes.length;)te.call(c,a.childNodes[0])}})});P(Element.prototype,\"setAttribute\",function(a,b){if(1!==this.__CE_state)return Be.call(this,a,b);var c=Ae.call(this,a);Be.call(this,a,b);b=Ae.call(this,a);d.attributeChangedCallback(this,a,c,b,null)});P(Element.prototype,\"setAttributeNS\",function(a,b,c){if(1!==this.__CE_state)return Ee.call(this,a,b,c);var e=De.call(this,a,\nb);Ee.call(this,a,b,c);c=De.call(this,a,b);d.attributeChangedCallback(this,b,e,c,a)});P(Element.prototype,\"removeAttribute\",function(a){if(1!==this.__CE_state)return Ce.call(this,a);var b=Ae.call(this,a);Ce.call(this,a);null!==b&&d.attributeChangedCallback(this,a,b,null,null)});P(Element.prototype,\"removeAttributeNS\",function(a,b){if(1!==this.__CE_state)return Fe.call(this,a,b);var c=De.call(this,a,b);Fe.call(this,a,b);var e=De.call(this,a,b);c!==e&&d.attributeChangedCallback(this,b,c,e,a)});Qe?b(HTMLElement.prototype,\nQe):Ge?b(Element.prototype,Ge):console.warn(\"Custom Elements: `Element#insertAdjacentElement` was not patched.\");Re?c(HTMLElement.prototype,Re):He?c(Element.prototype,He):console.warn(\"Custom Elements: `Element#insertAdjacentHTML` was not patched.\");Ve(d,Element.prototype,{ga:Ie,append:Je});Ye(d)};var $e=window.customElements;if(!$e||$e.forcePolyfill||\"function\"!=typeof $e.define||\"function\"!=typeof $e.get){var Ue=new ce;Te();We();Ve(Ue,DocumentFragment.prototype,{ga:qe,append:re});Xe();Ze();document.__CE_hasRegistry=!0;var customElements=new T(Ue);Object.defineProperty(window,\"customElements\",{configurable:!0,enumerable:!0,value:customElements})};function af(){this.end=this.start=0;this.rules=this.parent=this.previous=null;this.cssText=this.parsedCssText=\"\";this.atRule=!1;this.type=0;this.parsedSelector=this.selector=this.keyframesName=\"\"}\nfunction bf(a){a=a.replace(cf,\"\").replace(df,\"\");var b=ef,c=a,d=new af;d.start=0;d.end=c.length;for(var e=d,f=0,g=c.length;f<g;f++)if(\"{\"===c[f]){e.rules||(e.rules=[]);var h=e,k=h.rules[h.rules.length-1]||null;e=new af;e.start=f+1;e.parent=h;e.previous=k;h.rules.push(e)}else\"}\"===c[f]&&(e.end=f+1,e=e.parent||d);return b(d,a)}\nfunction ef(a,b){var c=b.substring(a.start,a.end-1);a.parsedCssText=a.cssText=c.trim();a.parent&&(c=b.substring(a.previous?a.previous.end:a.parent.start,a.start-1),c=ff(c),c=c.replace(gf,\" \"),c=c.substring(c.lastIndexOf(\";\")+1),c=a.parsedSelector=a.selector=c.trim(),a.atRule=0===c.indexOf(\"@\"),a.atRule?0===c.indexOf(\"@media\")?a.type=hf:c.match(jf)&&(a.type=kf,a.keyframesName=a.selector.split(gf).pop()):a.type=0===c.indexOf(\"--\")?uf:vf);if(c=a.rules)for(var d=0,e=c.length,f;d<e&&(f=c[d]);d++)ef(f,\nb);return a}function ff(a){return a.replace(/\\\\([0-9a-f]{1,6})\\s/gi,function(a,c){a=c;for(c=6-a.length;c--;)a=\"0\"+a;return\"\\\\\"+a})}\nfunction wf(a,b,c){c=void 0===c?\"\":c;var d=\"\";if(a.cssText||a.rules){var e=a.rules,f;if(f=e)f=e[0],f=!(f&&f.selector&&0===f.selector.indexOf(\"--\"));if(f){f=0;for(var g=e.length,h;f<g&&(h=e[f]);f++)d=wf(h,b,d)}else b?b=a.cssText:(b=a.cssText,b=b.replace(xf,\"\").replace(yf,\"\"),b=b.replace(zf,\"\").replace(Af,\"\")),(d=b.trim())&&(d=\" \"+d+\"\\n\")}d&&(a.selector&&(c+=a.selector+\" {\\n\"),c+=d,a.selector&&(c+=\"}\\n\\n\"));return c}\nvar vf=1,kf=7,hf=4,uf=1E3,cf=/\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim,df=/@import[^;]*;/gim,xf=/(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\\n]|$)/gim,yf=/(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\\n]|$)?/gim,zf=/@apply\\s*\\(?[^);]*\\)?\\s*(?:[;\\n]|$)?/gim,Af=/[^;:]*?:[^;]*?var\\([^;]*\\)(?:[;\\n]|$)?/gim,jf=/^@[^\\s]*keyframes/,gf=/\\s+/g;var U=!(window.ShadyDOM&&window.ShadyDOM.inUse),Bf;function Cf(a){Bf=a&&a.shimcssproperties?!1:U||!(navigator.userAgent.match(/AppleWebKit\\/601|Edge\\/15/)||!window.CSS||!CSS.supports||!CSS.supports(\"box-shadow\",\"0 0 0 var(--foo)\"))}window.ShadyCSS&&void 0!==window.ShadyCSS.nativeCss?Bf=window.ShadyCSS.nativeCss:window.ShadyCSS?(Cf(window.ShadyCSS),window.ShadyCSS=void 0):Cf(window.WebComponents&&window.WebComponents.flags);var V=Bf;var Df=/(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};{])+)|\\{([^}]*)\\}(?:(?=[;\\s}])|$))/gi,Ef=/(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi,Ff=/(--[\\w-]+)\\s*([:,;)]|$)/gi,Gf=/(animation\\s*:)|(animation-name\\s*:)/,Hf=/@media\\s(.*)/,If=/\\{[^}]*\\}/g;var Jf=new Set;function Kf(a,b){if(!a)return\"\";\"string\"===typeof a&&(a=bf(a));b&&Lf(a,b);return wf(a,V)}function Mf(a){!a.__cssRules&&a.textContent&&(a.__cssRules=bf(a.textContent));return a.__cssRules||null}function Nf(a){return!!a.parent&&a.parent.type===kf}function Lf(a,b,c,d){if(a){var e=!1,f=a.type;if(d&&f===hf){var g=a.selector.match(Hf);g&&(window.matchMedia(g[1]).matches||(e=!0))}f===vf?b(a):c&&f===kf?c(a):f===uf&&(e=!0);if((a=a.rules)&&!e){e=0;f=a.length;for(var h;e<f&&(h=a[e]);e++)Lf(h,b,c,d)}}}\nfunction Of(a,b,c,d){var e=document.createElement(\"style\");b&&e.setAttribute(\"scope\",b);e.textContent=a;Pf(e,c,d);return e}var Qf=null;function Rf(a){a=document.createComment(\" Shady DOM styles for \"+a+\" \");var b=document.head;b.insertBefore(a,(Qf?Qf.nextSibling:null)||b.firstChild);return Qf=a}function Pf(a,b,c){b=b||document.head;b.insertBefore(a,c&&c.nextSibling||b.firstChild);Qf?a.compareDocumentPosition(Qf)===Node.DOCUMENT_POSITION_PRECEDING&&(Qf=a):Qf=a}\nfunction Sf(a,b){for(var c=0,d=a.length;b<d;b++)if(\"(\"===a[b])c++;else if(\")\"===a[b]&&0===--c)return b;return-1}function Tf(a,b){var c=a.indexOf(\"var(\");if(-1===c)return b(a,\"\",\"\",\"\");var d=Sf(a,c+3),e=a.substring(c+4,d);c=a.substring(0,c);a=Tf(a.substring(d+1),b);d=e.indexOf(\",\");return-1===d?b(c,e.trim(),\"\",a):b(c,e.substring(0,d).trim(),e.substring(d+1).trim(),a)}function Uf(a,b){U?a.setAttribute(\"class\",b):window.ShadyDOM.nativeMethods.setAttribute.call(a,\"class\",b)}\nfunction Vf(a){var b=a.localName,c=\"\";b?-1<b.indexOf(\"-\")||(c=b,b=a.getAttribute&&a.getAttribute(\"is\")||\"\"):(b=a.is,c=a.extends);return{is:b,X:c}}function Wf(a){for(var b=[],c=\"\",d=0;0<=d&&d<a.length;d++)if(\"(\"===a[d]){var e=Sf(a,d);c+=a.slice(d,e+1);d=e}else\",\"===a[d]?(b.push(c),c=\"\"):c+=a[d];c&&b.push(c);return b};function Xf(){}function Yf(a,b){var c=W;a.__styleScoped?a.__styleScoped=null:Zf(c,a,function(a){$f(a,b||\"\")})}function Zf(a,b,c){b.nodeType===Node.ELEMENT_NODE&&c(b);if(b=\"template\"===b.localName?(b.content||b.kb||b).childNodes:b.children||b.childNodes)for(var d=0;d<b.length;d++)Zf(a,b[d],c)}\nfunction $f(a,b,c){if(b)if(a.classList)c?(a.classList.remove(\"style-scope\"),a.classList.remove(b)):(a.classList.add(\"style-scope\"),a.classList.add(b));else if(a.getAttribute){var d=a.getAttribute(ag);c?d&&(b=d.replace(\"style-scope\",\"\").replace(b,\"\"),Uf(a,b)):Uf(a,(d?d+\" \":\"\")+\"style-scope \"+b)}}function bg(a,b,c){var d=W;a.__styleScoped?a.__styleScoped=null:Zf(d,a,function(a){$f(a,b,!0);$f(a,c)})}function cg(a,b){var c=W;a.__styleScoped?a.__styleScoped=null:Zf(c,a,function(a){$f(a,b||\"\",!0)})}\nfunction dg(a,b,c){var d=W,e=a.__cssBuild;U||\"shady\"===e?b=Kf(b,c):(a=Vf(a),b=eg(d,b,a.is,a.X,c)+\"\\n\\n\");return b.trim()}function eg(a,b,c,d,e){var f=fg(c,d);c=c?gg+c:\"\";return Kf(b,function(b){b.c||(b.selector=b.F=hg(a,b,a.b,c,f),b.c=!0);e&&e(b,c,f)})}function fg(a,b){return b?\"[is=\"+a+\"]\":a}function hg(a,b,c,d,e){var f=Wf(b.selector);if(!Nf(b)){b=0;for(var g=f.length,h;b<g&&(h=f[b]);b++)f[b]=c.call(a,h,d,e)}return f.filter(function(a){return!!a}).join(ig)}\nfunction jg(a){return a.replace(kg,function(a,c,d){-1<d.indexOf(\"+\")?d=d.replace(/\\+/g,\"___\"):-1<d.indexOf(\"___\")&&(d=d.replace(/___/g,\"+\"));return\":\"+c+\"(\"+d+\")\"})}function lg(a){for(var b=[],c;c=a.match(mg);){var d=c.index,e=Sf(a,d);if(-1===e)throw Error(c.input+\" selector missing ')'\");c=a.slice(d,e+1);a=a.replace(c,\"\\ue000\");b.push(c)}return{ra:a,matches:b}}function ng(a,b){var c=a.split(\"\\ue000\");return b.reduce(function(a,b,f){return a+b+c[f+1]},c[0])}\nXf.prototype.b=function(a,b,c){var d=!1;a=a.trim();var e=kg.test(a);e&&(a=a.replace(kg,function(a,b,c){return\":\"+b+\"(\"+c.replace(/\\s/g,\"\")+\")\"}),a=jg(a));var f=mg.test(a);if(f){var g=lg(a);a=g.ra;g=g.matches}a=a.replace(og,pg+\" $1\");a=a.replace(qg,function(a,e,f){d||(a=rg(f,e,b,c),d=d||a.stop,e=a.Qa,f=a.value);return e+f});f&&(a=ng(a,g));e&&(a=jg(a));return a};\nfunction rg(a,b,c,d){var e=a.indexOf(sg);0<=a.indexOf(pg)?a=tg(a,d):0!==e&&(a=c?ug(a,c):a);c=!1;0<=e&&(b=\"\",c=!0);if(c){var f=!0;c&&(a=a.replace(vg,function(a,b){return\" > \"+b}))}a=a.replace(wg,function(a,b,c){return'[dir=\"'+c+'\"] '+b+\", \"+b+'[dir=\"'+c+'\"]'});return{value:a,Qa:b,stop:f}}function ug(a,b){a=a.split(xg);a[0]+=b;return a.join(xg)}\nfunction tg(a,b){var c=a.match(yg);return(c=c&&c[2].trim()||\"\")?c[0].match(zg)?a.replace(yg,function(a,c,f){return b+f}):c.split(zg)[0]===b?c:Ag:a.replace(pg,b)}function Bg(a){a.selector===Cg&&(a.selector=\"html\")}Xf.prototype.c=function(a){return a.match(pg)?\"\":a.match(sg)?this.b(a,Dg):ug(a.trim(),Dg)};ba.Object.defineProperties(Xf.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return\"style-scope\"}}});\nvar kg=/:(nth[-\\w]+)\\(([^)]+)\\)/,Dg=\":not(.style-scope)\",ig=\",\",qg=/(^|[\\s>+~]+)((?:\\[.+?\\]|[^\\s>+~=[])+)/g,zg=/[[.:#*]/,pg=\":host\",Cg=\":root\",sg=\"::slotted\",og=new RegExp(\"^(\"+sg+\")\"),yg=/(:host)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/,vg=/(?:::slotted)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/,wg=/(.*):dir\\((?:(ltr|rtl))\\)/,gg=\".\",xg=\":\",ag=\"class\",Ag=\"should_not_match\",mg=/:(?:matches|any|-(?:webkit|moz)-any)/,W=new Xf;function Eg(a,b,c,d){this.M=a||null;this.b=b||null;this.pa=c||[];this.T=null;this.X=d||\"\";this.a=this.I=this.O=null}function X(a){return a?a.__styleInfo:null}function Fg(a,b){return a.__styleInfo=b}Eg.prototype.c=function(){return this.M};Eg.prototype._getStyleRules=Eg.prototype.c;function Gg(a){var b=this.matches||this.matchesSelector||this.mozMatchesSelector||this.msMatchesSelector||this.oMatchesSelector||this.webkitMatchesSelector;return b&&b.call(this,a)}var Hg=navigator.userAgent.match(\"Trident\");function Ig(){}function Jg(a){var b={},c=[],d=0;Lf(a,function(a){Kg(a);a.index=d++;a=a.B.cssText;for(var c;c=Ff.exec(a);){var e=c[1];\":\"!==c[2]&&(b[e]=!0)}},function(a){c.push(a)});a.b=c;a=[];for(var e in b)a.push(e);return a}\nfunction Kg(a){if(!a.B){var b={},c={};Lg(a,c)&&(b.L=c,a.rules=null);b.cssText=a.parsedCssText.replace(If,\"\").replace(Df,\"\");a.B=b}}function Lg(a,b){var c=a.B;if(c){if(c.L)return Object.assign(b,c.L),!0}else{c=a.parsedCssText;for(var d;a=Df.exec(c);){d=(a[2]||a[3]).trim();if(\"inherit\"!==d||\"unset\"!==d)b[a[1].trim()]=d;d=!0}return d}}\nfunction Mg(a,b,c){b&&(b=0<=b.indexOf(\";\")?Ng(a,b,c):Tf(b,function(b,e,f,g){if(!e)return b+g;(e=Mg(a,c[e],c))&&\"initial\"!==e?\"apply-shim-inherit\"===e&&(e=\"inherit\"):e=Mg(a,c[f]||f,c)||f;return b+(e||\"\")+g}));return b&&b.trim()||\"\"}\nfunction Ng(a,b,c){b=b.split(\";\");for(var d=0,e,f;d<b.length;d++)if(e=b[d]){Ef.lastIndex=0;if(f=Ef.exec(e))e=Mg(a,c[f[1]],c);else if(f=e.indexOf(\":\"),-1!==f){var g=e.substring(f);g=g.trim();g=Mg(a,g,c)||g;e=e.substring(0,f)+g}b[d]=e&&e.lastIndexOf(\";\")===e.length-1?e.slice(0,-1):e||\"\"}return b.join(\";\")}\nfunction Og(a,b){var c={},d=[];Lf(a,function(a){a.B||Kg(a);var e=a.F||a.parsedSelector;b&&a.B.L&&e&&Gg.call(b,e)&&(Lg(a,c),a=a.index,e=parseInt(a/32,10),d[e]=(d[e]||0)|1<<a%32)},null,!0);return{L:c,key:d}}\nfunction Pg(a,b,c,d){b.B||Kg(b);if(b.B.L){var e=Vf(a);a=e.is;e=e.X;e=a?fg(a,e):\"html\";var f=b.parsedSelector,g=\":host > *\"===f||\"html\"===f,h=0===f.indexOf(\":host\")&&!g;\"shady\"===c&&(g=f===e+\" > *.\"+e||-1!==f.indexOf(\"html\"),h=!g&&0===f.indexOf(e));\"shadow\"===c&&(g=\":host > *\"===f||\"html\"===f,h=h&&!g);if(g||h)c=e,h&&(b.F||(b.F=hg(W,b,W.b,a?gg+a:\"\",e)),c=b.F||e),d({ra:c,Wa:h,xb:g})}}\nfunction Qg(a,b){var c={},d={},e=b&&b.__cssBuild;Lf(b,function(b){Pg(a,b,e,function(e){Gg.call(a.lb||a,e.ra)&&(e.Wa?Lg(b,c):Lg(b,d))})},null,!0);return{$a:d,Ua:c}}\nfunction Rg(a,b,c,d){var e=Vf(b),f=fg(e.is,e.X),g=new RegExp(\"(?:^|[^.#[:])\"+(b.extends?\"\\\\\"+f.slice(0,-1)+\"\\\\]\":f)+\"($|[.:[\\\\s>+~])\");e=X(b).M;var h=Sg(e,d);return dg(b,e,function(b){var e=\"\";b.B||Kg(b);b.B.cssText&&(e=Ng(a,b.B.cssText,c));b.cssText=e;if(!U&&!Nf(b)&&b.cssText){var k=e=b.cssText;null==b.ya&&(b.ya=Gf.test(e));if(b.ya)if(null==b.ea){b.ea=[];for(var p in h)k=h[p],k=k(e),e!==k&&(e=k,b.ea.push(p))}else{for(p=0;p<b.ea.length;++p)k=h[b.ea[p]],e=k(e);k=e}b.cssText=k;b.F=b.F||b.selector;e=\n\".\"+d;p=Wf(b.F);k=0;for(var H=p.length,B;k<H&&(B=p[k]);k++)p[k]=B.match(g)?B.replace(f,e):e+\" \"+B;b.selector=p.join(\",\")}})}function Sg(a,b){a=a.b;var c={};if(!U&&a)for(var d=0,e=a[d];d<a.length;e=a[++d]){var f=e,g=b;f.f=new RegExp(\"\\\\b\"+f.keyframesName+\"(?!\\\\B|-)\",\"g\");f.a=f.keyframesName+\"-\"+g;f.F=f.F||f.selector;f.selector=f.F.replace(f.keyframesName,f.a);c[e.keyframesName]=Tg(e)}return c}function Tg(a){return function(b){return b.replace(a.f,a.a)}}\nfunction Ug(a,b){var c=Vg,d=Mf(a);a.textContent=Kf(d,function(a){var d=a.cssText=a.parsedCssText;a.B&&a.B.cssText&&(d=d.replace(xf,\"\").replace(yf,\"\"),a.cssText=Ng(c,d,b))})}ba.Object.defineProperties(Ig.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return\"x-scope\"}}});var Vg=new Ig;var Wg={},Xg=window.customElements;if(Xg&&!U){var Yg=Xg.define;Xg.define=function(a,b,c){Wg[a]||(Wg[a]=Rf(a));Yg.call(Xg,a,b,c)}};function Zg(){this.cache={}}Zg.prototype.store=function(a,b,c,d){var e=this.cache[a]||[];e.push({L:b,styleElement:c,I:d});100<e.length&&e.shift();this.cache[a]=e};Zg.prototype.fetch=function(a,b,c){if(a=this.cache[a])for(var d=a.length-1;0<=d;d--){var e=a[d],f;a:{for(f=0;f<c.length;f++){var g=c[f];if(e.L[g]!==b[g]){f=!1;break a}}f=!0}if(f)return e}};function $g(){}\nfunction ah(a){for(var b=0;b<a.length;b++){var c=a[b];if(c.target!==document.documentElement&&c.target!==document.head)for(var d=0;d<c.addedNodes.length;d++){var e=c.addedNodes[d];if(e.nodeType===Node.ELEMENT_NODE){var f=e.getRootNode();var g=e;var h=[];g.classList?h=Array.from(g.classList):g instanceof window.SVGElement&&g.hasAttribute(\"class\")&&(h=g.getAttribute(\"class\").split(/\\s+/));g=h;h=g.indexOf(W.a);if((g=-1<h?g[h+1]:\"\")&&f===e.ownerDocument)cg(e,g);else if(f.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(f=\nf.host))for(f=Vf(f).is,f!==g&&bg(e,g,f),e=window.ShadyDOM.nativeMethods.querySelectorAll.call(e,\":not(.\"+W.a+\")\"),f=0;f<e.length;f++)if(g=e[f],h=g.getRootNode().host)h=Vf(h).is,$f(g,h)}}}}\nif(!U){var bh=new MutationObserver(ah),ch=function(a){bh.observe(a,{childList:!0,subtree:!0})};if(window.customElements&&!window.customElements.polyfillWrapFlushCallback)ch(document);else{var dh=function(){ch(document.body)};window.HTMLImports?window.HTMLImports.whenReady(dh):requestAnimationFrame(function(){if(\"loading\"===document.readyState){var a=function(){dh();document.removeEventListener(\"readystatechange\",a)};document.addEventListener(\"readystatechange\",a)}else dh()})}$g=function(){ah(bh.takeRecords())}}\nvar eh=$g;var fh={};var gh=Promise.resolve();function hh(a){if(a=fh[a])a._applyShimCurrentVersion=a._applyShimCurrentVersion||0,a._applyShimValidatingVersion=a._applyShimValidatingVersion||0,a._applyShimNextVersion=(a._applyShimNextVersion||0)+1}function ih(a){return a._applyShimCurrentVersion===a._applyShimNextVersion}function jh(a){a._applyShimValidatingVersion=a._applyShimNextVersion;a.b||(a.b=!0,gh.then(function(){a._applyShimCurrentVersion=a._applyShimNextVersion;a.b=!1}))};var kh=new Zg;function Y(){this.G={};this.c=document.documentElement;var a=new af;a.rules=[];this.f=Fg(this.c,new Eg(a));this.m=!1;this.b=this.a=null}r=Y.prototype;r.flush=function(){eh()};r.Sa=function(a){return Mf(a)};r.bb=function(a){return Kf(a)};r.prepareTemplate=function(a,b,c){this.prepareTemplateDom(a,b);this.prepareTemplateStyles(a,b,c)};\nr.prepareTemplateStyles=function(a,b,c){if(!a.m){U||Wg[b]||(Wg[b]=Rf(b));a.m=!0;a.name=b;a.extends=c;fh[b]=a;var d=(d=a.content.querySelector(\"style\"))?d.getAttribute(\"css-build\")||\"\":\"\";var e=[];for(var f=a.content.querySelectorAll(\"style\"),g=0;g<f.length;g++){var h=f[g];if(h.hasAttribute(\"shady-unscoped\")){if(!U){var k=h.textContent;Jf.has(k)||(Jf.add(k),k=h.cloneNode(!0),document.head.appendChild(k));h.parentNode.removeChild(h)}}else e.push(h.textContent),h.parentNode.removeChild(h)}e=e.join(\"\").trim();\nc={is:b,extends:c,ib:d};lh(this);f=Ef.test(e)||Df.test(e);Ef.lastIndex=0;Df.lastIndex=0;e=bf(e);f&&V&&this.a&&this.a.transformRules(e,b);a._styleAst=e;a.G=d;d=[];V||(d=Jg(a._styleAst));if(!d.length||V)e=U?a.content:null,b=Wg[b]||null,f=dg(c,a._styleAst),b=f.length?Of(f,c.is,e,b):void 0,a.a=b;a.f=d}};r.prepareTemplateDom=function(a,b){U||a.c||(a.c=!0,Yf(a.content,b))};\nfunction mh(a){!a.b&&window.ShadyCSS&&window.ShadyCSS.CustomStyleInterface&&(a.b=window.ShadyCSS.CustomStyleInterface,a.b.transformCallback=function(b){a.Ba(b)},a.b.validateCallback=function(){requestAnimationFrame(function(){(a.b.enqueued||a.m)&&a.flushCustomStyles()})})}function lh(a){!a.a&&window.ShadyCSS&&window.ShadyCSS.ApplyShim&&(a.a=window.ShadyCSS.ApplyShim,a.a.invalidCallback=hh);mh(a)}\nr.flushCustomStyles=function(){lh(this);if(this.b){var a=this.b.processStyles();if(this.b.enqueued){if(V)for(var b=0;b<a.length;b++){var c=this.b.getStyleForCustomStyle(a[b]);if(c&&V&&this.a){var d=Mf(c);lh(this);this.a.transformRules(d);c.textContent=Kf(d)}}else for(nh(this,this.c,this.f),b=0;b<a.length;b++)(c=this.b.getStyleForCustomStyle(a[b]))&&Ug(c,this.f.O);this.b.enqueued=!1;this.m&&!V&&this.styleDocument()}}};\nr.styleElement=function(a,b){var c=Vf(a).is,d=X(a);if(!d){var e=Vf(a);d=e.is;e=e.X;var f=Wg[d]||null;d=fh[d];if(d){var g=d._styleAst;var h=d.f}g=new Eg(g,f,h,e);d&&Fg(a,g);d=g}a!==this.c&&(this.m=!0);b&&(d.T=d.T||{},Object.assign(d.T,b));if(V){if(d.T){b=d.T;for(var k in b)null===k?a.style.removeProperty(k):a.style.setProperty(k,b[k])}if(((k=fh[c])||a===this.c)&&k&&k.a&&!ih(k)){if(ih(k)||k._applyShimValidatingVersion!==k._applyShimNextVersion)lh(this),this.a&&this.a.transformRules(k._styleAst,c),k.a.textContent=\ndg(a,d.M),jh(k);U&&(c=a.shadowRoot)&&(c.querySelector(\"style\").textContent=dg(a,d.M));d.M=k._styleAst}}else if(this.flush(),nh(this,a,d),d.pa&&d.pa.length){c=d;k=Vf(a).is;d=(b=kh.fetch(k,c.O,c.pa))?b.styleElement:null;g=c.I;(h=b&&b.I)||(h=this.G[k]=(this.G[k]||0)+1,h=k+\"-\"+h);c.I=h;h=c.I;e=Vg;e=d?d.textContent||\"\":Rg(e,a,c.O,h);f=X(a);var m=f.a;m&&!U&&m!==d&&(m._useCount--,0>=m._useCount&&m.parentNode&&m.parentNode.removeChild(m));U?f.a?(f.a.textContent=e,d=f.a):e&&(d=Of(e,h,a.shadowRoot,f.b)):d?\nd.parentNode||(Hg&&-1<e.indexOf(\"@media\")&&(d.textContent=e),Pf(d,null,f.b)):e&&(d=Of(e,h,null,f.b));d&&(d._useCount=d._useCount||0,f.a!=d&&d._useCount++,f.a=d);h=d;U||(d=c.I,f=e=a.getAttribute(\"class\")||\"\",g&&(f=e.replace(new RegExp(\"\\\\s*x-scope\\\\s*\"+g+\"\\\\s*\",\"g\"),\" \")),f+=(f?\" \":\"\")+\"x-scope \"+d,e!==f&&Uf(a,f));b||kh.store(k,c.O,h,c.I)}};function oh(a,b){return(b=b.getRootNode().host)?X(b)?b:oh(a,b):a.c}\nfunction nh(a,b,c){a=oh(a,b);var d=X(a);a=Object.create(d.O||null);var e=Qg(b,c.M);b=Og(d.M,b).L;Object.assign(a,e.Ua,b,e.$a);b=c.T;for(var f in b)if((e=b[f])||0===e)a[f]=e;f=Vg;b=Object.getOwnPropertyNames(a);for(e=0;e<b.length;e++)d=b[e],a[d]=Mg(f,a[d],a);c.O=a}r.styleDocument=function(a){this.styleSubtree(this.c,a)};\nr.styleSubtree=function(a,b){var c=a.shadowRoot;(c||a===this.c)&&this.styleElement(a,b);if(b=c&&(c.children||c.childNodes))for(a=0;a<b.length;a++)this.styleSubtree(b[a]);else if(a=a.children||a.childNodes)for(b=0;b<a.length;b++)this.styleSubtree(a[b])};r.Ba=function(a){var b=this,c=Mf(a);Lf(c,function(a){if(U)Bg(a);else{var c=W;a.selector=a.parsedSelector;Bg(a);a.selector=a.F=hg(c,a,c.c,void 0,void 0)}V&&(lh(b),b.a&&b.a.transformRule(a))});V?a.textContent=Kf(c):this.f.M.rules.push(c)};\nr.getComputedStyleValue=function(a,b){var c;V||(c=(X(a)||X(oh(this,a))).O[b]);return(c=c||window.getComputedStyle(a).getPropertyValue(b))?c.trim():\"\"};r.ab=function(a,b){var c=a.getRootNode();b=b?b.split(/\\s/):[];c=c.host&&c.host.localName;if(!c){var d=a.getAttribute(\"class\");if(d){d=d.split(/\\s/);for(var e=0;e<d.length;e++)if(d[e]===W.a){c=d[e+1];break}}}c&&b.push(W.a,c);V||(c=X(a))&&c.I&&b.push(Vg.a,c.I);Uf(a,b.join(\" \"))};r.Na=function(a){return X(a)};Y.prototype.flush=Y.prototype.flush;\nY.prototype.prepareTemplate=Y.prototype.prepareTemplate;Y.prototype.styleElement=Y.prototype.styleElement;Y.prototype.styleDocument=Y.prototype.styleDocument;Y.prototype.styleSubtree=Y.prototype.styleSubtree;Y.prototype.getComputedStyleValue=Y.prototype.getComputedStyleValue;Y.prototype.setElementClass=Y.prototype.ab;Y.prototype._styleInfoForNode=Y.prototype.Na;Y.prototype.transformCustomStyleForDocument=Y.prototype.Ba;Y.prototype.getStyleAst=Y.prototype.Sa;Y.prototype.styleAstToString=Y.prototype.bb;\nY.prototype.flushCustomStyles=Y.prototype.flushCustomStyles;Object.defineProperties(Y.prototype,{nativeShadow:{get:function(){return U}},nativeCss:{get:function(){return V}}});var Z=new Y,ph,qh;window.ShadyCSS&&(ph=window.ShadyCSS.ApplyShim,qh=window.ShadyCSS.CustomStyleInterface);\nwindow.ShadyCSS={ScopingShim:Z,prepareTemplate:function(a,b,c){Z.flushCustomStyles();Z.prepareTemplate(a,b,c)},prepareTemplateDom:function(a,b){Z.prepareTemplateDom(a,b)},prepareTemplateStyles:function(a,b,c){Z.flushCustomStyles();Z.prepareTemplateStyles(a,b,c)},styleSubtree:function(a,b){Z.flushCustomStyles();Z.styleSubtree(a,b)},styleElement:function(a){Z.flushCustomStyles();Z.styleElement(a)},styleDocument:function(a){Z.flushCustomStyles();Z.styleDocument(a)},flushCustomStyles:function(){Z.flushCustomStyles()},\ngetComputedStyleValue:function(a,b){return Z.getComputedStyleValue(a,b)},nativeCss:V,nativeShadow:U};ph&&(window.ShadyCSS.ApplyShim=ph);qh&&(window.ShadyCSS.CustomStyleInterface=qh);(function(a){function b(a){\"\"==a&&(f.call(this),this.i=!0);return a.toLowerCase()}function c(a){var b=a.charCodeAt(0);return 32<b&&127>b&&-1==[34,35,60,62,63,96].indexOf(b)?a:encodeURIComponent(a)}function d(a){var b=a.charCodeAt(0);return 32<b&&127>b&&-1==[34,35,60,62,96].indexOf(b)?a:encodeURIComponent(a)}function e(a,e,g){function h(a){sb.push(a)}var k=e||\"scheme start\",A=0,q=\"\",B=!1,va=!1,sb=[];a:for(;(void 0!=a[A-1]||0==A)&&!this.i;){var l=a[A];switch(k){case \"scheme start\":if(l&&p.test(l))q+=\nl.toLowerCase(),k=\"scheme\";else if(e){h(\"Invalid scheme.\");break a}else{q=\"\";k=\"no scheme\";continue}break;case \"scheme\":if(l&&H.test(l))q+=l.toLowerCase();else if(\":\"==l){this.h=q;q=\"\";if(e)break a;void 0!==m[this.h]&&(this.D=!0);k=\"file\"==this.h?\"relative\":this.D&&g&&g.h==this.h?\"relative or authority\":this.D?\"authority first slash\":\"scheme data\"}else if(e){void 0!=l&&h(\"Code point not allowed in scheme: \"+l);break a}else{q=\"\";A=0;k=\"no scheme\";continue}break;case \"scheme data\":\"?\"==l?(this.u=\"?\",\nk=\"query\"):\"#\"==l?(this.C=\"#\",k=\"fragment\"):void 0!=l&&\"\\t\"!=l&&\"\\n\"!=l&&\"\\r\"!=l&&(this.na+=c(l));break;case \"no scheme\":if(g&&void 0!==m[g.h]){k=\"relative\";continue}else h(\"Missing scheme.\"),f.call(this),this.i=!0;break;case \"relative or authority\":if(\"/\"==l&&\"/\"==a[A+1])k=\"authority ignore slashes\";else{h(\"Expected /, got: \"+l);k=\"relative\";continue}break;case \"relative\":this.D=!0;\"file\"!=this.h&&(this.h=g.h);if(void 0==l){this.j=g.j;this.s=g.s;this.l=g.l.slice();this.u=g.u;this.v=g.v;this.g=g.g;\nbreak a}else if(\"/\"==l||\"\\\\\"==l)\"\\\\\"==l&&h(\"\\\\ is an invalid code point.\"),k=\"relative slash\";else if(\"?\"==l)this.j=g.j,this.s=g.s,this.l=g.l.slice(),this.u=\"?\",this.v=g.v,this.g=g.g,k=\"query\";else if(\"#\"==l)this.j=g.j,this.s=g.s,this.l=g.l.slice(),this.u=g.u,this.C=\"#\",this.v=g.v,this.g=g.g,k=\"fragment\";else{k=a[A+1];var D=a[A+2];if(\"file\"!=this.h||!p.test(l)||\":\"!=k&&\"|\"!=k||void 0!=D&&\"/\"!=D&&\"\\\\\"!=D&&\"?\"!=D&&\"#\"!=D)this.j=g.j,this.s=g.s,this.v=g.v,this.g=g.g,this.l=g.l.slice(),this.l.pop();k=\n\"relative path\";continue}break;case \"relative slash\":if(\"/\"==l||\"\\\\\"==l)\"\\\\\"==l&&h(\"\\\\ is an invalid code point.\"),k=\"file\"==this.h?\"file host\":\"authority ignore slashes\";else{\"file\"!=this.h&&(this.j=g.j,this.s=g.s,this.v=g.v,this.g=g.g);k=\"relative path\";continue}break;case \"authority first slash\":if(\"/\"==l)k=\"authority second slash\";else{h(\"Expected '/', got: \"+l);k=\"authority ignore slashes\";continue}break;case \"authority second slash\":k=\"authority ignore slashes\";if(\"/\"!=l){h(\"Expected '/', got: \"+\nl);continue}break;case \"authority ignore slashes\":if(\"/\"!=l&&\"\\\\\"!=l){k=\"authority\";continue}else h(\"Expected authority, got: \"+l);break;case \"authority\":if(\"@\"==l){B&&(h(\"@ already seen.\"),q+=\"%40\");B=!0;for(l=0;l<q.length;l++)D=q[l],\"\\t\"==D||\"\\n\"==D||\"\\r\"==D?h(\"Invalid whitespace in authority.\"):\":\"==D&&null===this.g?this.g=\"\":(D=c(D),null!==this.g?this.g+=D:this.v+=D);q=\"\"}else if(void 0==l||\"/\"==l||\"\\\\\"==l||\"?\"==l||\"#\"==l){A-=q.length;q=\"\";k=\"host\";continue}else q+=l;break;case \"file host\":if(void 0==\nl||\"/\"==l||\"\\\\\"==l||\"?\"==l||\"#\"==l){2!=q.length||!p.test(q[0])||\":\"!=q[1]&&\"|\"!=q[1]?(0!=q.length&&(this.j=b.call(this,q),q=\"\"),k=\"relative path start\"):k=\"relative path\";continue}else\"\\t\"==l||\"\\n\"==l||\"\\r\"==l?h(\"Invalid whitespace in file host.\"):q+=l;break;case \"host\":case \"hostname\":if(\":\"!=l||va)if(void 0==l||\"/\"==l||\"\\\\\"==l||\"?\"==l||\"#\"==l){this.j=b.call(this,q);q=\"\";k=\"relative path start\";if(e)break a;continue}else\"\\t\"!=l&&\"\\n\"!=l&&\"\\r\"!=l?(\"[\"==l?va=!0:\"]\"==l&&(va=!1),q+=l):h(\"Invalid code point in host/hostname: \"+\nl);else if(this.j=b.call(this,q),q=\"\",k=\"port\",\"hostname\"==e)break a;break;case \"port\":if(/[0-9]/.test(l))q+=l;else if(void 0==l||\"/\"==l||\"\\\\\"==l||\"?\"==l||\"#\"==l||e){\"\"!=q&&(q=parseInt(q,10),q!=m[this.h]&&(this.s=q+\"\"),q=\"\");if(e)break a;k=\"relative path start\";continue}else\"\\t\"==l||\"\\n\"==l||\"\\r\"==l?h(\"Invalid code point in port: \"+l):(f.call(this),this.i=!0);break;case \"relative path start\":\"\\\\\"==l&&h(\"'\\\\' not allowed in path.\");k=\"relative path\";if(\"/\"!=l&&\"\\\\\"!=l)continue;break;case \"relative path\":if(void 0!=\nl&&\"/\"!=l&&\"\\\\\"!=l&&(e||\"?\"!=l&&\"#\"!=l))\"\\t\"!=l&&\"\\n\"!=l&&\"\\r\"!=l&&(q+=c(l));else{\"\\\\\"==l&&h(\"\\\\ not allowed in relative path.\");if(D=n[q.toLowerCase()])q=D;\"..\"==q?(this.l.pop(),\"/\"!=l&&\"\\\\\"!=l&&this.l.push(\"\")):\".\"==q&&\"/\"!=l&&\"\\\\\"!=l?this.l.push(\"\"):\".\"!=q&&(\"file\"==this.h&&0==this.l.length&&2==q.length&&p.test(q[0])&&\"|\"==q[1]&&(q=q[0]+\":\"),this.l.push(q));q=\"\";\"?\"==l?(this.u=\"?\",k=\"query\"):\"#\"==l&&(this.C=\"#\",k=\"fragment\")}break;case \"query\":e||\"#\"!=l?void 0!=l&&\"\\t\"!=l&&\"\\n\"!=l&&\"\\r\"!=l&&(this.u+=\nd(l)):(this.C=\"#\",k=\"fragment\");break;case \"fragment\":void 0!=l&&\"\\t\"!=l&&\"\\n\"!=l&&\"\\r\"!=l&&(this.C+=l)}A++}}function f(){this.v=this.na=this.h=\"\";this.g=null;this.s=this.j=\"\";this.l=[];this.C=this.u=\"\";this.D=this.i=!1}function g(a,b){void 0===b||b instanceof g||(b=new g(String(b)));this.Oa=a;f.call(this);a=a.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g,\"\");e.call(this,a,null,b)}var h=!1;if(!a.rb)try{var k=new URL(\"b\",\"http://a\");k.pathname=\"c%20d\";h=\"http://a/c%20d\"===k.href}catch(A){}if(!h){var m=Object.create(null);\nm.ftp=21;m.file=0;m.gopher=70;m.http=80;m.https=443;m.ws=80;m.wss=443;var n=Object.create(null);n[\"%2e\"]=\".\";n[\".%2e\"]=\"..\";n[\"%2e.\"]=\"..\";n[\"%2e%2e\"]=\"..\";var p=/[a-zA-Z]/,H=/[a-zA-Z0-9\\+\\-\\.]/;g.prototype={toString:function(){return this.href},get href(){if(this.i)return this.Oa;var a=\"\";if(\"\"!=this.v||null!=this.g)a=this.v+(null!=this.g?\":\"+this.g:\"\")+\"@\";return this.protocol+(this.D?\"//\"+a+this.host:\"\")+this.pathname+this.u+this.C},set href(a){f.call(this);e.call(this,a)},get protocol(){return this.h+\n\":\"},set protocol(a){this.i||e.call(this,a+\":\",\"scheme start\")},get host(){return this.i?\"\":this.s?this.j+\":\"+this.s:this.j},set host(a){!this.i&&this.D&&e.call(this,a,\"host\")},get hostname(){return this.j},set hostname(a){!this.i&&this.D&&e.call(this,a,\"hostname\")},get port(){return this.s},set port(a){!this.i&&this.D&&e.call(this,a,\"port\")},get pathname(){return this.i?\"\":this.D?\"/\"+this.l.join(\"/\"):this.na},set pathname(a){!this.i&&this.D&&(this.l=[],e.call(this,a,\"relative path start\"))},get search(){return this.i||\n!this.u||\"?\"==this.u?\"\":this.u},set search(a){!this.i&&this.D&&(this.u=\"?\",\"?\"==a[0]&&(a=a.slice(1)),e.call(this,a,\"query\"))},get hash(){return this.i||!this.C||\"#\"==this.C?\"\":this.C},set hash(a){this.i||(this.C=\"#\",\"#\"==a[0]&&(a=a.slice(1)),e.call(this,a,\"fragment\"))},get origin(){var a;if(this.i||!this.h)return\"\";switch(this.h){case \"data\":case \"file\":case \"javascript\":case \"mailto\":return\"null\"}return(a=this.host)?this.h+\"://\"+a:\"\"}};var B=a.URL;B&&(g.createObjectURL=function(a){return B.createObjectURL.apply(B,\narguments)},g.revokeObjectURL=function(a){B.revokeObjectURL(a)});a.URL=g}})(window);Object.getOwnPropertyDescriptor(Node.prototype,\"baseURI\")||Object.defineProperty(Node.prototype,\"baseURI\",{get:function(){var a=(this.ownerDocument||this).querySelector(\"base[href]\");return a&&a.href||window.location.href},configurable:!0,enumerable:!0});var rh=document.createElement(\"style\");rh.textContent=\"body {transition: opacity ease-in 0.2s; } \\nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \\n\";var sh=document.querySelector(\"head\");sh.insertBefore(rh,sh.firstChild);var th=window.customElements,uh=!1,vh=null;th.polyfillWrapFlushCallback&&th.polyfillWrapFlushCallback(function(a){vh=a;uh&&a()});function wh(){window.HTMLTemplateElement.bootstrap&&window.HTMLTemplateElement.bootstrap(window.document);vh&&vh();uh=!0;window.WebComponents.ready=!0;document.dispatchEvent(new CustomEvent(\"WebComponentsReady\",{bubbles:!0}))}\n\"complete\"!==document.readyState?(window.addEventListener(\"load\",wh),window.addEventListener(\"DOMContentLoaded\",function(){window.removeEventListener(\"load\",wh);wh()})):wh();}).call(this);\n\n//# sourceMappingURL=webcomponents-bundle.js.map\n","/**\n * Simple, lightweight, usable local autocomplete library for modern browsers\n * Because there weren’t enough autocomplete scripts in the world? Because I’m completely insane and have NIH syndrome? Probably both. :P\n * @author Lea Verou http://leaverou.github.io/awesomplete\n * MIT license\n */\n\n(function () {\n\nvar _ = function (input, o) {\n\tvar me = this;\n\n // Keep track of number of instances for unique IDs\n _.count = (_.count || 0) + 1;\n this.count = _.count;\n\n\t// Setup\n\n\tthis.isOpened = false;\n\n\tthis.input = $(input);\n\tthis.input.setAttribute(\"autocomplete\", \"off\");\n\tthis.input.setAttribute(\"aria-expanded\", \"false\");\n\tthis.input.setAttribute(\"aria-owns\", \"awesomplete_list_\" + this.count);\n\tthis.input.setAttribute(\"role\", \"combobox\");\n\n\t// store constructor options in case we need to distinguish\n\t// between default and customized behavior later on\n\tthis.options = o = o || {};\n\n\tconfigure(this, {\n\t\tminChars: 2,\n\t\tmaxItems: 10,\n\t\tautoFirst: false,\n\t\tdata: _.DATA,\n\t\tfilter: _.FILTER_CONTAINS,\n\t\tsort: o.sort === false ? false : _.SORT_BYLENGTH,\n\t\tcontainer: _.CONTAINER,\n\t\titem: _.ITEM,\n\t\treplace: _.REPLACE,\n\t\ttabSelect: false\n\t}, o);\n\n\tthis.index = -1;\n\n\t// Create necessary elements\n\n\tthis.container = this.container(input);\n\n\tthis.ul = $.create(\"ul\", {\n\t\thidden: \"hidden\",\n role: \"listbox\",\n id: \"awesomplete_list_\" + this.count,\n\t\tinside: this.container\n\t});\n\n\tthis.status = $.create(\"span\", {\n\t\tclassName: \"visually-hidden\",\n\t\trole: \"status\",\n\t\t\"aria-live\": \"assertive\",\n \"aria-atomic\": true,\n inside: this.container,\n textContent: this.minChars != 0 ? (\"Type \" + this.minChars + \" or more characters for results.\") : \"Begin typing for results.\"\n\t});\n\n\t// Bind events\n\n\tthis._events = {\n\t\tinput: {\n\t\t\t\"input\": this.evaluate.bind(this),\n\t\t\t\"blur\": this.close.bind(this, { reason: \"blur\" }),\n\t\t\t\"keydown\": function(evt) {\n\t\t\t\tvar c = evt.keyCode;\n\n\t\t\t\t// If the dropdown `ul` is in view, then act on keydown for the following keys:\n\t\t\t\t// Enter / Esc / Up / Down\n\t\t\t\tif(me.opened) {\n\t\t\t\t\tif (c === 13 && me.selected) { // Enter\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme.select(undefined, undefined, evt);\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 9 && me.selected && me.tabSelect) {\n\t\t\t\t\t\tme.select(undefined, undefined, evt);\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 27) { // Esc\n\t\t\t\t\t\tme.close({ reason: \"esc\" });\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 38 || c === 40) { // Down/Up arrow\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme[c === 38? \"previous\" : \"next\"]();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tform: {\n\t\t\t\"submit\": this.close.bind(this, { reason: \"submit\" })\n\t\t},\n\t\tul: {\n\t\t\t// Prevent the default mousedowm, which ensures the input is not blurred.\n\t\t\t// The actual selection will happen on click. This also ensures dragging the\n\t\t\t// cursor away from the list item will cancel the selection\n\t\t\t\"mousedown\": function(evt) {\n\t\t\t\tevt.preventDefault();\n\t\t\t},\n\t\t\t// The click event is fired even if the corresponding mousedown event has called preventDefault\n\t\t\t\"click\": function(evt) {\n\t\t\t\tvar li = evt.target;\n\n\t\t\t\tif (li !== this) {\n\n\t\t\t\t\twhile (li && !/li/i.test(li.nodeName)) {\n\t\t\t\t\t\tli = li.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (li && evt.button === 0) { // Only select on left click\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme.select(li, evt.target, evt);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t$.bind(this.input, this._events.input);\n\t$.bind(this.input.form, this._events.form);\n\t$.bind(this.ul, this._events.ul);\n\n\tif (this.input.hasAttribute(\"list\")) {\n\t\tthis.list = \"#\" + this.input.getAttribute(\"list\");\n\t\tthis.input.removeAttribute(\"list\");\n\t}\n\telse {\n\t\tthis.list = this.input.getAttribute(\"data-list\") || o.list || [];\n\t}\n\n\t_.all.push(this);\n};\n\n_.prototype = {\n\tset list(list) {\n\t\tif (Array.isArray(list)) {\n\t\t\tthis._list = list;\n\t\t}\n\t\telse if (typeof list === \"string\" && list.indexOf(\",\") > -1) {\n\t\t\t\tthis._list = list.split(/\\s*,\\s*/);\n\t\t}\n\t\telse { // Element or CSS selector\n\t\t\tlist = $(list);\n\n\t\t\tif (list && list.children) {\n\t\t\t\tvar items = [];\n\t\t\t\tslice.apply(list.children).forEach(function (el) {\n\t\t\t\t\tif (!el.disabled) {\n\t\t\t\t\t\tvar text = el.textContent.trim();\n\t\t\t\t\t\tvar value = el.value || text;\n\t\t\t\t\t\tvar label = el.label || text;\n\t\t\t\t\t\tif (value !== \"\") {\n\t\t\t\t\t\t\titems.push({ label: label, value: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._list = items;\n\t\t\t}\n\t\t}\n\n\t\tif (document.activeElement === this.input) {\n\t\t\tthis.evaluate();\n\t\t}\n\t},\n\n\tget selected() {\n\t\treturn this.index > -1;\n\t},\n\n\tget opened() {\n\t\treturn this.isOpened;\n\t},\n\n\tclose: function (o) {\n\t\tif (!this.opened) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.input.setAttribute(\"aria-expanded\", \"false\");\n\t\tthis.ul.setAttribute(\"hidden\", \"\");\n\t\tthis.isOpened = false;\n\t\tthis.index = -1;\n\n\t\tthis.status.setAttribute(\"hidden\", \"\");\n\n\t\t$.fire(this.input, \"awesomplete-close\", o || {});\n\t},\n\n\topen: function () {\n\t\tthis.input.setAttribute(\"aria-expanded\", \"true\");\n\t\tthis.ul.removeAttribute(\"hidden\");\n\t\tthis.isOpened = true;\n\n\t\tthis.status.removeAttribute(\"hidden\");\n\n\t\tif (this.autoFirst && this.index === -1) {\n\t\t\tthis.goto(0);\n\t\t}\n\n\t\t$.fire(this.input, \"awesomplete-open\");\n\t},\n\n\tdestroy: function() {\n\t\t//remove events from the input and its form\n\t\t$.unbind(this.input, this._events.input);\n\t\t$.unbind(this.input.form, this._events.form);\n\n\t\t// cleanup container if it was created by Awesomplete but leave it alone otherwise\n\t\tif (!this.options.container) {\n\t\t\t//move the input out of the awesomplete container and remove the container and its children\n\t\t\tvar parentNode = this.container.parentNode;\n\n\t\t\tparentNode.insertBefore(this.input, this.container);\n\t\t\tparentNode.removeChild(this.container);\n\t\t}\n\n\t\t//remove autocomplete and aria-autocomplete attributes\n\t\tthis.input.removeAttribute(\"autocomplete\");\n\t\tthis.input.removeAttribute(\"aria-autocomplete\");\n\n\t\t//remove this awesomeplete instance from the global array of instances\n\t\tvar indexOfAwesomplete = _.all.indexOf(this);\n\n\t\tif (indexOfAwesomplete !== -1) {\n\t\t\t_.all.splice(indexOfAwesomplete, 1);\n\t\t}\n\t},\n\n\tnext: function () {\n\t\tvar count = this.ul.children.length;\n\t\tthis.goto(this.index < count - 1 ? this.index + 1 : (count ? 0 : -1) );\n\t},\n\n\tprevious: function () {\n\t\tvar count = this.ul.children.length;\n\t\tvar pos = this.index - 1;\n\n\t\tthis.goto(this.selected && pos !== -1 ? pos : count - 1);\n\t},\n\n\t// Should not be used, highlights specific item without any checks!\n\tgoto: function (i) {\n\t\tvar lis = this.ul.children;\n\n\t\tif (this.selected) {\n\t\t\tlis[this.index].setAttribute(\"aria-selected\", \"false\");\n\t\t}\n\n\t\tthis.index = i;\n\n\t\tif (i > -1 && lis.length > 0) {\n\t\t\tlis[i].setAttribute(\"aria-selected\", \"true\");\n\n\t\t\tthis.status.textContent = lis[i].textContent + \", list item \" + (i + 1) + \" of \" + lis.length;\n\n this.input.setAttribute(\"aria-activedescendant\", this.ul.id + \"_item_\" + this.index);\n\n\t\t\t// scroll to highlighted element in case parent's height is fixed\n\t\t\tthis.ul.scrollTop = lis[i].offsetTop - this.ul.clientHeight + lis[i].clientHeight;\n\n\t\t\t$.fire(this.input, \"awesomplete-highlight\", {\n\t\t\t\ttext: this.suggestions[this.index]\n\t\t\t});\n\t\t}\n\t},\n\n\tselect: function (selected, origin, originalEvent) {\n\t\tif (selected) {\n\t\t\tthis.index = $.siblingIndex(selected);\n\t\t} else {\n\t\t\tselected = this.ul.children[this.index];\n\t\t}\n\n\t\tif (selected) {\n\t\t\tvar suggestion = this.suggestions[this.index];\n\n\t\t\tvar allowed = $.fire(this.input, \"awesomplete-select\", {\n\t\t\t\ttext: suggestion,\n\t\t\t\torigin: origin || selected,\n\t\t\t\toriginalEvent: originalEvent\n\t\t\t});\n\n\t\t\tif (allowed) {\n\t\t\t\tthis.replace(suggestion);\n\t\t\t\tthis.close({ reason: \"select\" });\n\t\t\t\t$.fire(this.input, \"awesomplete-selectcomplete\", {\n\t\t\t\t\ttext: suggestion,\n\t\t\t\t\toriginalEvent: originalEvent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\n\tevaluate: function() {\n\t\tvar me = this;\n\t\tvar value = this.input.value;\n\n\t\tif (value.length >= this.minChars && this._list && this._list.length > 0) {\n\t\t\tthis.index = -1;\n\t\t\t// Populate list with options that match\n\t\t\tthis.ul.innerHTML = \"\";\n\n\t\t\tthis.suggestions = this._list\n\t\t\t\t.map(function(item) {\n\t\t\t\t\treturn new Suggestion(me.data(item, value));\n\t\t\t\t})\n\t\t\t\t.filter(function(item) {\n\t\t\t\t\treturn me.filter(item, value);\n\t\t\t\t});\n\n\t\t\tif (this.sort !== false) {\n\t\t\t\tthis.suggestions = this.suggestions.sort(this.sort);\n\t\t\t}\n\n\t\t\tthis.suggestions = this.suggestions.slice(0, this.maxItems);\n\n\t\t\tthis.suggestions.forEach(function(text, index) {\n\t\t\t\t\tme.ul.appendChild(me.item(text, value, index));\n\t\t\t\t});\n\n\t\t\tif (this.ul.children.length === 0) {\n\n this.status.textContent = \"No results found\";\n\n\t\t\t\tthis.close({ reason: \"nomatches\" });\n\n\t\t\t} else {\n\t\t\t\tthis.open();\n\n this.status.textContent = this.ul.children.length + \" results found\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tthis.close({ reason: \"nomatches\" });\n\n this.status.textContent = \"No results found\";\n\t\t}\n\t}\n};\n\n// Static methods/properties\n\n_.all = [];\n\n_.FILTER_CONTAINS = function (text, input) {\n\treturn RegExp($.regExpEscape(input.trim()), \"i\").test(text);\n};\n\n_.FILTER_STARTSWITH = function (text, input) {\n\treturn RegExp(\"^\" + $.regExpEscape(input.trim()), \"i\").test(text);\n};\n\n_.SORT_BYLENGTH = function (a, b) {\n\tif (a.length !== b.length) {\n\t\treturn a.length - b.length;\n\t}\n\n\treturn a < b? -1 : 1;\n};\n\n_.CONTAINER = function (input) {\n\treturn $.create(\"div\", {\n\t\tclassName: \"awesomplete\",\n\t\taround: input\n\t});\n}\n\n_.ITEM = function (text, input, item_id) {\n\tvar html = input.trim() === \"\" ? text : text.replace(RegExp($.regExpEscape(input.trim()), \"gi\"), \"<mark>$&</mark>\");\n\treturn $.create(\"li\", {\n\t\tinnerHTML: html,\n\t\t\"role\": \"option\",\n\t\t\"aria-selected\": \"false\",\n\t\t\"id\": \"awesomplete_list_\" + this.count + \"_item_\" + item_id\n\t});\n};\n\n_.REPLACE = function (text) {\n\tthis.input.value = text.value;\n};\n\n_.DATA = function (item/*, input*/) { return item; };\n\n// Private functions\n\nfunction Suggestion(data) {\n\tvar o = Array.isArray(data)\n\t ? { label: data[0], value: data[1] }\n\t : typeof data === \"object\" && \"label\" in data && \"value\" in data ? data : { label: data, value: data };\n\n\tthis.label = o.label || o.value;\n\tthis.value = o.value;\n}\nObject.defineProperty(Suggestion.prototype = Object.create(String.prototype), \"length\", {\n\tget: function() { return this.label.length; }\n});\nSuggestion.prototype.toString = Suggestion.prototype.valueOf = function () {\n\treturn \"\" + this.label;\n};\n\nfunction configure(instance, properties, o) {\n\tfor (var i in properties) {\n\t\tvar initial = properties[i],\n\t\t attrValue = instance.input.getAttribute(\"data-\" + i.toLowerCase());\n\n\t\tif (typeof initial === \"number\") {\n\t\t\tinstance[i] = parseInt(attrValue);\n\t\t}\n\t\telse if (initial === false) { // Boolean options must be false by default anyway\n\t\t\tinstance[i] = attrValue !== null;\n\t\t}\n\t\telse if (initial instanceof Function) {\n\t\t\tinstance[i] = null;\n\t\t}\n\t\telse {\n\t\t\tinstance[i] = attrValue;\n\t\t}\n\n\t\tif (!instance[i] && instance[i] !== 0) {\n\t\t\tinstance[i] = (i in o)? o[i] : initial;\n\t\t}\n\t}\n}\n\n// Helpers\n\nvar slice = Array.prototype.slice;\n\nfunction $(expr, con) {\n\treturn typeof expr === \"string\"? (con || document).querySelector(expr) : expr || null;\n}\n\nfunction $$(expr, con) {\n\treturn slice.call((con || document).querySelectorAll(expr));\n}\n\n$.create = function(tag, o) {\n\tvar element = document.createElement(tag);\n\n\tfor (var i in o) {\n\t\tvar val = o[i];\n\n\t\tif (i === \"inside\") {\n\t\t\t$(val).appendChild(element);\n\t\t}\n\t\telse if (i === \"around\") {\n\t\t\tvar ref = $(val);\n\t\t\tref.parentNode.insertBefore(element, ref);\n\t\t\telement.appendChild(ref);\n\n\t\t\tif (ref.getAttribute(\"autofocus\") != null) {\n\t\t\t\tref.focus();\n\t\t\t}\n\t\t}\n\t\telse if (i in element) {\n\t\t\telement[i] = val;\n\t\t}\n\t\telse {\n\t\t\telement.setAttribute(i, val);\n\t\t}\n\t}\n\n\treturn element;\n};\n\n$.bind = function(element, o) {\n\tif (element) {\n\t\tfor (var event in o) {\n\t\t\tvar callback = o[event];\n\n\t\t\tevent.split(/\\s+/).forEach(function (event) {\n\t\t\t\telement.addEventListener(event, callback);\n\t\t\t});\n\t\t}\n\t}\n};\n\n$.unbind = function(element, o) {\n\tif (element) {\n\t\tfor (var event in o) {\n\t\t\tvar callback = o[event];\n\n\t\t\tevent.split(/\\s+/).forEach(function(event) {\n\t\t\t\telement.removeEventListener(event, callback);\n\t\t\t});\n\t\t}\n\t}\n};\n\n$.fire = function(target, type, properties) {\n\tvar evt = document.createEvent(\"HTMLEvents\");\n\n\tevt.initEvent(type, true, true );\n\n\tfor (var j in properties) {\n\t\tevt[j] = properties[j];\n\t}\n\n\treturn target.dispatchEvent(evt);\n};\n\n$.regExpEscape = function (s) {\n\treturn s.replace(/[-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n};\n\n$.siblingIndex = function (el) {\n\t/* eslint-disable no-cond-assign */\n\tfor (var i = 0; el = el.previousElementSibling; i++);\n\treturn i;\n};\n\n// Initialization\n\nfunction init() {\n\t$$(\"input.awesomplete\").forEach(function (input) {\n\t\tnew _(input);\n\t});\n}\n\n// Make sure to export Awesomplete on self when in a browser\nif (typeof self !== \"undefined\") {\n\tself.Awesomplete = _;\n}\n\n// Are we in a browser? Check for Document constructor\nif (typeof Document !== \"undefined\") {\n\t// DOM already loaded?\n\tif (document.readyState !== \"loading\") {\n\t\tinit();\n\t}\n\telse {\n\t\t// Wait for it\n\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t}\n}\n\n_.$ = $;\n_.$$ = $$;\n\n// Expose Awesomplete as a CJS module\nif (typeof module === \"object\" && module.exports) {\n\tmodule.exports = _;\n}\n\nreturn _;\n\n}());\n","// needs a separate module as this is required inside chevrotain productive code\n// and also in the entry point for webpack(api.ts).\n// A separate file avoids cyclic dependencies and webpack errors.\nexport var VERSION = \"6.5.0\";\n//# sourceMappingURL=version.js.map","import { RegExpParser } from \"regexp-to-ast\";\nvar regExpAstCache = {};\nvar regExpParser = new RegExpParser();\nexport function getRegExpAst(regExp) {\n var regExpStr = regExp.toString();\n if (regExpAstCache.hasOwnProperty(regExpStr)) {\n return regExpAstCache[regExpStr];\n }\n else {\n var regExpAst = regExpParser.pattern(regExpStr);\n regExpAstCache[regExpStr] = regExpAst;\n return regExpAst;\n }\n}\nexport function clearRegExpParserCache() {\n regExpAstCache = {};\n}\n//# sourceMappingURL=reg_exp_parser.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VERSION, BaseRegExpVisitor } from \"regexp-to-ast\";\nimport { forEach, contains, PRINT_ERROR, PRINT_WARNING, find, isArray, every, values } from \"../utils/utils\";\nimport { getRegExpAst } from \"./reg_exp_parser\";\nimport { charCodeToOptimizedIndex, minOptimizationVal } from \"./lexer\";\nvar complementErrorMessage = \"Complement Sets are not supported for first char optimization\";\nexport var failedOptimizationPrefixMsg = 'Unable to use \"first char\" lexer optimizations:\\n';\nexport function getOptimizedStartCodesIndices(regExp, ensureOptimizations) {\n if (ensureOptimizations === void 0) { ensureOptimizations = false; }\n try {\n var ast = getRegExpAst(regExp);\n var firstChars = firstCharOptimizedIndices(ast.value, {}, ast.flags.ignoreCase);\n return firstChars;\n }\n catch (e) {\n /* istanbul ignore next */\n // Testing this relies on the regexp-to-ast library having a bug... */\n // TODO: only the else branch needs to be ignored, try to fix with newer prettier / tsc\n if (e.message === complementErrorMessage) {\n if (ensureOptimizations) {\n PRINT_WARNING(\"\" + failedOptimizationPrefixMsg +\n (\"\\tUnable to optimize: < \" + regExp.toString() + \" >\\n\") +\n \"\\tComplement Sets cannot be automatically optimized.\\n\" +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tSee: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.\");\n }\n }\n else {\n var msgSuffix = \"\";\n if (ensureOptimizations) {\n msgSuffix =\n \"\\n\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tSee: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.\";\n }\n PRINT_ERROR(failedOptimizationPrefixMsg + \"\\n\" +\n (\"\\tFailed parsing: < \" + regExp.toString() + \" >\\n\") +\n (\"\\tUsing the regexp-to-ast library version: \" + VERSION + \"\\n\") +\n \"\\tPlease open an issue at: https://github.com/bd82/regexp-to-ast/issues\" +\n msgSuffix);\n }\n }\n return [];\n}\nexport function firstCharOptimizedIndices(ast, result, ignoreCase) {\n switch (ast.type) {\n case \"Disjunction\":\n for (var i = 0; i < ast.value.length; i++) {\n firstCharOptimizedIndices(ast.value[i], result, ignoreCase);\n }\n break;\n case \"Alternative\":\n var terms = ast.value;\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i];\n // skip terms that cannot effect the first char results\n switch (term.type) {\n case \"EndAnchor\":\n // A group back reference cannot affect potential starting char.\n // because if a back reference is the first production than automatically\n // the group being referenced has had to come BEFORE so its codes have already been added\n case \"GroupBackReference\":\n // assertions do not affect potential starting codes\n case \"Lookahead\":\n case \"NegativeLookahead\":\n case \"StartAnchor\":\n case \"WordBoundary\":\n case \"NonWordBoundary\":\n continue;\n }\n var atom = term;\n switch (atom.type) {\n case \"Character\":\n addOptimizedIdxToResult(atom.value, result, ignoreCase);\n break;\n case \"Set\":\n if (atom.complement === true) {\n throw Error(complementErrorMessage);\n }\n forEach(atom.value, function (code) {\n if (typeof code === \"number\") {\n addOptimizedIdxToResult(code, result, ignoreCase);\n }\n else {\n // range\n var range = code;\n // cannot optimize when ignoreCase is\n if (ignoreCase === true) {\n for (var rangeCode = range.from; rangeCode <= range.to; rangeCode++) {\n addOptimizedIdxToResult(rangeCode, result, ignoreCase);\n }\n }\n // Optimization (2 orders of magnitude less work for very large ranges)\n else {\n // handle unoptimized values\n for (var rangeCode = range.from; rangeCode <= range.to &&\n rangeCode < minOptimizationVal; rangeCode++) {\n addOptimizedIdxToResult(rangeCode, result, ignoreCase);\n }\n // Less common charCode where we optimize for faster init time, by using larger \"buckets\"\n if (range.to >= minOptimizationVal) {\n var minUnOptVal = range.from >= minOptimizationVal\n ? range.from\n : minOptimizationVal;\n var maxUnOptVal = range.to;\n var minOptIdx = charCodeToOptimizedIndex(minUnOptVal);\n var maxOptIdx = charCodeToOptimizedIndex(maxUnOptVal);\n for (var currOptIdx = minOptIdx; currOptIdx <= maxOptIdx; currOptIdx++) {\n result[currOptIdx] = currOptIdx;\n }\n }\n }\n }\n });\n break;\n case \"Group\":\n firstCharOptimizedIndices(atom.value, result, ignoreCase);\n break;\n /* istanbul ignore next */\n default:\n throw Error(\"Non Exhaustive Match\");\n }\n // reached a mandatory production, no more **start** codes can be found on this alternative\n var isOptionalQuantifier = atom.quantifier !== undefined &&\n atom.quantifier.atLeast === 0;\n if (\n // A group may be optional due to empty contents /(?:)/\n // or if everything inside it is optional /((a)?)/\n (atom.type === \"Group\" &&\n isWholeOptional(atom) === false) ||\n // If this term is not a group it may only be optional if it has an optional quantifier\n (atom.type !== \"Group\" && isOptionalQuantifier === false)) {\n break;\n }\n }\n break;\n /* istanbul ignore next */\n default:\n throw Error(\"non exhaustive match!\");\n }\n // console.log(Object.keys(result).length)\n return values(result);\n}\nfunction addOptimizedIdxToResult(code, result, ignoreCase) {\n var optimizedCharIdx = charCodeToOptimizedIndex(code);\n result[optimizedCharIdx] = optimizedCharIdx;\n if (ignoreCase === true) {\n handleIgnoreCase(code, result);\n }\n}\nfunction handleIgnoreCase(code, result) {\n var char = String.fromCharCode(code);\n var upperChar = char.toUpperCase();\n /* istanbul ignore else */\n if (upperChar !== char) {\n var optimizedCharIdx = charCodeToOptimizedIndex(upperChar.charCodeAt(0));\n result[optimizedCharIdx] = optimizedCharIdx;\n }\n else {\n var lowerChar = char.toLowerCase();\n if (lowerChar !== char) {\n var optimizedCharIdx = charCodeToOptimizedIndex(lowerChar.charCodeAt(0));\n result[optimizedCharIdx] = optimizedCharIdx;\n }\n }\n}\nfunction findCode(setNode, targetCharCodes) {\n return find(setNode.value, function (codeOrRange) {\n if (typeof codeOrRange === \"number\") {\n return contains(targetCharCodes, codeOrRange);\n }\n else {\n // range\n var range_1 = codeOrRange;\n return (find(targetCharCodes, function (targetCode) {\n return range_1.from <= targetCode && targetCode <= range_1.to;\n }) !== undefined);\n }\n });\n}\nfunction isWholeOptional(ast) {\n if (ast.quantifier && ast.quantifier.atLeast === 0) {\n return true;\n }\n if (!ast.value) {\n return false;\n }\n return isArray(ast.value)\n ? every(ast.value, isWholeOptional)\n : isWholeOptional(ast.value);\n}\nvar CharCodeFinder = /** @class */ (function (_super) {\n __extends(CharCodeFinder, _super);\n function CharCodeFinder(targetCharCodes) {\n var _this = _super.call(this) || this;\n _this.targetCharCodes = targetCharCodes;\n _this.found = false;\n return _this;\n }\n CharCodeFinder.prototype.visitChildren = function (node) {\n // No need to keep looking...\n if (this.found === true) {\n return;\n }\n // switch lookaheads as they do not actually consume any characters thus\n // finding a charCode at lookahead context does not mean that regexp can actually contain it in a match.\n switch (node.type) {\n case \"Lookahead\":\n this.visitLookahead(node);\n return;\n case \"NegativeLookahead\":\n this.visitNegativeLookahead(node);\n return;\n }\n _super.prototype.visitChildren.call(this, node);\n };\n CharCodeFinder.prototype.visitCharacter = function (node) {\n if (contains(this.targetCharCodes, node.value)) {\n this.found = true;\n }\n };\n CharCodeFinder.prototype.visitSet = function (node) {\n if (node.complement) {\n if (findCode(node, this.targetCharCodes) === undefined) {\n this.found = true;\n }\n }\n else {\n if (findCode(node, this.targetCharCodes) !== undefined) {\n this.found = true;\n }\n }\n };\n return CharCodeFinder;\n}(BaseRegExpVisitor));\nexport function canMatchCharCode(charCodes, pattern) {\n if (pattern instanceof RegExp) {\n var ast = getRegExpAst(pattern);\n var charCodeFinder = new CharCodeFinder(charCodes);\n charCodeFinder.visit(ast);\n return charCodeFinder.found;\n }\n else {\n return (find(pattern, function (char) {\n return contains(charCodes, char.charCodeAt(0));\n }) !== undefined);\n }\n}\n//# sourceMappingURL=reg_exp.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseRegExpVisitor } from \"regexp-to-ast\";\nimport { Lexer, LexerDefinitionErrorType } from \"./lexer_public\";\nimport { compact, contains, defaults, difference, filter, find, first, flatten, forEach, has, indexOf, isArray, isEmpty, isFunction, isRegExp, isString, isUndefined, keys, map, mapValues, packArray, PRINT_ERROR, reduce, reject } from \"../utils/utils\";\nimport { canMatchCharCode, failedOptimizationPrefixMsg, getOptimizedStartCodesIndices } from \"./reg_exp\";\nimport { getRegExpAst } from \"./reg_exp_parser\";\nvar PATTERN = \"PATTERN\";\nexport var DEFAULT_MODE = \"defaultMode\";\nexport var MODES = \"modes\";\nexport var SUPPORT_STICKY = typeof new RegExp(\"(?:)\").sticky === \"boolean\";\nexport function disableSticky() {\n SUPPORT_STICKY = false;\n}\nexport function enableSticky() {\n SUPPORT_STICKY = true;\n}\nexport function analyzeTokenTypes(tokenTypes, options) {\n options = defaults(options, {\n useSticky: SUPPORT_STICKY,\n debug: false,\n safeMode: false,\n positionTracking: \"full\",\n lineTerminatorCharacters: [\"\\r\", \"\\n\"],\n tracer: function (msg, action) { return action(); }\n });\n var tracer = options.tracer;\n tracer(\"initCharCodeToOptimizedIndexMap\", function () {\n initCharCodeToOptimizedIndexMap();\n });\n var onlyRelevantTypes;\n tracer(\"Reject Lexer.NA\", function () {\n onlyRelevantTypes = reject(tokenTypes, function (currType) {\n return currType[PATTERN] === Lexer.NA;\n });\n });\n var hasCustom = false;\n var allTransformedPatterns;\n tracer(\"Transform Patterns\", function () {\n hasCustom = false;\n allTransformedPatterns = map(onlyRelevantTypes, function (currType) {\n var currPattern = currType[PATTERN];\n /* istanbul ignore else */\n if (isRegExp(currPattern)) {\n var regExpSource = currPattern.source;\n if (regExpSource.length === 1 &&\n // only these regExp meta characters which can appear in a length one regExp\n regExpSource !== \"^\" &&\n regExpSource !== \"$\" &&\n regExpSource !== \".\") {\n return regExpSource;\n }\n else if (regExpSource.length === 2 &&\n regExpSource[0] === \"\\\\\" &&\n // not a meta character\n !contains([\n \"d\",\n \"D\",\n \"s\",\n \"S\",\n \"t\",\n \"r\",\n \"n\",\n \"t\",\n \"0\",\n \"c\",\n \"b\",\n \"B\",\n \"f\",\n \"v\",\n \"w\",\n \"W\"\n ], regExpSource[1])) {\n // escaped meta Characters: /\\+/ /\\[/\n // or redundant escaping: /\\a/\n // without the escaping \"\\\"\n return regExpSource[1];\n }\n else {\n return options.useSticky\n ? addStickyFlag(currPattern)\n : addStartOfInput(currPattern);\n }\n }\n else if (isFunction(currPattern)) {\n hasCustom = true;\n // CustomPatternMatcherFunc - custom patterns do not require any transformations, only wrapping in a RegExp Like object\n return { exec: currPattern };\n }\n else if (has(currPattern, \"exec\")) {\n hasCustom = true;\n // ICustomPattern\n return currPattern;\n }\n else if (typeof currPattern === \"string\") {\n if (currPattern.length === 1) {\n return currPattern;\n }\n else {\n var escapedRegExpString = currPattern.replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\");\n var wrappedRegExp = new RegExp(escapedRegExpString);\n return options.useSticky\n ? addStickyFlag(wrappedRegExp)\n : addStartOfInput(wrappedRegExp);\n }\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n });\n var patternIdxToType;\n var patternIdxToGroup;\n var patternIdxToLongerAltIdx;\n var patternIdxToPushMode;\n var patternIdxToPopMode;\n tracer(\"misc mapping\", function () {\n patternIdxToType = map(onlyRelevantTypes, function (currType) { return currType.tokenTypeIdx; });\n patternIdxToGroup = map(onlyRelevantTypes, function (clazz) {\n var groupName = clazz.GROUP;\n /* istanbul ignore next */\n if (groupName === Lexer.SKIPPED) {\n return undefined;\n }\n else if (isString(groupName)) {\n return groupName;\n }\n else if (isUndefined(groupName)) {\n return false;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n patternIdxToLongerAltIdx = map(onlyRelevantTypes, function (clazz) {\n var longerAltType = clazz.LONGER_ALT;\n if (longerAltType) {\n var longerAltIdx = indexOf(onlyRelevantTypes, longerAltType);\n return longerAltIdx;\n }\n });\n patternIdxToPushMode = map(onlyRelevantTypes, function (clazz) { return clazz.PUSH_MODE; });\n patternIdxToPopMode = map(onlyRelevantTypes, function (clazz) {\n return has(clazz, \"POP_MODE\");\n });\n });\n var patternIdxToCanLineTerminator;\n tracer(\"Line Terminator Handling\", function () {\n var lineTerminatorCharCodes = getCharCodes(options.lineTerminatorCharacters);\n patternIdxToCanLineTerminator = map(onlyRelevantTypes, function (tokType) { return false; });\n if (options.positionTracking !== \"onlyOffset\") {\n patternIdxToCanLineTerminator = map(onlyRelevantTypes, function (tokType) {\n if (has(tokType, \"LINE_BREAKS\")) {\n return tokType.LINE_BREAKS;\n }\n else {\n if (checkLineBreaksIssues(tokType, lineTerminatorCharCodes) === false) {\n return canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN);\n }\n }\n });\n }\n });\n var patternIdxToIsCustom;\n var patternIdxToShort;\n var emptyGroups;\n var patternIdxToConfig;\n tracer(\"Misc Mapping #2\", function () {\n patternIdxToIsCustom = map(onlyRelevantTypes, isCustomPattern);\n patternIdxToShort = map(allTransformedPatterns, isShortPattern);\n emptyGroups = reduce(onlyRelevantTypes, function (acc, clazz) {\n var groupName = clazz.GROUP;\n if (isString(groupName) && !(groupName === Lexer.SKIPPED)) {\n acc[groupName] = [];\n }\n return acc;\n }, {});\n patternIdxToConfig = map(allTransformedPatterns, function (x, idx) {\n return {\n pattern: allTransformedPatterns[idx],\n longerAlt: patternIdxToLongerAltIdx[idx],\n canLineTerminator: patternIdxToCanLineTerminator[idx],\n isCustom: patternIdxToIsCustom[idx],\n short: patternIdxToShort[idx],\n group: patternIdxToGroup[idx],\n push: patternIdxToPushMode[idx],\n pop: patternIdxToPopMode[idx],\n tokenTypeIdx: patternIdxToType[idx],\n tokenType: onlyRelevantTypes[idx]\n };\n });\n });\n var canBeOptimized = true;\n var charCodeToPatternIdxToConfig = [];\n if (!options.safeMode) {\n tracer(\"First Char Optimization\", function () {\n charCodeToPatternIdxToConfig = reduce(onlyRelevantTypes, function (result, currTokType, idx) {\n if (typeof currTokType.PATTERN === \"string\") {\n var charCode = currTokType.PATTERN.charCodeAt(0);\n var optimizedIdx = charCodeToOptimizedIndex(charCode);\n addToMapOfArrays(result, optimizedIdx, patternIdxToConfig[idx]);\n }\n else if (isArray(currTokType.START_CHARS_HINT)) {\n var lastOptimizedIdx_1;\n forEach(currTokType.START_CHARS_HINT, function (charOrInt) {\n var charCode = typeof charOrInt === \"string\"\n ? charOrInt.charCodeAt(0)\n : charOrInt;\n var currOptimizedIdx = charCodeToOptimizedIndex(charCode);\n // Avoid adding the config multiple times\n if (lastOptimizedIdx_1 !== currOptimizedIdx) {\n lastOptimizedIdx_1 = currOptimizedIdx;\n addToMapOfArrays(result, currOptimizedIdx, patternIdxToConfig[idx]);\n }\n });\n }\n else if (isRegExp(currTokType.PATTERN)) {\n if (currTokType.PATTERN.unicode) {\n canBeOptimized = false;\n if (options.ensureOptimizations) {\n PRINT_ERROR(\"\" + failedOptimizationPrefixMsg +\n (\"\\tUnable to analyze < \" + currTokType.PATTERN.toString() + \" > pattern.\\n\") +\n \"\\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\\n\" +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE\");\n }\n }\n else {\n var optimizedCodes = getOptimizedStartCodesIndices(currTokType.PATTERN, options.ensureOptimizations);\n /* istanbul ignore if */\n // start code will only be empty given an empty regExp or failure of regexp-to-ast library\n // the first should be a different validation and the second cannot be tested.\n if (isEmpty(optimizedCodes)) {\n // we cannot understand what codes may start possible matches\n // The optimization correctness requires knowing start codes for ALL patterns.\n // Not actually sure this is an error, no debug message\n canBeOptimized = false;\n }\n forEach(optimizedCodes, function (code) {\n addToMapOfArrays(result, code, patternIdxToConfig[idx]);\n });\n }\n }\n else {\n if (options.ensureOptimizations) {\n PRINT_ERROR(\"\" + failedOptimizationPrefixMsg +\n (\"\\tTokenType: <\" + currTokType.name + \"> is using a custom token pattern without providing <start_chars_hint> parameter.\\n\") +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE\");\n }\n canBeOptimized = false;\n }\n return result;\n }, []);\n });\n }\n tracer(\"ArrayPacking\", function () {\n charCodeToPatternIdxToConfig = packArray(charCodeToPatternIdxToConfig);\n });\n return {\n emptyGroups: emptyGroups,\n patternIdxToConfig: patternIdxToConfig,\n charCodeToPatternIdxToConfig: charCodeToPatternIdxToConfig,\n hasCustom: hasCustom,\n canBeOptimized: canBeOptimized\n };\n}\nexport function validatePatterns(tokenTypes, validModesNames) {\n var errors = [];\n var missingResult = findMissingPatterns(tokenTypes);\n errors = errors.concat(missingResult.errors);\n var invalidResult = findInvalidPatterns(missingResult.valid);\n var validTokenTypes = invalidResult.valid;\n errors = errors.concat(invalidResult.errors);\n errors = errors.concat(validateRegExpPattern(validTokenTypes));\n errors = errors.concat(findInvalidGroupType(validTokenTypes));\n errors = errors.concat(findModesThatDoNotExist(validTokenTypes, validModesNames));\n errors = errors.concat(findUnreachablePatterns(validTokenTypes));\n return errors;\n}\nfunction validateRegExpPattern(tokenTypes) {\n var errors = [];\n var withRegExpPatterns = filter(tokenTypes, function (currTokType) {\n return isRegExp(currTokType[PATTERN]);\n });\n errors = errors.concat(findEndOfInputAnchor(withRegExpPatterns));\n errors = errors.concat(findStartOfInputAnchor(withRegExpPatterns));\n errors = errors.concat(findUnsupportedFlags(withRegExpPatterns));\n errors = errors.concat(findDuplicatePatterns(withRegExpPatterns));\n errors = errors.concat(findEmptyMatchRegExps(withRegExpPatterns));\n return errors;\n}\nexport function findMissingPatterns(tokenTypes) {\n var tokenTypesWithMissingPattern = filter(tokenTypes, function (currType) {\n return !has(currType, PATTERN);\n });\n var errors = map(tokenTypesWithMissingPattern, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- missing static 'PATTERN' property\",\n type: LexerDefinitionErrorType.MISSING_PATTERN,\n tokenTypes: [currType]\n };\n });\n var valid = difference(tokenTypes, tokenTypesWithMissingPattern);\n return { errors: errors, valid: valid };\n}\nexport function findInvalidPatterns(tokenTypes) {\n var tokenTypesWithInvalidPattern = filter(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n return (!isRegExp(pattern) &&\n !isFunction(pattern) &&\n !has(pattern, \"exec\") &&\n !isString(pattern));\n });\n var errors = map(tokenTypesWithInvalidPattern, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' can only be a RegExp, a\" +\n \" Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.\",\n type: LexerDefinitionErrorType.INVALID_PATTERN,\n tokenTypes: [currType]\n };\n });\n var valid = difference(tokenTypes, tokenTypesWithInvalidPattern);\n return { errors: errors, valid: valid };\n}\nvar end_of_input = /[^\\\\][\\$]/;\nexport function findEndOfInputAnchor(tokenTypes) {\n var EndAnchorFinder = /** @class */ (function (_super) {\n __extends(EndAnchorFinder, _super);\n function EndAnchorFinder() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.found = false;\n return _this;\n }\n EndAnchorFinder.prototype.visitEndAnchor = function (node) {\n this.found = true;\n };\n return EndAnchorFinder;\n }(BaseRegExpVisitor));\n var invalidRegex = filter(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n try {\n var regexpAst = getRegExpAst(pattern);\n var endAnchorVisitor = new EndAnchorFinder();\n endAnchorVisitor.visit(regexpAst);\n return endAnchorVisitor.found;\n }\n catch (e) {\n // old behavior in case of runtime exceptions with regexp-to-ast.\n /* istanbul ignore next - cannot ensure an error in regexp-to-ast*/\n return end_of_input.test(pattern.source);\n }\n });\n var errors = map(invalidRegex, function (currType) {\n return {\n message: \"Unexpected RegExp Anchor Error:\\n\" +\n \"\\tToken Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' cannot contain end of input anchor '$'\\n\" +\n \"\\tSee sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#ANCHORS\" +\n \"\\tfor details.\",\n type: LexerDefinitionErrorType.EOI_ANCHOR_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nexport function findEmptyMatchRegExps(tokenTypes) {\n var matchesEmptyString = filter(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n return pattern.test(\"\");\n });\n var errors = map(matchesEmptyString, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' must not match an empty string\",\n type: LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nvar start_of_input = /[^\\\\[][\\^]|^\\^/;\nexport function findStartOfInputAnchor(tokenTypes) {\n var StartAnchorFinder = /** @class */ (function (_super) {\n __extends(StartAnchorFinder, _super);\n function StartAnchorFinder() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.found = false;\n return _this;\n }\n StartAnchorFinder.prototype.visitStartAnchor = function (node) {\n this.found = true;\n };\n return StartAnchorFinder;\n }(BaseRegExpVisitor));\n var invalidRegex = filter(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n try {\n var regexpAst = getRegExpAst(pattern);\n var startAnchorVisitor = new StartAnchorFinder();\n startAnchorVisitor.visit(regexpAst);\n return startAnchorVisitor.found;\n }\n catch (e) {\n // old behavior in case of runtime exceptions with regexp-to-ast.\n /* istanbul ignore next - cannot ensure an error in regexp-to-ast*/\n return start_of_input.test(pattern.source);\n }\n });\n var errors = map(invalidRegex, function (currType) {\n return {\n message: \"Unexpected RegExp Anchor Error:\\n\" +\n \"\\tToken Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' cannot contain start of input anchor '^'\\n\" +\n \"\\tSee https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#ANCHORS\" +\n \"\\tfor details.\",\n type: LexerDefinitionErrorType.SOI_ANCHOR_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nexport function findUnsupportedFlags(tokenTypes) {\n var invalidFlags = filter(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n return (pattern instanceof RegExp && (pattern.multiline || pattern.global));\n });\n var errors = map(invalidFlags, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' may NOT contain global('g') or multiline('m')\",\n type: LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\n// This can only test for identical duplicate RegExps, not semantically equivalent ones.\nexport function findDuplicatePatterns(tokenTypes) {\n var found = [];\n var identicalPatterns = map(tokenTypes, function (outerType) {\n return reduce(tokenTypes, function (result, innerType) {\n if (outerType.PATTERN.source === innerType.PATTERN.source &&\n !contains(found, innerType) &&\n innerType.PATTERN !== Lexer.NA) {\n // this avoids duplicates in the result, each Token Type may only appear in one \"set\"\n // in essence we are creating Equivalence classes on equality relation.\n found.push(innerType);\n result.push(innerType);\n return result;\n }\n return result;\n }, []);\n });\n identicalPatterns = compact(identicalPatterns);\n var duplicatePatterns = filter(identicalPatterns, function (currIdenticalSet) {\n return currIdenticalSet.length > 1;\n });\n var errors = map(duplicatePatterns, function (setOfIdentical) {\n var tokenTypeNames = map(setOfIdentical, function (currType) {\n return currType.name;\n });\n var dupPatternSrc = first(setOfIdentical).PATTERN;\n return {\n message: \"The same RegExp pattern ->\" + dupPatternSrc + \"<-\" +\n (\"has been used in all of the following Token Types: \" + tokenTypeNames.join(\", \") + \" <-\"),\n type: LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,\n tokenTypes: setOfIdentical\n };\n });\n return errors;\n}\nexport function findInvalidGroupType(tokenTypes) {\n var invalidTypes = filter(tokenTypes, function (clazz) {\n if (!has(clazz, \"GROUP\")) {\n return false;\n }\n var group = clazz.GROUP;\n return group !== Lexer.SKIPPED && group !== Lexer.NA && !isString(group);\n });\n var errors = map(invalidTypes, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String\",\n type: LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nexport function findModesThatDoNotExist(tokenTypes, validModes) {\n var invalidModes = filter(tokenTypes, function (clazz) {\n return (clazz.PUSH_MODE !== undefined &&\n !contains(validModes, clazz.PUSH_MODE));\n });\n var errors = map(invalidModes, function (tokType) {\n var msg = \"Token Type: ->\" + tokType.name + \"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->\" + tokType.PUSH_MODE + \"<-\" +\n \"which does not exist\";\n return {\n message: msg,\n type: LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,\n tokenTypes: [tokType]\n };\n });\n return errors;\n}\nexport function findUnreachablePatterns(tokenTypes) {\n var errors = [];\n var canBeTested = reduce(tokenTypes, function (result, tokType, idx) {\n var pattern = tokType.PATTERN;\n if (pattern === Lexer.NA) {\n return result;\n }\n // a more comprehensive validation for all forms of regExps would require\n // deeper regExp analysis capabilities\n if (isString(pattern)) {\n result.push({ str: pattern, idx: idx, tokenType: tokType });\n }\n else if (isRegExp(pattern) && noMetaChar(pattern)) {\n result.push({ str: pattern.source, idx: idx, tokenType: tokType });\n }\n return result;\n }, []);\n forEach(tokenTypes, function (tokType, testIdx) {\n forEach(canBeTested, function (_a) {\n var str = _a.str, idx = _a.idx, tokenType = _a.tokenType;\n if (testIdx < idx && testTokenType(str, tokType.PATTERN)) {\n var msg = \"Token: ->\" + tokenType.name + \"<- can never be matched.\\n\" +\n (\"Because it appears AFTER the Token Type ->\" + tokType.name + \"<-\") +\n \"in the lexer's definition.\\n\" +\n \"See https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#UNREACHABLE\";\n errors.push({\n message: msg,\n type: LexerDefinitionErrorType.UNREACHABLE_PATTERN,\n tokenTypes: [tokType, tokenType]\n });\n }\n });\n });\n return errors;\n}\nfunction testTokenType(str, pattern) {\n /* istanbul ignore else */\n if (isRegExp(pattern)) {\n var regExpArray = pattern.exec(str);\n return regExpArray !== null && regExpArray.index === 0;\n }\n else if (isFunction(pattern)) {\n // maintain the API of custom patterns\n return pattern(str, 0, [], {});\n }\n else if (has(pattern, \"exec\")) {\n // maintain the API of custom patterns\n return pattern.exec(str, 0, [], {});\n }\n else if (typeof pattern === \"string\") {\n return pattern === str;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nfunction noMetaChar(regExp) {\n //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n var metaChars = [\n \".\",\n \"\\\\\",\n \"[\",\n \"]\",\n \"|\",\n \"^\",\n \"$\",\n \"(\",\n \")\",\n \"?\",\n \"*\",\n \"+\",\n \"{\"\n ];\n return (find(metaChars, function (char) { return regExp.source.indexOf(char) !== -1; }) ===\n undefined);\n}\nexport function addStartOfInput(pattern) {\n var flags = pattern.ignoreCase ? \"i\" : \"\";\n // always wrapping in a none capturing group preceded by '^' to make sure matching can only work on start of input.\n // duplicate/redundant start of input markers have no meaning (/^^^^A/ === /^A/)\n return new RegExp(\"^(?:\" + pattern.source + \")\", flags);\n}\nexport function addStickyFlag(pattern) {\n var flags = pattern.ignoreCase ? \"iy\" : \"y\";\n // always wrapping in a none capturing group preceded by '^' to make sure matching can only work on start of input.\n // duplicate/redundant start of input markers have no meaning (/^^^^A/ === /^A/)\n return new RegExp(\"\" + pattern.source, flags);\n}\nexport function performRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) {\n var errors = [];\n // some run time checks to help the end users.\n if (!has(lexerDefinition, DEFAULT_MODE)) {\n errors.push({\n message: \"A MultiMode Lexer cannot be initialized without a <\" +\n DEFAULT_MODE +\n \"> property in its definition\\n\",\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\n });\n }\n if (!has(lexerDefinition, MODES)) {\n errors.push({\n message: \"A MultiMode Lexer cannot be initialized without a <\" +\n MODES +\n \"> property in its definition\\n\",\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\n });\n }\n if (has(lexerDefinition, MODES) &&\n has(lexerDefinition, DEFAULT_MODE) &&\n !has(lexerDefinition.modes, lexerDefinition.defaultMode)) {\n errors.push({\n message: \"A MultiMode Lexer cannot be initialized with a \" + DEFAULT_MODE + \": <\" + lexerDefinition.defaultMode + \">\" +\n \"which does not exist\\n\",\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\n });\n }\n if (has(lexerDefinition, MODES)) {\n forEach(lexerDefinition.modes, function (currModeValue, currModeName) {\n forEach(currModeValue, function (currTokType, currIdx) {\n if (isUndefined(currTokType)) {\n errors.push({\n message: \"A Lexer cannot be initialized using an undefined Token Type. Mode:\" +\n (\"<\" + currModeName + \"> at index: <\" + currIdx + \">\\n\"),\n type: LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\n });\n }\n });\n });\n }\n return errors;\n}\nexport function performWarningRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) {\n var warnings = [];\n var hasAnyLineBreak = false;\n var allTokenTypes = compact(flatten(mapValues(lexerDefinition.modes, function (tokTypes) { return tokTypes; })));\n var concreteTokenTypes = reject(allTokenTypes, function (currType) { return currType[PATTERN] === Lexer.NA; });\n var terminatorCharCodes = getCharCodes(lineTerminatorCharacters);\n if (trackLines) {\n forEach(concreteTokenTypes, function (tokType) {\n var currIssue = checkLineBreaksIssues(tokType, terminatorCharCodes);\n if (currIssue !== false) {\n var message = buildLineBreakIssueMessage(tokType, currIssue);\n var warningDescriptor = {\n message: message,\n type: currIssue.issue,\n tokenType: tokType\n };\n warnings.push(warningDescriptor);\n }\n else {\n // we don't want to attempt to scan if the user explicitly specified the line_breaks option.\n if (has(tokType, \"LINE_BREAKS\")) {\n if (tokType.LINE_BREAKS === true) {\n hasAnyLineBreak = true;\n }\n }\n else {\n if (canMatchCharCode(terminatorCharCodes, tokType.PATTERN)) {\n hasAnyLineBreak = true;\n }\n }\n }\n });\n }\n if (trackLines && !hasAnyLineBreak) {\n warnings.push({\n message: \"Warning: No LINE_BREAKS Found.\\n\" +\n \"\\tThis Lexer has been defined to track line and column information,\\n\" +\n \"\\tBut none of the Token Types can be identified as matching a line terminator.\\n\" +\n \"\\tSee https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \\n\" +\n \"\\tfor details.\",\n type: LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS\n });\n }\n return warnings;\n}\nexport function cloneEmptyGroups(emptyGroups) {\n var clonedResult = {};\n var groupKeys = keys(emptyGroups);\n forEach(groupKeys, function (currKey) {\n var currGroupValue = emptyGroups[currKey];\n /* istanbul ignore else */\n if (isArray(currGroupValue)) {\n clonedResult[currKey] = [];\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n return clonedResult;\n}\n// TODO: refactor to avoid duplication\nexport function isCustomPattern(tokenType) {\n var pattern = tokenType.PATTERN;\n /* istanbul ignore else */\n if (isRegExp(pattern)) {\n return false;\n }\n else if (isFunction(pattern)) {\n // CustomPatternMatcherFunc - custom patterns do not require any transformations, only wrapping in a RegExp Like object\n return true;\n }\n else if (has(pattern, \"exec\")) {\n // ICustomPattern\n return true;\n }\n else if (isString(pattern)) {\n return false;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexport function isShortPattern(pattern) {\n if (isString(pattern) && pattern.length === 1) {\n return pattern.charCodeAt(0);\n }\n else {\n return false;\n }\n}\n/**\n * Faster than using a RegExp for default newline detection during lexing.\n */\nexport var LineTerminatorOptimizedTester = {\n // implements /\\n|\\r\\n?/g.test\n test: function (text) {\n var len = text.length;\n for (var i = this.lastIndex; i < len; i++) {\n var c = text.charCodeAt(i);\n if (c === 10) {\n this.lastIndex = i + 1;\n return true;\n }\n else if (c === 13) {\n if (text.charCodeAt(i + 1) === 10) {\n this.lastIndex = i + 2;\n }\n else {\n this.lastIndex = i + 1;\n }\n return true;\n }\n }\n return false;\n },\n lastIndex: 0\n};\nfunction checkLineBreaksIssues(tokType, lineTerminatorCharCodes) {\n if (has(tokType, \"LINE_BREAKS\")) {\n // if the user explicitly declared the line_breaks option we will respect their choice\n // and assume it is correct.\n return false;\n }\n else {\n /* istanbul ignore else */\n if (isRegExp(tokType.PATTERN)) {\n try {\n canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN);\n }\n catch (e) {\n /* istanbul ignore next - to test this we would have to mock <canMatchCharCode> to throw an error */\n return {\n issue: LexerDefinitionErrorType.IDENTIFY_TERMINATOR,\n errMsg: e.message\n };\n }\n return false;\n }\n else if (isString(tokType.PATTERN)) {\n // string literal patterns can always be analyzed to detect line terminator usage\n return false;\n }\n else if (isCustomPattern(tokType)) {\n // custom token types\n return { issue: LexerDefinitionErrorType.CUSTOM_LINE_BREAK };\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n }\n}\nexport function buildLineBreakIssueMessage(tokType, details) {\n /* istanbul ignore else */\n if (details.issue === LexerDefinitionErrorType.IDENTIFY_TERMINATOR) {\n return (\"Warning: unable to identify line terminator usage in pattern.\\n\" +\n (\"\\tThe problem is in the <\" + tokType.name + \"> Token Type\\n\") +\n (\"\\t Root cause: \" + details.errMsg + \".\\n\") +\n \"\\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR\");\n }\n else if (details.issue === LexerDefinitionErrorType.CUSTOM_LINE_BREAK) {\n return (\"Warning: A Custom Token Pattern should specify the <line_breaks> option.\\n\" +\n (\"\\tThe problem is in the <\" + tokType.name + \"> Token Type\\n\") +\n \"\\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK\");\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nfunction getCharCodes(charsOrCodes) {\n var charCodes = map(charsOrCodes, function (numOrString) {\n if (isString(numOrString) && numOrString.length > 0) {\n return numOrString.charCodeAt(0);\n }\n else {\n return numOrString;\n }\n });\n return charCodes;\n}\nfunction addToMapOfArrays(map, key, value) {\n if (map[key] === undefined) {\n map[key] = [value];\n }\n else {\n map[key].push(value);\n }\n}\nexport var minOptimizationVal = 256;\n/**\n * We ae mapping charCode above ASCI (256) into buckets each in the size of 256.\n * This is because ASCI are the most common start chars so each one of those will get its own\n * possible token configs vector.\n *\n * Tokens starting with charCodes \"above\" ASCI are uncommon, so we can \"afford\"\n * to place these into buckets of possible token configs, What we gain from\n * this is avoiding the case of creating an optimization 'charCodeToPatternIdxToConfig'\n * which would contain 10,000+ arrays of small size (e.g unicode Identifiers scenario).\n * Our 'charCodeToPatternIdxToConfig' max size will now be:\n * 256 + (2^16 / 2^8) - 1 === 511\n *\n * note the hack for fast division integer part extraction\n * See: https://stackoverflow.com/a/4228528\n */\nexport function charCodeToOptimizedIndex(charCode) {\n return charCode < minOptimizationVal\n ? charCode\n : charCodeToOptimizedIdxMap[charCode];\n}\n/**\n * This is a compromise between cold start / hot running performance\n * Creating this array takes ~3ms on a modern machine,\n * But if we perform the computation at runtime as needed the CSS Lexer benchmark\n * performance degrades by ~10%\n *\n * TODO: Perhaps it should be lazy initialized only if a charCode > 255 is used.\n */\nvar charCodeToOptimizedIdxMap = [];\nfunction initCharCodeToOptimizedIndexMap() {\n if (isEmpty(charCodeToOptimizedIdxMap)) {\n charCodeToOptimizedIdxMap = new Array(65536);\n for (var i = 0; i < 65536; i++) {\n /* tslint:disable */\n charCodeToOptimizedIdxMap[i] = i > 255 ? 255 + ~~(i / 255) : i;\n /* tslint:enable */\n }\n }\n}\n//# sourceMappingURL=lexer.js.map","import { cloneArr, compact, contains, difference, flatten, forEach, has, isArray, isEmpty, map } from \"../utils/utils\";\nexport function tokenStructuredMatcher(tokInstance, tokConstructor) {\n var instanceType = tokInstance.tokenTypeIdx;\n if (instanceType === tokConstructor.tokenTypeIdx) {\n return true;\n }\n else {\n return (tokConstructor.isParent === true &&\n tokConstructor.categoryMatchesMap[instanceType] === true);\n }\n}\n// Optimized tokenMatcher in case our grammar does not use token categories\n// Being so tiny it is much more likely to be in-lined and this avoid the function call overhead\nexport function tokenStructuredMatcherNoCategories(token, tokType) {\n return token.tokenTypeIdx === tokType.tokenTypeIdx;\n}\nexport var tokenShortNameIdx = 1;\nexport var tokenIdxToClass = {};\nexport function augmentTokenTypes(tokenTypes) {\n // collect the parent Token Types as well.\n var tokenTypesAndParents = expandCategories(tokenTypes);\n // add required tokenType and categoryMatches properties\n assignTokenDefaultProps(tokenTypesAndParents);\n // fill up the categoryMatches\n assignCategoriesMapProp(tokenTypesAndParents);\n assignCategoriesTokensProp(tokenTypesAndParents);\n forEach(tokenTypesAndParents, function (tokType) {\n tokType.isParent = tokType.categoryMatches.length > 0;\n });\n}\nexport function expandCategories(tokenTypes) {\n var result = cloneArr(tokenTypes);\n var categories = tokenTypes;\n var searching = true;\n while (searching) {\n categories = compact(flatten(map(categories, function (currTokType) { return currTokType.CATEGORIES; })));\n var newCategories = difference(categories, result);\n result = result.concat(newCategories);\n if (isEmpty(newCategories)) {\n searching = false;\n }\n else {\n categories = newCategories;\n }\n }\n return result;\n}\nexport function assignTokenDefaultProps(tokenTypes) {\n forEach(tokenTypes, function (currTokType) {\n if (!hasShortKeyProperty(currTokType)) {\n tokenIdxToClass[tokenShortNameIdx] = currTokType;\n currTokType.tokenTypeIdx = tokenShortNameIdx++;\n }\n // CATEGORIES? : TokenType | TokenType[]\n if (hasCategoriesProperty(currTokType) &&\n !isArray(currTokType.CATEGORIES)\n // &&\n // !isUndefined(currTokType.CATEGORIES.PATTERN)\n ) {\n currTokType.CATEGORIES = [currTokType.CATEGORIES];\n }\n if (!hasCategoriesProperty(currTokType)) {\n currTokType.CATEGORIES = [];\n }\n if (!hasExtendingTokensTypesProperty(currTokType)) {\n currTokType.categoryMatches = [];\n }\n if (!hasExtendingTokensTypesMapProperty(currTokType)) {\n currTokType.categoryMatchesMap = {};\n }\n });\n}\nexport function assignCategoriesTokensProp(tokenTypes) {\n forEach(tokenTypes, function (currTokType) {\n // avoid duplications\n currTokType.categoryMatches = [];\n forEach(currTokType.categoryMatchesMap, function (val, key) {\n currTokType.categoryMatches.push(tokenIdxToClass[key].tokenTypeIdx);\n });\n });\n}\nexport function assignCategoriesMapProp(tokenTypes) {\n forEach(tokenTypes, function (currTokType) {\n singleAssignCategoriesToksMap([], currTokType);\n });\n}\nexport function singleAssignCategoriesToksMap(path, nextNode) {\n forEach(path, function (pathNode) {\n nextNode.categoryMatchesMap[pathNode.tokenTypeIdx] = true;\n });\n forEach(nextNode.CATEGORIES, function (nextCategory) {\n var newPath = path.concat(nextNode);\n // avoids infinite loops due to cyclic categories.\n if (!contains(newPath, nextCategory)) {\n singleAssignCategoriesToksMap(newPath, nextCategory);\n }\n });\n}\nexport function hasShortKeyProperty(tokType) {\n return has(tokType, \"tokenTypeIdx\");\n}\nexport function hasCategoriesProperty(tokType) {\n return has(tokType, \"CATEGORIES\");\n}\nexport function hasExtendingTokensTypesProperty(tokType) {\n return has(tokType, \"categoryMatches\");\n}\nexport function hasExtendingTokensTypesMapProperty(tokType) {\n return has(tokType, \"categoryMatchesMap\");\n}\nexport function isTokenType(tokType) {\n return has(tokType, \"tokenTypeIdx\");\n}\n//# sourceMappingURL=tokens.js.map","export var defaultLexerErrorProvider = {\n buildUnableToPopLexerModeMessage: function (token) {\n return \"Unable to pop Lexer Mode after encountering Token ->\" + token.image + \"<- The Mode Stack is empty\";\n },\n buildUnexpectedCharactersMessage: function (fullText, startOffset, length, line, column) {\n return (\"unexpected character: ->\" + fullText.charAt(startOffset) + \"<- at offset: \" + startOffset + \",\" + (\" skipped \" + length + \" characters.\"));\n }\n};\n//# sourceMappingURL=lexer_errors_public.js.map","import { analyzeTokenTypes, charCodeToOptimizedIndex, cloneEmptyGroups, DEFAULT_MODE, LineTerminatorOptimizedTester, performRuntimeChecks, performWarningRuntimeChecks, SUPPORT_STICKY, validatePatterns } from \"./lexer\";\nimport { cloneArr, cloneObj, forEach, IDENTITY, isArray, isEmpty, isUndefined, keys, last, map, merge, NOOP, PRINT_WARNING, reduce, reject, timer, toFastProperties } from \"../utils/utils\";\nimport { augmentTokenTypes } from \"./tokens\";\nimport { defaultLexerErrorProvider } from \"../scan/lexer_errors_public\";\nimport { clearRegExpParserCache } from \"./reg_exp_parser\";\nexport var LexerDefinitionErrorType;\n(function (LexerDefinitionErrorType) {\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MISSING_PATTERN\"] = 0] = \"MISSING_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"INVALID_PATTERN\"] = 1] = \"INVALID_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"EOI_ANCHOR_FOUND\"] = 2] = \"EOI_ANCHOR_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"UNSUPPORTED_FLAGS_FOUND\"] = 3] = \"UNSUPPORTED_FLAGS_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"DUPLICATE_PATTERNS_FOUND\"] = 4] = \"DUPLICATE_PATTERNS_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"INVALID_GROUP_TYPE_FOUND\"] = 5] = \"INVALID_GROUP_TYPE_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"PUSH_MODE_DOES_NOT_EXIST\"] = 6] = \"PUSH_MODE_DOES_NOT_EXIST\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\"] = 7] = \"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\"] = 8] = \"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\"] = 9] = \"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\"] = 10] = \"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"SOI_ANCHOR_FOUND\"] = 11] = \"SOI_ANCHOR_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"EMPTY_MATCH_PATTERN\"] = 12] = \"EMPTY_MATCH_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"NO_LINE_BREAKS_FLAGS\"] = 13] = \"NO_LINE_BREAKS_FLAGS\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"UNREACHABLE_PATTERN\"] = 14] = \"UNREACHABLE_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"IDENTIFY_TERMINATOR\"] = 15] = \"IDENTIFY_TERMINATOR\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"CUSTOM_LINE_BREAK\"] = 16] = \"CUSTOM_LINE_BREAK\";\n})(LexerDefinitionErrorType || (LexerDefinitionErrorType = {}));\nvar DEFAULT_LEXER_CONFIG = {\n deferDefinitionErrorsHandling: false,\n positionTracking: \"full\",\n lineTerminatorsPattern: /\\n|\\r\\n?/g,\n lineTerminatorCharacters: [\"\\n\", \"\\r\"],\n ensureOptimizations: false,\n safeMode: false,\n errorMessageProvider: defaultLexerErrorProvider,\n traceInitPerf: false,\n skipValidations: false\n};\nObject.freeze(DEFAULT_LEXER_CONFIG);\nvar Lexer = /** @class */ (function () {\n function Lexer(lexerDefinition, config) {\n var _this = this;\n if (config === void 0) { config = DEFAULT_LEXER_CONFIG; }\n this.lexerDefinition = lexerDefinition;\n this.lexerDefinitionErrors = [];\n this.lexerDefinitionWarning = [];\n this.patternIdxToConfig = {};\n this.charCodeToPatternIdxToConfig = {};\n this.modes = [];\n this.emptyGroups = {};\n this.config = undefined;\n this.trackStartLines = true;\n this.trackEndLines = true;\n this.hasCustom = false;\n this.canModeBeOptimized = {};\n if (typeof config === \"boolean\") {\n throw Error(\"The second argument to the Lexer constructor is now an ILexerConfig Object.\\n\" +\n \"a boolean 2nd argument is no longer supported\");\n }\n // todo: defaults func?\n this.config = merge(DEFAULT_LEXER_CONFIG, config);\n var traceInitVal = this.config.traceInitPerf;\n if (traceInitVal === true) {\n this.traceInitMaxIdent = Infinity;\n this.traceInitPerf = true;\n }\n else if (typeof traceInitVal === \"number\") {\n this.traceInitMaxIdent = traceInitVal;\n this.traceInitPerf = true;\n }\n this.traceInitIndent = -1;\n this.TRACE_INIT(\"Lexer Constructor\", function () {\n var actualDefinition;\n var hasOnlySingleMode = true;\n _this.TRACE_INIT(\"Lexer Config handling\", function () {\n if (_this.config.lineTerminatorsPattern ===\n DEFAULT_LEXER_CONFIG.lineTerminatorsPattern) {\n // optimized built-in implementation for the defaults definition of lineTerminators\n _this.config.lineTerminatorsPattern = LineTerminatorOptimizedTester;\n }\n else {\n if (_this.config.lineTerminatorCharacters ===\n DEFAULT_LEXER_CONFIG.lineTerminatorCharacters) {\n throw Error(\"Error: Missing <lineTerminatorCharacters> property on the Lexer config.\\n\" +\n \"\\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS\");\n }\n }\n if (config.safeMode && config.ensureOptimizations) {\n throw Error('\"safeMode\" and \"ensureOptimizations\" flags are mutually exclusive.');\n }\n _this.trackStartLines = /full|onlyStart/i.test(_this.config.positionTracking);\n _this.trackEndLines = /full/i.test(_this.config.positionTracking);\n // Convert SingleModeLexerDefinition into a IMultiModeLexerDefinition.\n if (isArray(lexerDefinition)) {\n actualDefinition = { modes: {} };\n actualDefinition.modes[DEFAULT_MODE] = cloneArr(lexerDefinition);\n actualDefinition[DEFAULT_MODE] = DEFAULT_MODE;\n }\n else {\n // no conversion needed, input should already be a IMultiModeLexerDefinition\n hasOnlySingleMode = false;\n actualDefinition = cloneObj((lexerDefinition));\n }\n });\n if (_this.config.skipValidations === false) {\n _this.TRACE_INIT(\"performRuntimeChecks\", function () {\n _this.lexerDefinitionErrors = _this.lexerDefinitionErrors.concat(performRuntimeChecks(actualDefinition, _this.trackStartLines, _this.config.lineTerminatorCharacters));\n });\n _this.TRACE_INIT(\"performWarningRuntimeChecks\", function () {\n _this.lexerDefinitionWarning = _this.lexerDefinitionWarning.concat(performWarningRuntimeChecks(actualDefinition, _this.trackStartLines, _this.config.lineTerminatorCharacters));\n });\n }\n // for extra robustness to avoid throwing an none informative error message\n actualDefinition.modes = actualDefinition.modes\n ? actualDefinition.modes\n : {};\n // an error of undefined TokenTypes will be detected in \"performRuntimeChecks\" above.\n // this transformation is to increase robustness in the case of partially invalid lexer definition.\n forEach(actualDefinition.modes, function (currModeValue, currModeName) {\n actualDefinition.modes[currModeName] = reject(currModeValue, function (currTokType) { return isUndefined(currTokType); });\n });\n var allModeNames = keys(actualDefinition.modes);\n forEach(actualDefinition.modes, function (currModDef, currModName) {\n _this.TRACE_INIT(\"Mode: <\" + currModName + \"> processing\", function () {\n _this.modes.push(currModName);\n if (_this.config.skipValidations === false) {\n _this.TRACE_INIT(\"validatePatterns\", function () {\n _this.lexerDefinitionErrors = _this.lexerDefinitionErrors.concat(validatePatterns(currModDef, allModeNames));\n });\n }\n // If definition errors were encountered, the analysis phase may fail unexpectedly/\n // Considering a lexer with definition errors may never be used, there is no point\n // to performing the analysis anyhow...\n if (isEmpty(_this.lexerDefinitionErrors)) {\n augmentTokenTypes(currModDef);\n var currAnalyzeResult_1;\n _this.TRACE_INIT(\"analyzeTokenTypes\", function () {\n currAnalyzeResult_1 = analyzeTokenTypes(currModDef, {\n lineTerminatorCharacters: _this.config\n .lineTerminatorCharacters,\n positionTracking: config.positionTracking,\n ensureOptimizations: config.ensureOptimizations,\n safeMode: config.safeMode,\n tracer: _this.TRACE_INIT.bind(_this)\n });\n });\n _this.patternIdxToConfig[currModName] =\n currAnalyzeResult_1.patternIdxToConfig;\n _this.charCodeToPatternIdxToConfig[currModName] =\n currAnalyzeResult_1.charCodeToPatternIdxToConfig;\n _this.emptyGroups = merge(_this.emptyGroups, currAnalyzeResult_1.emptyGroups);\n _this.hasCustom =\n currAnalyzeResult_1.hasCustom || _this.hasCustom;\n _this.canModeBeOptimized[currModName] =\n currAnalyzeResult_1.canBeOptimized;\n }\n });\n });\n _this.defaultMode = actualDefinition.defaultMode;\n if (!isEmpty(_this.lexerDefinitionErrors) &&\n !_this.config.deferDefinitionErrorsHandling) {\n var allErrMessages = map(_this.lexerDefinitionErrors, function (error) {\n return error.message;\n });\n var allErrMessagesString = allErrMessages.join(\"-----------------------\\n\");\n throw new Error(\"Errors detected in definition of Lexer:\\n\" +\n allErrMessagesString);\n }\n // Only print warning if there are no errors, This will avoid pl\n forEach(_this.lexerDefinitionWarning, function (warningDescriptor) {\n PRINT_WARNING(warningDescriptor.message);\n });\n _this.TRACE_INIT(\"Choosing sub-methods implementations\", function () {\n // Choose the relevant internal implementations for this specific parser.\n // These implementations should be in-lined by the JavaScript engine\n // to provide optimal performance in each scenario.\n if (SUPPORT_STICKY) {\n _this.chopInput = IDENTITY;\n _this.match = _this.matchWithTest;\n }\n else {\n _this.updateLastIndex = NOOP;\n _this.match = _this.matchWithExec;\n }\n if (hasOnlySingleMode) {\n _this.handleModes = NOOP;\n }\n if (_this.trackStartLines === false) {\n _this.computeNewColumn = IDENTITY;\n }\n if (_this.trackEndLines === false) {\n _this.updateTokenEndLineColumnLocation = NOOP;\n }\n if (/full/i.test(_this.config.positionTracking)) {\n _this.createTokenInstance = _this.createFullToken;\n }\n else if (/onlyStart/i.test(_this.config.positionTracking)) {\n _this.createTokenInstance = _this.createStartOnlyToken;\n }\n else if (/onlyOffset/i.test(_this.config.positionTracking)) {\n _this.createTokenInstance = _this.createOffsetOnlyToken;\n }\n else {\n throw Error(\"Invalid <positionTracking> config option: \\\"\" + _this.config.positionTracking + \"\\\"\");\n }\n if (_this.hasCustom) {\n _this.addToken = _this.addTokenUsingPush;\n _this.handlePayload = _this.handlePayloadWithCustom;\n }\n else {\n _this.addToken = _this.addTokenUsingMemberAccess;\n _this.handlePayload = _this.handlePayloadNoCustom;\n }\n });\n _this.TRACE_INIT(\"Failed Optimization Warnings\", function () {\n var unOptimizedModes = reduce(_this.canModeBeOptimized, function (cannotBeOptimized, canBeOptimized, modeName) {\n if (canBeOptimized === false) {\n cannotBeOptimized.push(modeName);\n }\n return cannotBeOptimized;\n }, []);\n if (config.ensureOptimizations && !isEmpty(unOptimizedModes)) {\n throw Error(\"Lexer Modes: < \" + unOptimizedModes.join(\", \") + \" > cannot be optimized.\\n\" +\n '\\t Disable the \"ensureOptimizations\" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\\n' +\n \"\\t Or inspect the console log for details on how to resolve these issues.\");\n }\n });\n _this.TRACE_INIT(\"clearRegExpParserCache\", function () {\n clearRegExpParserCache();\n });\n _this.TRACE_INIT(\"toFastProperties\", function () {\n toFastProperties(_this);\n });\n });\n }\n Lexer.prototype.tokenize = function (text, initialMode) {\n if (initialMode === void 0) { initialMode = this.defaultMode; }\n if (!isEmpty(this.lexerDefinitionErrors)) {\n var allErrMessages = map(this.lexerDefinitionErrors, function (error) {\n return error.message;\n });\n var allErrMessagesString = allErrMessages.join(\"-----------------------\\n\");\n throw new Error(\"Unable to Tokenize because Errors detected in definition of Lexer:\\n\" +\n allErrMessagesString);\n }\n var lexResult = this.tokenizeInternal(text, initialMode);\n return lexResult;\n };\n // There is quite a bit of duplication between this and \"tokenizeInternalLazy\"\n // This is intentional due to performance considerations.\n Lexer.prototype.tokenizeInternal = function (text, initialMode) {\n var _this = this;\n var i, j, matchAltImage, longerAltIdx, matchedImage, payload, altPayload, imageLength, group, tokType, newToken, errLength, droppedChar, msg, match;\n var orgText = text;\n var orgLength = orgText.length;\n var offset = 0;\n var matchedTokensIndex = 0;\n // initializing the tokensArray to the \"guessed\" size.\n // guessing too little will still reduce the number of array re-sizes on pushes.\n // guessing too large (Tested by guessing x4 too large) may cost a bit more of memory\n // but would still have a faster runtime by avoiding (All but one) array resizing.\n var guessedNumberOfTokens = this.hasCustom\n ? 0 // will break custom token pattern APIs the matchedTokens array will contain undefined elements.\n : Math.floor(text.length / 10);\n var matchedTokens = new Array(guessedNumberOfTokens);\n var errors = [];\n var line = this.trackStartLines ? 1 : undefined;\n var column = this.trackStartLines ? 1 : undefined;\n var groups = cloneEmptyGroups(this.emptyGroups);\n var trackLines = this.trackStartLines;\n var lineTerminatorPattern = this.config.lineTerminatorsPattern;\n var currModePatternsLength = 0;\n var patternIdxToConfig = [];\n var currCharCodeToPatternIdxToConfig = [];\n var modeStack = [];\n var emptyArray = [];\n Object.freeze(emptyArray);\n var getPossiblePatterns = undefined;\n function getPossiblePatternsSlow() {\n return patternIdxToConfig;\n }\n function getPossiblePatternsOptimized(charCode) {\n var optimizedCharIdx = charCodeToOptimizedIndex(charCode);\n var possiblePatterns = currCharCodeToPatternIdxToConfig[optimizedCharIdx];\n if (possiblePatterns === undefined) {\n return emptyArray;\n }\n else {\n return possiblePatterns;\n }\n }\n var pop_mode = function (popToken) {\n // TODO: perhaps avoid this error in the edge case there is no more input?\n if (modeStack.length === 1 &&\n // if we have both a POP_MODE and a PUSH_MODE this is in-fact a \"transition\"\n // So no error should occur.\n popToken.tokenType.PUSH_MODE === undefined) {\n // if we try to pop the last mode there lexer will no longer have ANY mode.\n // thus the pop is ignored, an error will be created and the lexer will continue parsing in the previous mode.\n var msg_1 = _this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(popToken);\n errors.push({\n offset: popToken.startOffset,\n line: popToken.startLine !== undefined\n ? popToken.startLine\n : undefined,\n column: popToken.startColumn !== undefined\n ? popToken.startColumn\n : undefined,\n length: popToken.image.length,\n message: msg_1\n });\n }\n else {\n modeStack.pop();\n var newMode = last(modeStack);\n patternIdxToConfig = _this.patternIdxToConfig[newMode];\n currCharCodeToPatternIdxToConfig = _this\n .charCodeToPatternIdxToConfig[newMode];\n currModePatternsLength = patternIdxToConfig.length;\n var modeCanBeOptimized = _this.canModeBeOptimized[newMode] &&\n _this.config.safeMode === false;\n if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) {\n getPossiblePatterns = getPossiblePatternsOptimized;\n }\n else {\n getPossiblePatterns = getPossiblePatternsSlow;\n }\n }\n };\n function push_mode(newMode) {\n modeStack.push(newMode);\n currCharCodeToPatternIdxToConfig = this\n .charCodeToPatternIdxToConfig[newMode];\n patternIdxToConfig = this.patternIdxToConfig[newMode];\n currModePatternsLength = patternIdxToConfig.length;\n currModePatternsLength = patternIdxToConfig.length;\n var modeCanBeOptimized = this.canModeBeOptimized[newMode] &&\n this.config.safeMode === false;\n if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) {\n getPossiblePatterns = getPossiblePatternsOptimized;\n }\n else {\n getPossiblePatterns = getPossiblePatternsSlow;\n }\n }\n // this pattern seems to avoid a V8 de-optimization, although that de-optimization does not\n // seem to matter performance wise.\n push_mode.call(this, initialMode);\n var currConfig;\n while (offset < orgLength) {\n matchedImage = null;\n var nextCharCode = orgText.charCodeAt(offset);\n var chosenPatternIdxToConfig = getPossiblePatterns(nextCharCode);\n var chosenPatternsLength = chosenPatternIdxToConfig.length;\n for (i = 0; i < chosenPatternsLength; i++) {\n currConfig = chosenPatternIdxToConfig[i];\n var currPattern = currConfig.pattern;\n payload = null;\n // manually in-lined because > 600 chars won't be in-lined in V8\n var singleCharCode = currConfig.short;\n if (singleCharCode !== false) {\n if (nextCharCode === singleCharCode) {\n // single character string\n matchedImage = currPattern;\n }\n }\n else if (currConfig.isCustom === true) {\n match = currPattern.exec(orgText, offset, matchedTokens, groups);\n if (match !== null) {\n matchedImage = match[0];\n if (match.payload !== undefined) {\n payload = match.payload;\n }\n }\n else {\n matchedImage = null;\n }\n }\n else {\n this.updateLastIndex(currPattern, offset);\n matchedImage = this.match(currPattern, text, offset);\n }\n if (matchedImage !== null) {\n // even though this pattern matched we must try a another longer alternative.\n // this can be used to prioritize keywords over identifiers\n longerAltIdx = currConfig.longerAlt;\n if (longerAltIdx !== undefined) {\n // TODO: micro optimize, avoid extra prop access\n // by saving/linking longerAlt on the original config?\n var longerAltConfig = patternIdxToConfig[longerAltIdx];\n var longerAltPattern = longerAltConfig.pattern;\n altPayload = null;\n // single Char can never be a longer alt so no need to test it.\n // manually in-lined because > 600 chars won't be in-lined in V8\n if (longerAltConfig.isCustom === true) {\n match = longerAltPattern.exec(orgText, offset, matchedTokens, groups);\n if (match !== null) {\n matchAltImage = match[0];\n if (match.payload !== undefined) {\n altPayload = match.payload;\n }\n }\n else {\n matchAltImage = null;\n }\n }\n else {\n this.updateLastIndex(longerAltPattern, offset);\n matchAltImage = this.match(longerAltPattern, text, offset);\n }\n if (matchAltImage &&\n matchAltImage.length > matchedImage.length) {\n matchedImage = matchAltImage;\n payload = altPayload;\n currConfig = longerAltConfig;\n }\n }\n break;\n }\n }\n // successful match\n if (matchedImage !== null) {\n imageLength = matchedImage.length;\n group = currConfig.group;\n if (group !== undefined) {\n tokType = currConfig.tokenTypeIdx;\n // TODO: \"offset + imageLength\" and the new column may be computed twice in case of \"full\" location information inside\n // createFullToken method\n newToken = this.createTokenInstance(matchedImage, offset, tokType, currConfig.tokenType, line, column, imageLength);\n this.handlePayload(newToken, payload);\n // TODO: optimize NOOP in case there are no special groups?\n if (group === false) {\n matchedTokensIndex = this.addToken(matchedTokens, matchedTokensIndex, newToken);\n }\n else {\n groups[group].push(newToken);\n }\n }\n text = this.chopInput(text, imageLength);\n offset = offset + imageLength;\n // TODO: with newlines the column may be assigned twice\n column = this.computeNewColumn(column, imageLength);\n if (trackLines === true &&\n currConfig.canLineTerminator === true) {\n var numOfLTsInMatch = 0;\n var foundTerminator = void 0;\n var lastLTEndOffset = void 0;\n lineTerminatorPattern.lastIndex = 0;\n do {\n foundTerminator = lineTerminatorPattern.test(matchedImage);\n if (foundTerminator === true) {\n lastLTEndOffset =\n lineTerminatorPattern.lastIndex - 1;\n numOfLTsInMatch++;\n }\n } while (foundTerminator === true);\n if (numOfLTsInMatch !== 0) {\n line = line + numOfLTsInMatch;\n column = imageLength - lastLTEndOffset;\n this.updateTokenEndLineColumnLocation(newToken, group, lastLTEndOffset, numOfLTsInMatch, line, column, imageLength);\n }\n }\n // will be NOOP if no modes present\n this.handleModes(currConfig, pop_mode, push_mode, newToken);\n }\n else {\n // error recovery, drop characters until we identify a valid token's start point\n var errorStartOffset = offset;\n var errorLine = line;\n var errorColumn = column;\n var foundResyncPoint = false;\n while (!foundResyncPoint && offset < orgLength) {\n // drop chars until we succeed in matching something\n droppedChar = orgText.charCodeAt(offset);\n // Identity Func (when sticky flag is enabled)\n text = this.chopInput(text, 1);\n offset++;\n for (j = 0; j < currModePatternsLength; j++) {\n var currConfig_1 = patternIdxToConfig[j];\n var currPattern = currConfig_1.pattern;\n // manually in-lined because > 600 chars won't be in-lined in V8\n var singleCharCode = currConfig_1.short;\n if (singleCharCode !== false) {\n if (orgText.charCodeAt(offset) === singleCharCode) {\n // single character string\n foundResyncPoint = true;\n }\n }\n else if (currConfig_1.isCustom === true) {\n foundResyncPoint =\n currPattern.exec(orgText, offset, matchedTokens, groups) !== null;\n }\n else {\n this.updateLastIndex(currPattern, offset);\n foundResyncPoint = currPattern.exec(text) !== null;\n }\n if (foundResyncPoint === true) {\n break;\n }\n }\n }\n errLength = offset - errorStartOffset;\n // at this point we either re-synced or reached the end of the input text\n msg = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(orgText, errorStartOffset, errLength, errorLine, errorColumn);\n errors.push({\n offset: errorStartOffset,\n line: errorLine,\n column: errorColumn,\n length: errLength,\n message: msg\n });\n }\n }\n // if we do have custom patterns which push directly into the\n // TODO: custom tokens should not push directly??\n if (!this.hasCustom) {\n // if we guessed a too large size for the tokens array this will shrink it to the right size.\n matchedTokens.length = matchedTokensIndex;\n }\n return {\n tokens: matchedTokens,\n groups: groups,\n errors: errors\n };\n };\n Lexer.prototype.handleModes = function (config, pop_mode, push_mode, newToken) {\n if (config.pop === true) {\n // need to save the PUSH_MODE property as if the mode is popped\n // patternIdxToPopMode is updated to reflect the new mode after popping the stack\n var pushMode = config.push;\n pop_mode(newToken);\n if (pushMode !== undefined) {\n push_mode.call(this, pushMode);\n }\n }\n else if (config.push !== undefined) {\n push_mode.call(this, config.push);\n }\n };\n Lexer.prototype.chopInput = function (text, length) {\n return text.substring(length);\n };\n Lexer.prototype.updateLastIndex = function (regExp, newLastIndex) {\n regExp.lastIndex = newLastIndex;\n };\n // TODO: decrease this under 600 characters? inspect stripping comments option in TSC compiler\n Lexer.prototype.updateTokenEndLineColumnLocation = function (newToken, group, lastLTIdx, numOfLTsInMatch, line, column, imageLength) {\n var lastCharIsLT, fixForEndingInLT;\n if (group !== undefined) {\n // a none skipped multi line Token, need to update endLine/endColumn\n lastCharIsLT = lastLTIdx === imageLength - 1;\n fixForEndingInLT = lastCharIsLT ? -1 : 0;\n if (!(numOfLTsInMatch === 1 && lastCharIsLT === true)) {\n // if a token ends in a LT that last LT only affects the line numbering of following Tokens\n newToken.endLine = line + fixForEndingInLT;\n // the last LT in a token does not affect the endColumn either as the [columnStart ... columnEnd)\n // inclusive to exclusive range.\n newToken.endColumn = column - 1 + -fixForEndingInLT;\n }\n // else single LT in the last character of a token, no need to modify the endLine/EndColumn\n }\n };\n Lexer.prototype.computeNewColumn = function (oldColumn, imageLength) {\n return oldColumn + imageLength;\n };\n // Place holder, will be replaced by the correct variant according to the locationTracking option at runtime.\n /* istanbul ignore next - place holder */\n Lexer.prototype.createTokenInstance = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return null;\n };\n Lexer.prototype.createOffsetOnlyToken = function (image, startOffset, tokenTypeIdx, tokenType) {\n return {\n image: image,\n startOffset: startOffset,\n tokenTypeIdx: tokenTypeIdx,\n tokenType: tokenType\n };\n };\n Lexer.prototype.createStartOnlyToken = function (image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn) {\n return {\n image: image,\n startOffset: startOffset,\n startLine: startLine,\n startColumn: startColumn,\n tokenTypeIdx: tokenTypeIdx,\n tokenType: tokenType\n };\n };\n Lexer.prototype.createFullToken = function (image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn, imageLength) {\n return {\n image: image,\n startOffset: startOffset,\n endOffset: startOffset + imageLength - 1,\n startLine: startLine,\n endLine: startLine,\n startColumn: startColumn,\n endColumn: startColumn + imageLength - 1,\n tokenTypeIdx: tokenTypeIdx,\n tokenType: tokenType\n };\n };\n // Place holder, will be replaced by the correct variant according to the locationTracking option at runtime.\n /* istanbul ignore next - place holder */\n Lexer.prototype.addToken = function (tokenVector, index, tokenToAdd) {\n return 666;\n };\n Lexer.prototype.addTokenUsingPush = function (tokenVector, index, tokenToAdd) {\n tokenVector.push(tokenToAdd);\n return index;\n };\n Lexer.prototype.addTokenUsingMemberAccess = function (tokenVector, index, tokenToAdd) {\n tokenVector[index] = tokenToAdd;\n index++;\n return index;\n };\n // Place holder, will be replaced by the correct variant according to the hasCustom flag option at runtime.\n /* istanbul ignore next - place holder */\n Lexer.prototype.handlePayload = function (token, payload) { };\n Lexer.prototype.handlePayloadNoCustom = function (token, payload) { };\n Lexer.prototype.handlePayloadWithCustom = function (token, payload) {\n if (payload !== null) {\n token.payload = payload;\n }\n };\n /* istanbul ignore next - place holder to be replaced with chosen alternative at runtime */\n Lexer.prototype.match = function (pattern, text, offset) {\n return null;\n };\n Lexer.prototype.matchWithTest = function (pattern, text, offset) {\n var found = pattern.test(text);\n if (found === true) {\n return text.substring(offset, pattern.lastIndex);\n }\n return null;\n };\n Lexer.prototype.matchWithExec = function (pattern, text) {\n var regExpArray = pattern.exec(text);\n return regExpArray !== null ? regExpArray[0] : regExpArray;\n };\n // Duplicated from the parser's perf trace trait to allow future extraction\n // of the lexer to a separate package.\n Lexer.prototype.TRACE_INIT = function (phaseDesc, phaseImpl) {\n // No need to optimize this using NOOP pattern because\n // It is not called in a hot spot...\n if (this.traceInitPerf === true) {\n this.traceInitIndent++;\n var indent = new Array(this.traceInitIndent + 1).join(\"\\t\");\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n console.log(indent + \"--> <\" + phaseDesc + \">\");\n }\n var _a = timer(phaseImpl), time = _a.time, value = _a.value;\n /* istanbul ignore next - Difficult to reproduce specific performance behavior (>10ms) in tests */\n var traceMethod = time > 10 ? console.warn : console.log;\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n traceMethod(indent + \"<-- <\" + phaseDesc + \"> time: \" + time + \"ms\");\n }\n this.traceInitIndent--;\n return value;\n }\n else {\n return phaseImpl();\n }\n };\n Lexer.SKIPPED = \"This marks a skipped Token pattern, this means each token identified by it will\" +\n \"be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.\";\n Lexer.NA = /NOT_APPLICABLE/;\n return Lexer;\n}());\nexport { Lexer };\n//# sourceMappingURL=lexer_public.js.map","import { has, isString, isUndefined } from \"../utils/utils\";\nimport { Lexer } from \"./lexer_public\";\nimport { augmentTokenTypes, tokenStructuredMatcher } from \"./tokens\";\nexport function tokenLabel(tokType) {\n if (hasTokenLabel(tokType)) {\n return tokType.LABEL;\n }\n else {\n return tokType.name;\n }\n}\nexport function tokenName(tokType) {\n return tokType.name;\n}\nexport function hasTokenLabel(obj) {\n return isString(obj.LABEL) && obj.LABEL !== \"\";\n}\nvar PARENT = \"parent\";\nvar CATEGORIES = \"categories\";\nvar LABEL = \"label\";\nvar GROUP = \"group\";\nvar PUSH_MODE = \"push_mode\";\nvar POP_MODE = \"pop_mode\";\nvar LONGER_ALT = \"longer_alt\";\nvar LINE_BREAKS = \"line_breaks\";\nvar START_CHARS_HINT = \"start_chars_hint\";\nexport function createToken(config) {\n return createTokenInternal(config);\n}\nfunction createTokenInternal(config) {\n var pattern = config.pattern;\n var tokenType = {};\n tokenType.name = config.name;\n if (!isUndefined(pattern)) {\n tokenType.PATTERN = pattern;\n }\n if (has(config, PARENT)) {\n throw \"The parent property is no longer supported.\\n\" +\n \"See: https://github.com/SAP/chevrotain/issues/564#issuecomment-349062346 for details.\";\n }\n if (has(config, CATEGORIES)) {\n // casting to ANY as this will be fixed inside `augmentTokenTypes``\n tokenType.CATEGORIES = config[CATEGORIES];\n }\n augmentTokenTypes([tokenType]);\n if (has(config, LABEL)) {\n tokenType.LABEL = config[LABEL];\n }\n if (has(config, GROUP)) {\n tokenType.GROUP = config[GROUP];\n }\n if (has(config, POP_MODE)) {\n tokenType.POP_MODE = config[POP_MODE];\n }\n if (has(config, PUSH_MODE)) {\n tokenType.PUSH_MODE = config[PUSH_MODE];\n }\n if (has(config, LONGER_ALT)) {\n tokenType.LONGER_ALT = config[LONGER_ALT];\n }\n if (has(config, LINE_BREAKS)) {\n tokenType.LINE_BREAKS = config[LINE_BREAKS];\n }\n if (has(config, START_CHARS_HINT)) {\n tokenType.START_CHARS_HINT = config[START_CHARS_HINT];\n }\n return tokenType;\n}\nexport var EOF = createToken({ name: \"EOF\", pattern: Lexer.NA });\naugmentTokenTypes([EOF]);\nexport function createTokenInstance(tokType, image, startOffset, endOffset, startLine, endLine, startColumn, endColumn) {\n return {\n image: image,\n startOffset: startOffset,\n endOffset: endOffset,\n startLine: startLine,\n endLine: endLine,\n startColumn: startColumn,\n endColumn: endColumn,\n tokenTypeIdx: tokType.tokenTypeIdx,\n tokenType: tokType\n };\n}\nexport function tokenMatcher(token, tokType) {\n return tokenStructuredMatcher(token, tokType);\n}\n//# sourceMappingURL=tokens_public.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { assign, forEach, isRegExp, map, pick } from \"../../../utils/utils\";\nimport { tokenLabel } from \"../../../scan/tokens_public\";\nvar AbstractProduction = /** @class */ (function () {\n function AbstractProduction(definition) {\n this.definition = definition;\n }\n AbstractProduction.prototype.accept = function (visitor) {\n visitor.visit(this);\n forEach(this.definition, function (prod) {\n prod.accept(visitor);\n });\n };\n return AbstractProduction;\n}());\nexport { AbstractProduction };\nvar NonTerminal = /** @class */ (function (_super) {\n __extends(NonTerminal, _super);\n function NonTerminal(options) {\n var _this = _super.call(this, []) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n Object.defineProperty(NonTerminal.prototype, \"definition\", {\n get: function () {\n if (this.referencedRule !== undefined) {\n return this.referencedRule.definition;\n }\n return [];\n },\n set: function (definition) {\n // immutable\n },\n enumerable: true,\n configurable: true\n });\n NonTerminal.prototype.accept = function (visitor) {\n visitor.visit(this);\n // don't visit children of a reference, we will get cyclic infinite loops if we do so\n };\n return NonTerminal;\n}(AbstractProduction));\nexport { NonTerminal };\nvar Rule = /** @class */ (function (_super) {\n __extends(Rule, _super);\n function Rule(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.orgText = \"\";\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Rule;\n}(AbstractProduction));\nexport { Rule };\n// TODO: is this only used in an Alternation?\n// Perhaps `Flat` should be renamed to `Alternative`?\nvar Flat = /** @class */ (function (_super) {\n __extends(Flat, _super);\n // A named Flat production is used to indicate a Nested Rule in an alternation\n function Flat(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.ignoreAmbiguities = false;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Flat;\n}(AbstractProduction));\nexport { Flat };\nvar Option = /** @class */ (function (_super) {\n __extends(Option, _super);\n function Option(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Option;\n}(AbstractProduction));\nexport { Option };\nvar RepetitionMandatory = /** @class */ (function (_super) {\n __extends(RepetitionMandatory, _super);\n function RepetitionMandatory(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return RepetitionMandatory;\n}(AbstractProduction));\nexport { RepetitionMandatory };\nvar RepetitionMandatoryWithSeparator = /** @class */ (function (_super) {\n __extends(RepetitionMandatoryWithSeparator, _super);\n function RepetitionMandatoryWithSeparator(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return RepetitionMandatoryWithSeparator;\n}(AbstractProduction));\nexport { RepetitionMandatoryWithSeparator };\nvar Repetition = /** @class */ (function (_super) {\n __extends(Repetition, _super);\n function Repetition(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Repetition;\n}(AbstractProduction));\nexport { Repetition };\nvar RepetitionWithSeparator = /** @class */ (function (_super) {\n __extends(RepetitionWithSeparator, _super);\n function RepetitionWithSeparator(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return RepetitionWithSeparator;\n}(AbstractProduction));\nexport { RepetitionWithSeparator };\nvar Alternation = /** @class */ (function (_super) {\n __extends(Alternation, _super);\n function Alternation(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n _this.ignoreAmbiguities = false;\n _this.hasPredicates = false;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Alternation;\n}(AbstractProduction));\nexport { Alternation };\nvar Terminal = /** @class */ (function () {\n function Terminal(options) {\n this.idx = 1;\n assign(this, pick(options, function (v) { return v !== undefined; }));\n }\n Terminal.prototype.accept = function (visitor) {\n visitor.visit(this);\n };\n return Terminal;\n}());\nexport { Terminal };\nexport function serializeGrammar(topRules) {\n return map(topRules, serializeProduction);\n}\nexport function serializeProduction(node) {\n function convertDefinition(definition) {\n return map(definition, serializeProduction);\n }\n /* istanbul ignore else */\n if (node instanceof NonTerminal) {\n return {\n type: \"NonTerminal\",\n name: node.nonTerminalName,\n idx: node.idx\n };\n }\n else if (node instanceof Flat) {\n return {\n type: \"Flat\",\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Option) {\n return {\n type: \"Option\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof RepetitionMandatory) {\n return {\n type: \"RepetitionMandatory\",\n name: node.name,\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof RepetitionMandatoryWithSeparator) {\n return {\n type: \"RepetitionMandatoryWithSeparator\",\n name: node.name,\n idx: node.idx,\n separator: (serializeProduction(new Terminal({ terminalType: node.separator }))),\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof RepetitionWithSeparator) {\n return {\n type: \"RepetitionWithSeparator\",\n name: node.name,\n idx: node.idx,\n separator: (serializeProduction(new Terminal({ terminalType: node.separator }))),\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Repetition) {\n return {\n type: \"Repetition\",\n name: node.name,\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Alternation) {\n return {\n type: \"Alternation\",\n name: node.name,\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Terminal) {\n var serializedTerminal = {\n type: \"Terminal\",\n name: node.terminalType.name,\n label: tokenLabel(node.terminalType),\n idx: node.idx\n };\n var pattern = node.terminalType.PATTERN;\n if (node.terminalType.PATTERN) {\n serializedTerminal.pattern = isRegExp(pattern)\n ? pattern.source\n : pattern;\n }\n return serializedTerminal;\n }\n else if (node instanceof Rule) {\n return {\n type: \"Rule\",\n name: node.name,\n orgText: node.orgText,\n definition: convertDefinition(node.definition)\n };\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\n//# sourceMappingURL=gast_public.js.map","import { drop, forEach } from \"../../utils/utils\";\nimport { Alternation, Flat, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Terminal } from \"./gast/gast_public\";\n/**\n * A Grammar Walker that computes the \"remaining\" grammar \"after\" a productions in the grammar.\n */\nvar RestWalker = /** @class */ (function () {\n function RestWalker() {\n }\n RestWalker.prototype.walk = function (prod, prevRest) {\n var _this = this;\n if (prevRest === void 0) { prevRest = []; }\n forEach(prod.definition, function (subProd, index) {\n var currRest = drop(prod.definition, index + 1);\n /* istanbul ignore else */\n if (subProd instanceof NonTerminal) {\n _this.walkProdRef(subProd, currRest, prevRest);\n }\n else if (subProd instanceof Terminal) {\n _this.walkTerminal(subProd, currRest, prevRest);\n }\n else if (subProd instanceof Flat) {\n _this.walkFlat(subProd, currRest, prevRest);\n }\n else if (subProd instanceof Option) {\n _this.walkOption(subProd, currRest, prevRest);\n }\n else if (subProd instanceof RepetitionMandatory) {\n _this.walkAtLeastOne(subProd, currRest, prevRest);\n }\n else if (subProd instanceof RepetitionMandatoryWithSeparator) {\n _this.walkAtLeastOneSep(subProd, currRest, prevRest);\n }\n else if (subProd instanceof RepetitionWithSeparator) {\n _this.walkManySep(subProd, currRest, prevRest);\n }\n else if (subProd instanceof Repetition) {\n _this.walkMany(subProd, currRest, prevRest);\n }\n else if (subProd instanceof Alternation) {\n _this.walkOr(subProd, currRest, prevRest);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n };\n RestWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) { };\n RestWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) { };\n RestWalker.prototype.walkFlat = function (flatProd, currRest, prevRest) {\n // ABCDEF => after the D the rest is EF\n var fullOrRest = currRest.concat(prevRest);\n this.walk(flatProd, fullOrRest);\n };\n RestWalker.prototype.walkOption = function (optionProd, currRest, prevRest) {\n // ABC(DE)?F => after the (DE)? the rest is F\n var fullOrRest = currRest.concat(prevRest);\n this.walk(optionProd, fullOrRest);\n };\n RestWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) {\n // ABC(DE)+F => after the (DE)+ the rest is (DE)?F\n var fullAtLeastOneRest = [\n new Option({ definition: atLeastOneProd.definition })\n ].concat(currRest, prevRest);\n this.walk(atLeastOneProd, fullAtLeastOneRest);\n };\n RestWalker.prototype.walkAtLeastOneSep = function (atLeastOneSepProd, currRest, prevRest) {\n // ABC DE(,DE)* F => after the (,DE)+ the rest is (,DE)?F\n var fullAtLeastOneSepRest = restForRepetitionWithSeparator(atLeastOneSepProd, currRest, prevRest);\n this.walk(atLeastOneSepProd, fullAtLeastOneSepRest);\n };\n RestWalker.prototype.walkMany = function (manyProd, currRest, prevRest) {\n // ABC(DE)*F => after the (DE)* the rest is (DE)?F\n var fullManyRest = [\n new Option({ definition: manyProd.definition })\n ].concat(currRest, prevRest);\n this.walk(manyProd, fullManyRest);\n };\n RestWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) {\n // ABC (DE(,DE)*)? F => after the (,DE)* the rest is (,DE)?F\n var fullManySepRest = restForRepetitionWithSeparator(manySepProd, currRest, prevRest);\n this.walk(manySepProd, fullManySepRest);\n };\n RestWalker.prototype.walkOr = function (orProd, currRest, prevRest) {\n var _this = this;\n // ABC(D|E|F)G => when finding the (D|E|F) the rest is G\n var fullOrRest = currRest.concat(prevRest);\n // walk all different alternatives\n forEach(orProd.definition, function (alt) {\n // wrapping each alternative in a single definition wrapper\n // to avoid errors in computing the rest of that alternative in the invocation to computeInProdFollows\n // (otherwise for OR([alt1,alt2]) alt2 will be considered in 'rest' of alt1\n var prodWrapper = new Flat({ definition: [alt] });\n _this.walk(prodWrapper, fullOrRest);\n });\n };\n return RestWalker;\n}());\nexport { RestWalker };\nfunction restForRepetitionWithSeparator(repSepProd, currRest, prevRest) {\n var repSepRest = [\n new Option({\n definition: [\n new Terminal({ terminalType: repSepProd.separator })\n ].concat(repSepProd.definition)\n })\n ];\n var fullRepSepRest = repSepRest.concat(currRest, prevRest);\n return fullRepSepRest;\n}\n//# sourceMappingURL=rest.js.map","import { Alternation, Flat, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"./gast_public\";\nvar GAstVisitor = /** @class */ (function () {\n function GAstVisitor() {\n }\n GAstVisitor.prototype.visit = function (node) {\n var nodeAny = node;\n switch (nodeAny.constructor) {\n case NonTerminal:\n return this.visitNonTerminal(nodeAny);\n case Flat:\n return this.visitFlat(nodeAny);\n case Option:\n return this.visitOption(nodeAny);\n case RepetitionMandatory:\n return this.visitRepetitionMandatory(nodeAny);\n case RepetitionMandatoryWithSeparator:\n return this.visitRepetitionMandatoryWithSeparator(nodeAny);\n case RepetitionWithSeparator:\n return this.visitRepetitionWithSeparator(nodeAny);\n case Repetition:\n return this.visitRepetition(nodeAny);\n case Alternation:\n return this.visitAlternation(nodeAny);\n case Terminal:\n return this.visitTerminal(nodeAny);\n case Rule:\n return this.visitRule(nodeAny);\n /* istanbul ignore next */\n default:\n throw Error(\"non exhaustive match\");\n }\n };\n GAstVisitor.prototype.visitNonTerminal = function (node) { };\n GAstVisitor.prototype.visitFlat = function (node) { };\n GAstVisitor.prototype.visitOption = function (node) { };\n GAstVisitor.prototype.visitRepetition = function (node) { };\n GAstVisitor.prototype.visitRepetitionMandatory = function (node) { };\n GAstVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (node) { };\n GAstVisitor.prototype.visitRepetitionWithSeparator = function (node) { };\n GAstVisitor.prototype.visitAlternation = function (node) { };\n GAstVisitor.prototype.visitTerminal = function (node) { };\n GAstVisitor.prototype.visitRule = function (node) { };\n return GAstVisitor;\n}());\nexport { GAstVisitor };\n//# sourceMappingURL=gast_visitor_public.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { contains, every, has, some } from \"../../../utils/utils\";\nimport { AbstractProduction, Alternation, Flat, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"./gast_public\";\nimport { GAstVisitor } from \"./gast_visitor_public\";\nexport function isSequenceProd(prod) {\n return (prod instanceof Flat ||\n prod instanceof Option ||\n prod instanceof Repetition ||\n prod instanceof RepetitionMandatory ||\n prod instanceof RepetitionMandatoryWithSeparator ||\n prod instanceof RepetitionWithSeparator ||\n prod instanceof Terminal ||\n prod instanceof Rule);\n}\nexport function isOptionalProd(prod, alreadyVisited) {\n if (alreadyVisited === void 0) { alreadyVisited = []; }\n var isDirectlyOptional = prod instanceof Option ||\n prod instanceof Repetition ||\n prod instanceof RepetitionWithSeparator;\n if (isDirectlyOptional) {\n return true;\n }\n // note that this can cause infinite loop if one optional empty TOP production has a cyclic dependency with another\n // empty optional top rule\n // may be indirectly optional ((A?B?C?) | (D?E?F?))\n if (prod instanceof Alternation) {\n // for OR its enough for just one of the alternatives to be optional\n return some(prod.definition, function (subProd) {\n return isOptionalProd(subProd, alreadyVisited);\n });\n }\n else if (prod instanceof NonTerminal && contains(alreadyVisited, prod)) {\n // avoiding stack overflow due to infinite recursion\n return false;\n }\n else if (prod instanceof AbstractProduction) {\n if (prod instanceof NonTerminal) {\n alreadyVisited.push(prod);\n }\n return every(prod.definition, function (subProd) {\n return isOptionalProd(subProd, alreadyVisited);\n });\n }\n else {\n return false;\n }\n}\nexport function isBranchingProd(prod) {\n return prod instanceof Alternation;\n}\nexport function getProductionDslName(prod) {\n /* istanbul ignore else */\n if (prod instanceof NonTerminal) {\n return \"SUBRULE\";\n }\n else if (prod instanceof Option) {\n return \"OPTION\";\n }\n else if (prod instanceof Alternation) {\n return \"OR\";\n }\n else if (prod instanceof RepetitionMandatory) {\n return \"AT_LEAST_ONE\";\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return \"AT_LEAST_ONE_SEP\";\n }\n else if (prod instanceof RepetitionWithSeparator) {\n return \"MANY_SEP\";\n }\n else if (prod instanceof Repetition) {\n return \"MANY\";\n }\n else if (prod instanceof Terminal) {\n return \"CONSUME\";\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nvar DslMethodsCollectorVisitor = /** @class */ (function (_super) {\n __extends(DslMethodsCollectorVisitor, _super);\n function DslMethodsCollectorVisitor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // A minus is never valid in an identifier name\n _this.separator = \"-\";\n _this.dslMethods = {\n option: [],\n alternation: [],\n repetition: [],\n repetitionWithSeparator: [],\n repetitionMandatory: [],\n repetitionMandatoryWithSeparator: []\n };\n return _this;\n }\n DslMethodsCollectorVisitor.prototype.reset = function () {\n this.dslMethods = {\n option: [],\n alternation: [],\n repetition: [],\n repetitionWithSeparator: [],\n repetitionMandatory: [],\n repetitionMandatoryWithSeparator: []\n };\n };\n DslMethodsCollectorVisitor.prototype.visitTerminal = function (terminal) {\n var key = terminal.terminalType.name + this.separator + \"Terminal\";\n if (!has(this.dslMethods, key)) {\n this.dslMethods[key] = [];\n }\n this.dslMethods[key].push(terminal);\n };\n DslMethodsCollectorVisitor.prototype.visitNonTerminal = function (subrule) {\n var key = subrule.nonTerminalName + this.separator + \"Terminal\";\n if (!has(this.dslMethods, key)) {\n this.dslMethods[key] = [];\n }\n this.dslMethods[key].push(subrule);\n };\n DslMethodsCollectorVisitor.prototype.visitOption = function (option) {\n this.dslMethods.option.push(option);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetitionWithSeparator = function (manySep) {\n this.dslMethods.repetitionWithSeparator.push(manySep);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetitionMandatory = function (atLeastOne) {\n this.dslMethods.repetitionMandatory.push(atLeastOne);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) {\n this.dslMethods.repetitionMandatoryWithSeparator.push(atLeastOneSep);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetition = function (many) {\n this.dslMethods.repetition.push(many);\n };\n DslMethodsCollectorVisitor.prototype.visitAlternation = function (or) {\n this.dslMethods.alternation.push(or);\n };\n return DslMethodsCollectorVisitor;\n}(GAstVisitor));\nexport { DslMethodsCollectorVisitor };\nvar collectorVisitor = new DslMethodsCollectorVisitor();\nexport function collectMethods(rule) {\n collectorVisitor.reset();\n rule.accept(collectorVisitor);\n var dslMethods = collectorVisitor.dslMethods;\n // avoid uncleaned references\n collectorVisitor.reset();\n return dslMethods;\n}\n//# sourceMappingURL=gast.js.map","import { uniq, map, flatten } from \"../../utils/utils\";\nimport { NonTerminal, Terminal } from \"./gast/gast_public\";\nimport { isBranchingProd, isOptionalProd, isSequenceProd } from \"./gast/gast\";\nexport function first(prod) {\n /* istanbul ignore else */\n if (prod instanceof NonTerminal) {\n // this could in theory cause infinite loops if\n // (1) prod A refs prod B.\n // (2) prod B refs prod A\n // (3) AB can match the empty set\n // in other words a cycle where everything is optional so the first will keep\n // looking ahead for the next optional part and will never exit\n // currently there is no safeguard for this unique edge case because\n // (1) not sure a grammar in which this can happen is useful for anything (productive)\n return first(prod.referencedRule);\n }\n else if (prod instanceof Terminal) {\n return firstForTerminal(prod);\n }\n else if (isSequenceProd(prod)) {\n return firstForSequence(prod);\n }\n else if (isBranchingProd(prod)) {\n return firstForBranching(prod);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexport function firstForSequence(prod) {\n var firstSet = [];\n var seq = prod.definition;\n var nextSubProdIdx = 0;\n var hasInnerProdsRemaining = seq.length > nextSubProdIdx;\n var currSubProd;\n // so we enter the loop at least once (if the definition is not empty\n var isLastInnerProdOptional = true;\n // scan a sequence until it's end or until we have found a NONE optional production in it\n while (hasInnerProdsRemaining && isLastInnerProdOptional) {\n currSubProd = seq[nextSubProdIdx];\n isLastInnerProdOptional = isOptionalProd(currSubProd);\n firstSet = firstSet.concat(first(currSubProd));\n nextSubProdIdx = nextSubProdIdx + 1;\n hasInnerProdsRemaining = seq.length > nextSubProdIdx;\n }\n return uniq(firstSet);\n}\nexport function firstForBranching(prod) {\n var allAlternativesFirsts = map(prod.definition, function (innerProd) {\n return first(innerProd);\n });\n return uniq(flatten(allAlternativesFirsts));\n}\nexport function firstForTerminal(terminal) {\n return [terminal.terminalType];\n}\n//# sourceMappingURL=first.js.map","// TODO: can this be removed? where is it used?\nexport var IN = \"_~IN~_\";\n//# sourceMappingURL=constants.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { RestWalker } from \"./rest\";\nimport { first } from \"./first\";\nimport { assign, forEach } from \"../../utils/utils\";\nimport { IN } from \"../constants\";\nimport { Flat } from \"./gast/gast_public\";\n// This ResyncFollowsWalker computes all of the follows required for RESYNC\n// (skipping reference production).\nvar ResyncFollowsWalker = /** @class */ (function (_super) {\n __extends(ResyncFollowsWalker, _super);\n function ResyncFollowsWalker(topProd) {\n var _this = _super.call(this) || this;\n _this.topProd = topProd;\n _this.follows = {};\n return _this;\n }\n ResyncFollowsWalker.prototype.startWalking = function () {\n this.walk(this.topProd);\n return this.follows;\n };\n ResyncFollowsWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) {\n // do nothing! just like in the public sector after 13:00\n };\n ResyncFollowsWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) {\n var followName = buildBetweenProdsFollowPrefix(refProd.referencedRule, refProd.idx) +\n this.topProd.name;\n var fullRest = currRest.concat(prevRest);\n var restProd = new Flat({ definition: fullRest });\n var t_in_topProd_follows = first(restProd);\n this.follows[followName] = t_in_topProd_follows;\n };\n return ResyncFollowsWalker;\n}(RestWalker));\nexport { ResyncFollowsWalker };\nexport function computeAllProdsFollows(topProductions) {\n var reSyncFollows = {};\n forEach(topProductions, function (topProd) {\n var currRefsFollow = new ResyncFollowsWalker(topProd).startWalking();\n assign(reSyncFollows, currRefsFollow);\n });\n return reSyncFollows;\n}\nexport function buildBetweenProdsFollowPrefix(inner, occurenceInParent) {\n return inner.name + occurenceInParent + IN;\n}\nexport function buildInProdFollowPrefix(terminal) {\n var terminalName = terminal.terminalType.name;\n return terminalName + terminal.idx + IN;\n}\n//# sourceMappingURL=follow.js.map","// Lookahead keys are 32Bit integers in the form\n// TTTTTTTT-ZZZZZZZZZZZZ-YYYY-XXXXXXXX\n// XXXX -> Occurrence Index bitmap.\n// YYYY -> DSL Method Type bitmap.\n// ZZZZZZZZZZZZZZZ -> Rule short Index bitmap.\n// TTTTTTTTT -> alternation alternative index bitmap\nexport var BITS_FOR_METHOD_TYPE = 4;\nexport var BITS_FOR_OCCURRENCE_IDX = 8;\nexport var BITS_FOR_RULE_IDX = 12;\n// TODO: validation, this means that there may at most 2^8 --> 256 alternatives for an alternation.\nexport var BITS_FOR_ALT_IDX = 8;\n// short string used as part of mapping keys.\n// being short improves the performance when composing KEYS for maps out of these\n// The 5 - 8 bits (16 possible values, are reserved for the DSL method indices)\n/* tslint:disable */\nexport var OR_IDX = 1 << BITS_FOR_OCCURRENCE_IDX;\nexport var OPTION_IDX = 2 << BITS_FOR_OCCURRENCE_IDX;\nexport var MANY_IDX = 3 << BITS_FOR_OCCURRENCE_IDX;\nexport var AT_LEAST_ONE_IDX = 4 << BITS_FOR_OCCURRENCE_IDX;\nexport var MANY_SEP_IDX = 5 << BITS_FOR_OCCURRENCE_IDX;\nexport var AT_LEAST_ONE_SEP_IDX = 6 << BITS_FOR_OCCURRENCE_IDX;\n/* tslint:enable */\n// this actually returns a number, but it is always used as a string (object prop key)\nexport function getKeyForAutomaticLookahead(ruleIdx, dslMethodIdx, occurrence) {\n /* tslint:disable */\n return occurrence | dslMethodIdx | ruleIdx;\n /* tslint:enable */\n}\nvar BITS_START_FOR_ALT_IDX = 32 - BITS_FOR_ALT_IDX;\nexport function getKeyForAltIndex(ruleIdx, dslMethodIdx, occurrence, altIdx) {\n /* tslint:disable */\n // alternative indices are zero based, thus must always add one (turn on one bit) to guarantee uniqueness.\n var altIdxBitMap = (altIdx + 1) << BITS_START_FOR_ALT_IDX;\n return (getKeyForAutomaticLookahead(ruleIdx, dslMethodIdx, occurrence) |\n altIdxBitMap);\n /* tslint:enable */\n}\n//# sourceMappingURL=keys.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { forEach, isUndefined } from \"../../utils/utils\";\nimport { AT_LEAST_ONE_IDX, AT_LEAST_ONE_SEP_IDX, getKeyForAltIndex, getKeyForAutomaticLookahead, MANY_IDX, MANY_SEP_IDX, OPTION_IDX, OR_IDX } from \"../grammar/keys\";\nimport { Alternation, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator } from \"../grammar/gast/gast_public\";\nimport { GAstVisitor } from \"../grammar/gast/gast_visitor_public\";\n/**\n * This nodeLocation tracking is not efficient and should only be used\n * when error recovery is enabled or the Token Vector contains virtual Tokens\n * (e.g, Python Indent/Outdent)\n * As it executes the calculation for every single terminal/nonTerminal\n * and does not rely on the fact the token vector is **sorted**\n */\nexport function setNodeLocationOnlyOffset(currNodeLocation, newLocationInfo) {\n // First (valid) update for this cst node\n if (isNaN(currNodeLocation.startOffset) === true) {\n // assumption1: Token location information is either NaN or a valid number\n // assumption2: Token location information is fully valid if it exist\n // (both start/end offsets exist and are numbers).\n currNodeLocation.startOffset = newLocationInfo.startOffset;\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n }\n // Once the startOffset has been updated with a valid number it should never receive\n // any farther updates as the Token vector is sorted.\n // We still have to check this this condition for every new possible location info\n // because with error recovery enabled we may encounter invalid tokens (NaN location props)\n else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) {\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n }\n}\n/**\n * This nodeLocation tracking is not efficient and should only be used\n * when error recovery is enabled or the Token Vector contains virtual Tokens\n * (e.g, Python Indent/Outdent)\n * As it executes the calculation for every single terminal/nonTerminal\n * and does not rely on the fact the token vector is **sorted**\n */\nexport function setNodeLocationFull(currNodeLocation, newLocationInfo) {\n // First (valid) update for this cst node\n if (isNaN(currNodeLocation.startOffset) === true) {\n // assumption1: Token location information is either NaN or a valid number\n // assumption2: Token location information is fully valid if it exist\n // (all start/end props exist and are numbers).\n currNodeLocation.startOffset = newLocationInfo.startOffset;\n currNodeLocation.startColumn = newLocationInfo.startColumn;\n currNodeLocation.startLine = newLocationInfo.startLine;\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n currNodeLocation.endColumn = newLocationInfo.endColumn;\n currNodeLocation.endLine = newLocationInfo.endLine;\n }\n // Once the start props has been updated with a valid number it should never receive\n // any farther updates as the Token vector is sorted.\n // We still have to check this this condition for every new possible location info\n // because with error recovery enabled we may encounter invalid tokens (NaN location props)\n else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) {\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n currNodeLocation.endColumn = newLocationInfo.endColumn;\n currNodeLocation.endLine = newLocationInfo.endLine;\n }\n}\nexport function addTerminalToCst(node, token, tokenTypeName) {\n if (node.children[tokenTypeName] === undefined) {\n node.children[tokenTypeName] = [token];\n }\n else {\n node.children[tokenTypeName].push(token);\n }\n}\nexport function addNoneTerminalToCst(node, ruleName, ruleResult) {\n if (node.children[ruleName] === undefined) {\n node.children[ruleName] = [ruleResult];\n }\n else {\n node.children[ruleName].push(ruleResult);\n }\n}\nvar NamedDSLMethodsCollectorVisitor = /** @class */ (function (_super) {\n __extends(NamedDSLMethodsCollectorVisitor, _super);\n function NamedDSLMethodsCollectorVisitor(ruleIdx) {\n var _this = _super.call(this) || this;\n _this.result = [];\n _this.ruleIdx = ruleIdx;\n return _this;\n }\n NamedDSLMethodsCollectorVisitor.prototype.collectNamedDSLMethod = function (node, newNodeConstructor, methodIdx) {\n // TODO: better hack to copy what we need here...\n if (!isUndefined(node.name)) {\n // copy without name so this will indeed be processed later.\n var nameLessNode \n /* istanbul ignore else */\n = void 0;\n /* istanbul ignore else */\n if (node instanceof Option ||\n node instanceof Repetition ||\n node instanceof RepetitionMandatory ||\n node instanceof Alternation) {\n nameLessNode = new newNodeConstructor({\n definition: node.definition,\n idx: node.idx\n });\n }\n else if (node instanceof RepetitionMandatoryWithSeparator ||\n node instanceof RepetitionWithSeparator) {\n nameLessNode = new newNodeConstructor({\n definition: node.definition,\n idx: node.idx,\n separator: node.separator\n });\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n var def = [nameLessNode];\n var key = getKeyForAutomaticLookahead(this.ruleIdx, methodIdx, node.idx);\n this.result.push({ def: def, key: key, name: node.name, orgProd: node });\n }\n };\n NamedDSLMethodsCollectorVisitor.prototype.visitOption = function (node) {\n this.collectNamedDSLMethod(node, Option, OPTION_IDX);\n };\n NamedDSLMethodsCollectorVisitor.prototype.visitRepetition = function (node) {\n this.collectNamedDSLMethod(node, Repetition, MANY_IDX);\n };\n NamedDSLMethodsCollectorVisitor.prototype.visitRepetitionMandatory = function (node) {\n this.collectNamedDSLMethod(node, RepetitionMandatory, AT_LEAST_ONE_IDX);\n };\n NamedDSLMethodsCollectorVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (node) {\n this.collectNamedDSLMethod(node, RepetitionMandatoryWithSeparator, AT_LEAST_ONE_SEP_IDX);\n };\n NamedDSLMethodsCollectorVisitor.prototype.visitRepetitionWithSeparator = function (node) {\n this.collectNamedDSLMethod(node, RepetitionWithSeparator, MANY_SEP_IDX);\n };\n NamedDSLMethodsCollectorVisitor.prototype.visitAlternation = function (node) {\n var _this = this;\n this.collectNamedDSLMethod(node, Alternation, OR_IDX);\n var hasMoreThanOneAlternative = node.definition.length > 1;\n forEach(node.definition, function (currFlatAlt, altIdx) {\n if (!isUndefined(currFlatAlt.name)) {\n var def = currFlatAlt.definition;\n if (hasMoreThanOneAlternative) {\n def = [new Option({ definition: currFlatAlt.definition })];\n }\n else {\n // mandatory\n def = currFlatAlt.definition;\n }\n var key = getKeyForAltIndex(_this.ruleIdx, OR_IDX, node.idx, altIdx);\n _this.result.push({\n def: def,\n key: key,\n name: currFlatAlt.name,\n orgProd: currFlatAlt\n });\n }\n });\n };\n return NamedDSLMethodsCollectorVisitor;\n}(GAstVisitor));\nexport { NamedDSLMethodsCollectorVisitor };\nexport function expandAllNestedRuleNames(topRules, fullToShortName) {\n var result = {\n allRuleNames: []\n };\n forEach(topRules, function (currTopRule) {\n var currTopRuleShortName = fullToShortName[currTopRule.name];\n result.allRuleNames.push(currTopRule.name);\n var namedCollectorVisitor = new NamedDSLMethodsCollectorVisitor(currTopRuleShortName);\n currTopRule.accept(namedCollectorVisitor);\n forEach(namedCollectorVisitor.result, function (_a) {\n var def = _a.def, key = _a.key, name = _a.name;\n result.allRuleNames.push(currTopRule.name + name);\n });\n });\n return result;\n}\n//# sourceMappingURL=cst.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { RestWalker } from \"./rest\";\nimport { cloneArr, drop, dropRight, first as _first, forEach, isEmpty, last } from \"../../utils/utils\";\nimport { first } from \"./first\";\nimport { Alternation, Flat, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"./gast/gast_public\";\nvar AbstractNextPossibleTokensWalker = /** @class */ (function (_super) {\n __extends(AbstractNextPossibleTokensWalker, _super);\n function AbstractNextPossibleTokensWalker(topProd, path) {\n var _this = _super.call(this) || this;\n _this.topProd = topProd;\n _this.path = path;\n _this.possibleTokTypes = [];\n _this.nextProductionName = \"\";\n _this.nextProductionOccurrence = 0;\n _this.found = false;\n _this.isAtEndOfPath = false;\n return _this;\n }\n AbstractNextPossibleTokensWalker.prototype.startWalking = function () {\n this.found = false;\n if (this.path.ruleStack[0] !== this.topProd.name) {\n throw Error(\"The path does not start with the walker's top Rule!\");\n }\n // immutable for the win\n this.ruleStack = cloneArr(this.path.ruleStack).reverse(); // intelij bug requires assertion\n this.occurrenceStack = cloneArr(this.path.occurrenceStack).reverse(); // intelij bug requires assertion\n // already verified that the first production is valid, we now seek the 2nd production\n this.ruleStack.pop();\n this.occurrenceStack.pop();\n this.updateExpectedNext();\n this.walk(this.topProd);\n return this.possibleTokTypes;\n };\n AbstractNextPossibleTokensWalker.prototype.walk = function (prod, prevRest) {\n if (prevRest === void 0) { prevRest = []; }\n // stop scanning once we found the path\n if (!this.found) {\n _super.prototype.walk.call(this, prod, prevRest);\n }\n };\n AbstractNextPossibleTokensWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) {\n // found the next production, need to keep walking in it\n if (refProd.referencedRule.name === this.nextProductionName &&\n refProd.idx === this.nextProductionOccurrence) {\n var fullRest = currRest.concat(prevRest);\n this.updateExpectedNext();\n this.walk(refProd.referencedRule, fullRest);\n }\n };\n AbstractNextPossibleTokensWalker.prototype.updateExpectedNext = function () {\n // need to consume the Terminal\n if (isEmpty(this.ruleStack)) {\n // must reset nextProductionXXX to avoid walking down another Top Level production while what we are\n // really seeking is the last Terminal...\n this.nextProductionName = \"\";\n this.nextProductionOccurrence = 0;\n this.isAtEndOfPath = true;\n }\n else {\n this.nextProductionName = this.ruleStack.pop();\n this.nextProductionOccurrence = this.occurrenceStack.pop();\n }\n };\n return AbstractNextPossibleTokensWalker;\n}(RestWalker));\nexport { AbstractNextPossibleTokensWalker };\nvar NextAfterTokenWalker = /** @class */ (function (_super) {\n __extends(NextAfterTokenWalker, _super);\n function NextAfterTokenWalker(topProd, path) {\n var _this = _super.call(this, topProd, path) || this;\n _this.path = path;\n _this.nextTerminalName = \"\";\n _this.nextTerminalOccurrence = 0;\n _this.nextTerminalName = _this.path.lastTok.name;\n _this.nextTerminalOccurrence = _this.path.lastTokOccurrence;\n return _this;\n }\n NextAfterTokenWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) {\n if (this.isAtEndOfPath &&\n terminal.terminalType.name === this.nextTerminalName &&\n terminal.idx === this.nextTerminalOccurrence &&\n !this.found) {\n var fullRest = currRest.concat(prevRest);\n var restProd = new Flat({ definition: fullRest });\n this.possibleTokTypes = first(restProd);\n this.found = true;\n }\n };\n return NextAfterTokenWalker;\n}(AbstractNextPossibleTokensWalker));\nexport { NextAfterTokenWalker };\n/**\n * This walker only \"walks\" a single \"TOP\" level in the Grammar Ast, this means\n * it never \"follows\" production refs\n */\nvar AbstractNextTerminalAfterProductionWalker = /** @class */ (function (_super) {\n __extends(AbstractNextTerminalAfterProductionWalker, _super);\n function AbstractNextTerminalAfterProductionWalker(topRule, occurrence) {\n var _this = _super.call(this) || this;\n _this.topRule = topRule;\n _this.occurrence = occurrence;\n _this.result = {\n token: undefined,\n occurrence: undefined,\n isEndOfRule: undefined\n };\n return _this;\n }\n AbstractNextTerminalAfterProductionWalker.prototype.startWalking = function () {\n this.walk(this.topRule);\n return this.result;\n };\n return AbstractNextTerminalAfterProductionWalker;\n}(RestWalker));\nexport { AbstractNextTerminalAfterProductionWalker };\nvar NextTerminalAfterManyWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterManyWalker, _super);\n function NextTerminalAfterManyWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterManyWalker.prototype.walkMany = function (manyProd, currRest, prevRest) {\n if (manyProd.idx === this.occurrence) {\n var firstAfterMany = _first(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterMany === undefined;\n if (firstAfterMany instanceof Terminal) {\n this.result.token = firstAfterMany.terminalType;\n this.result.occurrence = firstAfterMany.idx;\n }\n }\n else {\n _super.prototype.walkMany.call(this, manyProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterManyWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexport { NextTerminalAfterManyWalker };\nvar NextTerminalAfterManySepWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterManySepWalker, _super);\n function NextTerminalAfterManySepWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterManySepWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) {\n if (manySepProd.idx === this.occurrence) {\n var firstAfterManySep = _first(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterManySep === undefined;\n if (firstAfterManySep instanceof Terminal) {\n this.result.token = firstAfterManySep.terminalType;\n this.result.occurrence = firstAfterManySep.idx;\n }\n }\n else {\n _super.prototype.walkManySep.call(this, manySepProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterManySepWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexport { NextTerminalAfterManySepWalker };\nvar NextTerminalAfterAtLeastOneWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterAtLeastOneWalker, _super);\n function NextTerminalAfterAtLeastOneWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterAtLeastOneWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) {\n if (atLeastOneProd.idx === this.occurrence) {\n var firstAfterAtLeastOne = _first(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterAtLeastOne === undefined;\n if (firstAfterAtLeastOne instanceof Terminal) {\n this.result.token = firstAfterAtLeastOne.terminalType;\n this.result.occurrence = firstAfterAtLeastOne.idx;\n }\n }\n else {\n _super.prototype.walkAtLeastOne.call(this, atLeastOneProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterAtLeastOneWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexport { NextTerminalAfterAtLeastOneWalker };\n// TODO: reduce code duplication in the AfterWalkers\nvar NextTerminalAfterAtLeastOneSepWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterAtLeastOneSepWalker, _super);\n function NextTerminalAfterAtLeastOneSepWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterAtLeastOneSepWalker.prototype.walkAtLeastOneSep = function (atleastOneSepProd, currRest, prevRest) {\n if (atleastOneSepProd.idx === this.occurrence) {\n var firstAfterfirstAfterAtLeastOneSep = _first(currRest.concat(prevRest));\n this.result.isEndOfRule =\n firstAfterfirstAfterAtLeastOneSep === undefined;\n if (firstAfterfirstAfterAtLeastOneSep instanceof Terminal) {\n this.result.token =\n firstAfterfirstAfterAtLeastOneSep.terminalType;\n this.result.occurrence = firstAfterfirstAfterAtLeastOneSep.idx;\n }\n }\n else {\n _super.prototype.walkAtLeastOneSep.call(this, atleastOneSepProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterAtLeastOneSepWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexport { NextTerminalAfterAtLeastOneSepWalker };\nexport function possiblePathsFrom(targetDef, maxLength, currPath) {\n if (currPath === void 0) { currPath = []; }\n // avoid side effects\n currPath = cloneArr(currPath);\n var result = [];\n var i = 0;\n // TODO: avoid inner funcs\n function remainingPathWith(nextDef) {\n return nextDef.concat(drop(targetDef, i + 1));\n }\n // TODO: avoid inner funcs\n function getAlternativesForProd(definition) {\n var alternatives = possiblePathsFrom(remainingPathWith(definition), maxLength, currPath);\n return result.concat(alternatives);\n }\n /**\n * Mandatory productions will halt the loop as the paths computed from their recursive calls will already contain the\n * following (rest) of the targetDef.\n *\n * For optional productions (Option/Repetition/...) the loop will continue to represent the paths that do not include the\n * the optional production.\n */\n while (currPath.length < maxLength && i < targetDef.length) {\n var prod = targetDef[i];\n /* istanbul ignore else */\n if (prod instanceof Flat) {\n return getAlternativesForProd(prod.definition);\n }\n else if (prod instanceof NonTerminal) {\n return getAlternativesForProd(prod.definition);\n }\n else if (prod instanceof Option) {\n result = getAlternativesForProd(prod.definition);\n }\n else if (prod instanceof RepetitionMandatory) {\n var newDef = prod.definition.concat([\n new Repetition({\n definition: prod.definition\n })\n ]);\n return getAlternativesForProd(newDef);\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n var newDef = [\n new Flat({ definition: prod.definition }),\n new Repetition({\n definition: [\n new Terminal({ terminalType: prod.separator })\n ].concat(prod.definition)\n })\n ];\n return getAlternativesForProd(newDef);\n }\n else if (prod instanceof RepetitionWithSeparator) {\n var newDef = prod.definition.concat([\n new Repetition({\n definition: [\n new Terminal({ terminalType: prod.separator })\n ].concat(prod.definition)\n })\n ]);\n result = getAlternativesForProd(newDef);\n }\n else if (prod instanceof Repetition) {\n var newDef = prod.definition.concat([\n new Repetition({\n definition: prod.definition\n })\n ]);\n result = getAlternativesForProd(newDef);\n }\n else if (prod instanceof Alternation) {\n forEach(prod.definition, function (currAlt) {\n result = getAlternativesForProd(currAlt.definition);\n });\n return result;\n }\n else if (prod instanceof Terminal) {\n currPath.push(prod.terminalType);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n i++;\n }\n result.push({\n partialPath: currPath,\n suffixDef: drop(targetDef, i)\n });\n return result;\n}\nexport function nextPossibleTokensAfter(initialDef, tokenVector, tokMatcher, maxLookAhead) {\n var EXIT_NON_TERMINAL = \"EXIT_NONE_TERMINAL\";\n // to avoid creating a new Array each time.\n var EXIT_NON_TERMINAL_ARR = [EXIT_NON_TERMINAL];\n var EXIT_ALTERNATIVE = \"EXIT_ALTERNATIVE\";\n var foundCompletePath = false;\n var tokenVectorLength = tokenVector.length;\n var minimalAlternativesIndex = tokenVectorLength - maxLookAhead - 1;\n var result = [];\n var possiblePaths = [];\n possiblePaths.push({\n idx: -1,\n def: initialDef,\n ruleStack: [],\n occurrenceStack: []\n });\n while (!isEmpty(possiblePaths)) {\n var currPath = possiblePaths.pop();\n // skip alternatives if no more results can be found (assuming deterministic grammar with fixed lookahead)\n if (currPath === EXIT_ALTERNATIVE) {\n if (foundCompletePath &&\n last(possiblePaths).idx <= minimalAlternativesIndex) {\n // remove irrelevant alternative\n possiblePaths.pop();\n }\n continue;\n }\n var currDef = currPath.def;\n var currIdx = currPath.idx;\n var currRuleStack = currPath.ruleStack;\n var currOccurrenceStack = currPath.occurrenceStack;\n // For Example: an empty path could exist in a valid grammar in the case of an EMPTY_ALT\n if (isEmpty(currDef)) {\n continue;\n }\n var prod = currDef[0];\n /* istanbul ignore else */\n if (prod === EXIT_NON_TERMINAL) {\n var nextPath = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: dropRight(currRuleStack),\n occurrenceStack: dropRight(currOccurrenceStack)\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof Terminal) {\n /* istanbul ignore else */\n if (currIdx < tokenVectorLength - 1) {\n var nextIdx = currIdx + 1;\n var actualToken = tokenVector[nextIdx];\n if (tokMatcher(actualToken, prod.terminalType)) {\n var nextPath = {\n idx: nextIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n // end of the line\n }\n else if (currIdx === tokenVectorLength - 1) {\n // IGNORE ABOVE ELSE\n result.push({\n nextTokenType: prod.terminalType,\n nextTokenOccurrence: prod.idx,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n });\n foundCompletePath = true;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n }\n else if (prod instanceof NonTerminal) {\n var newRuleStack = cloneArr(currRuleStack);\n newRuleStack.push(prod.nonTerminalName);\n var newOccurrenceStack = cloneArr(currOccurrenceStack);\n newOccurrenceStack.push(prod.idx);\n var nextPath = {\n idx: currIdx,\n def: prod.definition.concat(EXIT_NON_TERMINAL_ARR, drop(currDef)),\n ruleStack: newRuleStack,\n occurrenceStack: newOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof Option) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n var nextPathWithout = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n var nextPathWith = {\n idx: currIdx,\n def: prod.definition.concat(drop(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n }\n else if (prod instanceof RepetitionMandatory) {\n // TODO:(THE NEW operators here take a while...) (convert once?)\n var secondIteration = new Repetition({\n definition: prod.definition,\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([secondIteration], drop(currDef));\n var nextPath = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n // TODO:(THE NEW operators here take a while...) (convert once?)\n var separatorGast = new Terminal({\n terminalType: prod.separator\n });\n var secondIteration = new Repetition({\n definition: [separatorGast].concat(prod.definition),\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([secondIteration], drop(currDef));\n var nextPath = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof RepetitionWithSeparator) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n var nextPathWithout = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n var separatorGast = new Terminal({\n terminalType: prod.separator\n });\n var nthRepetition = new Repetition({\n definition: [separatorGast].concat(prod.definition),\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([nthRepetition], drop(currDef));\n var nextPathWith = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n }\n else if (prod instanceof Repetition) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n var nextPathWithout = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n // TODO: an empty repetition will cause infinite loops here, will the parser detect this in selfAnalysis?\n var nthRepetition = new Repetition({\n definition: prod.definition,\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([nthRepetition], drop(currDef));\n var nextPathWith = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n }\n else if (prod instanceof Alternation) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n for (var i = prod.definition.length - 1; i >= 0; i--) {\n var currAlt = prod.definition[i];\n var currAltPath = {\n idx: currIdx,\n def: currAlt.definition.concat(drop(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(currAltPath);\n possiblePaths.push(EXIT_ALTERNATIVE);\n }\n }\n else if (prod instanceof Flat) {\n possiblePaths.push({\n idx: currIdx,\n def: prod.definition.concat(drop(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n });\n }\n else if (prod instanceof Rule) {\n // last because we should only encounter at most a single one of these per invocation.\n possiblePaths.push(expandTopLevelRule(prod, currIdx, currRuleStack, currOccurrenceStack));\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n }\n return result;\n}\nfunction expandTopLevelRule(topRule, currIdx, currRuleStack, currOccurrenceStack) {\n var newRuleStack = cloneArr(currRuleStack);\n newRuleStack.push(topRule.name);\n var newCurrOccurrenceStack = cloneArr(currOccurrenceStack);\n // top rule is always assumed to have been called with occurrence index 1\n newCurrOccurrenceStack.push(1);\n return {\n idx: currIdx,\n def: topRule.definition,\n ruleStack: newRuleStack,\n occurrenceStack: newCurrOccurrenceStack\n };\n}\n//# sourceMappingURL=interpreter.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { map, reduce, every, isEmpty, flatten, forEach, has } from \"../../utils/utils\";\nimport { possiblePathsFrom } from \"./interpreter\";\nimport { RestWalker } from \"./rest\";\nimport { tokenStructuredMatcher, tokenStructuredMatcherNoCategories } from \"../../scan/tokens\";\nimport { Alternation, Flat, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator } from \"./gast/gast_public\";\nimport { GAstVisitor } from \"./gast/gast_visitor_public\";\nexport var PROD_TYPE;\n(function (PROD_TYPE) {\n PROD_TYPE[PROD_TYPE[\"OPTION\"] = 0] = \"OPTION\";\n PROD_TYPE[PROD_TYPE[\"REPETITION\"] = 1] = \"REPETITION\";\n PROD_TYPE[PROD_TYPE[\"REPETITION_MANDATORY\"] = 2] = \"REPETITION_MANDATORY\";\n PROD_TYPE[PROD_TYPE[\"REPETITION_MANDATORY_WITH_SEPARATOR\"] = 3] = \"REPETITION_MANDATORY_WITH_SEPARATOR\";\n PROD_TYPE[PROD_TYPE[\"REPETITION_WITH_SEPARATOR\"] = 4] = \"REPETITION_WITH_SEPARATOR\";\n PROD_TYPE[PROD_TYPE[\"ALTERNATION\"] = 5] = \"ALTERNATION\";\n})(PROD_TYPE || (PROD_TYPE = {}));\nexport function getProdType(prod) {\n /* istanbul ignore else */\n if (prod instanceof Option) {\n return PROD_TYPE.OPTION;\n }\n else if (prod instanceof Repetition) {\n return PROD_TYPE.REPETITION;\n }\n else if (prod instanceof RepetitionMandatory) {\n return PROD_TYPE.REPETITION_MANDATORY;\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR;\n }\n else if (prod instanceof RepetitionWithSeparator) {\n return PROD_TYPE.REPETITION_WITH_SEPARATOR;\n }\n else if (prod instanceof Alternation) {\n return PROD_TYPE.ALTERNATION;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexport function buildLookaheadFuncForOr(occurrence, ruleGrammar, maxLookahead, hasPredicates, dynamicTokensEnabled, laFuncBuilder) {\n var lookAheadPaths = getLookaheadPathsForOr(occurrence, ruleGrammar, maxLookahead);\n var tokenMatcher = areTokenCategoriesNotUsed(lookAheadPaths)\n ? tokenStructuredMatcherNoCategories\n : tokenStructuredMatcher;\n return laFuncBuilder(lookAheadPaths, hasPredicates, tokenMatcher, dynamicTokensEnabled);\n}\n/**\n * When dealing with an Optional production (OPTION/MANY/2nd iteration of AT_LEAST_ONE/...) we need to compare\n * the lookahead \"inside\" the production and the lookahead immediately \"after\" it in the same top level rule (context free).\n *\n * Example: given a production:\n * ABC(DE)?DF\n *\n * The optional '(DE)?' should only be entered if we see 'DE'. a single Token 'D' is not sufficient to distinguish between the two\n * alternatives.\n *\n * @returns A Lookahead function which will return true IFF the parser should parse the Optional production.\n */\nexport function buildLookaheadFuncForOptionalProd(occurrence, ruleGrammar, k, dynamicTokensEnabled, prodType, lookaheadBuilder) {\n var lookAheadPaths = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k);\n var tokenMatcher = areTokenCategoriesNotUsed(lookAheadPaths)\n ? tokenStructuredMatcherNoCategories\n : tokenStructuredMatcher;\n return lookaheadBuilder(lookAheadPaths[0], tokenMatcher, dynamicTokensEnabled);\n}\nexport function buildAlternativesLookAheadFunc(alts, hasPredicates, tokenMatcher, dynamicTokensEnabled) {\n var numOfAlts = alts.length;\n var areAllOneTokenLookahead = every(alts, function (currAlt) {\n return every(currAlt, function (currPath) {\n return currPath.length === 1;\n });\n });\n // This version takes into account the predicates as well.\n if (hasPredicates) {\n /**\n * @returns {number} - The chosen alternative index\n */\n return function (orAlts) {\n // unfortunately the predicates must be extracted every single time\n // as they cannot be cached due to references to parameters(vars) which are no longer valid.\n // note that in the common case of no predicates, no cpu time will be wasted on this (see else block)\n var predicates = map(orAlts, function (currAlt) { return currAlt.GATE; });\n for (var t = 0; t < numOfAlts; t++) {\n var currAlt = alts[t];\n var currNumOfPaths = currAlt.length;\n var currPredicate = predicates[t];\n if (currPredicate !== undefined &&\n currPredicate.call(this) === false) {\n // if the predicate does not match there is no point in checking the paths\n continue;\n }\n nextPath: for (var j = 0; j < currNumOfPaths; j++) {\n var currPath = currAlt[j];\n var currPathLength = currPath.length;\n for (var i = 0; i < currPathLength; i++) {\n var nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n // this will also work for an empty ALT as the loop will be skipped\n return t;\n }\n // none of the paths for the current alternative matched\n // try the next alternative\n }\n // none of the alternatives could be matched\n return undefined;\n };\n }\n else if (areAllOneTokenLookahead && !dynamicTokensEnabled) {\n // optimized (common) case of all the lookaheads paths requiring only\n // a single token lookahead. These Optimizations cannot work if dynamically defined Tokens are used.\n var singleTokenAlts = map(alts, function (currAlt) {\n return flatten(currAlt);\n });\n var choiceToAlt_1 = reduce(singleTokenAlts, function (result, currAlt, idx) {\n forEach(currAlt, function (currTokType) {\n if (!has(result, currTokType.tokenTypeIdx)) {\n result[currTokType.tokenTypeIdx] = idx;\n }\n forEach(currTokType.categoryMatches, function (currExtendingType) {\n if (!has(result, currExtendingType)) {\n result[currExtendingType] = idx;\n }\n });\n });\n return result;\n }, []);\n /**\n * @returns {number} - The chosen alternative index\n */\n return function () {\n var nextToken = this.LA(1);\n return choiceToAlt_1[nextToken.tokenTypeIdx];\n };\n }\n else {\n // optimized lookahead without needing to check the predicates at all.\n // this causes code duplication which is intentional to improve performance.\n /**\n * @returns {number} - The chosen alternative index\n */\n return function () {\n for (var t = 0; t < numOfAlts; t++) {\n var currAlt = alts[t];\n var currNumOfPaths = currAlt.length;\n nextPath: for (var j = 0; j < currNumOfPaths; j++) {\n var currPath = currAlt[j];\n var currPathLength = currPath.length;\n for (var i = 0; i < currPathLength; i++) {\n var nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n // this will also work for an empty ALT as the loop will be skipped\n return t;\n }\n // none of the paths for the current alternative matched\n // try the next alternative\n }\n // none of the alternatives could be matched\n return undefined;\n };\n }\n}\nexport function buildSingleAlternativeLookaheadFunction(alt, tokenMatcher, dynamicTokensEnabled) {\n var areAllOneTokenLookahead = every(alt, function (currPath) {\n return currPath.length === 1;\n });\n var numOfPaths = alt.length;\n // optimized (common) case of all the lookaheads paths requiring only\n // a single token lookahead.\n if (areAllOneTokenLookahead && !dynamicTokensEnabled) {\n var singleTokensTypes = flatten(alt);\n if (singleTokensTypes.length === 1 &&\n isEmpty(singleTokensTypes[0].categoryMatches)) {\n var expectedTokenType = singleTokensTypes[0];\n var expectedTokenUniqueKey_1 = expectedTokenType.tokenTypeIdx;\n return function () {\n return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey_1;\n };\n }\n else {\n var choiceToAlt_2 = reduce(singleTokensTypes, function (result, currTokType, idx) {\n result[currTokType.tokenTypeIdx] = true;\n forEach(currTokType.categoryMatches, function (currExtendingType) {\n result[currExtendingType] = true;\n });\n return result;\n }, []);\n return function () {\n var nextToken = this.LA(1);\n return choiceToAlt_2[nextToken.tokenTypeIdx] === true;\n };\n }\n }\n else {\n return function () {\n nextPath: for (var j = 0; j < numOfPaths; j++) {\n var currPath = alt[j];\n var currPathLength = currPath.length;\n for (var i = 0; i < currPathLength; i++) {\n var nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n return true;\n }\n // none of the paths matched\n return false;\n };\n }\n}\nvar RestDefinitionFinderWalker = /** @class */ (function (_super) {\n __extends(RestDefinitionFinderWalker, _super);\n function RestDefinitionFinderWalker(topProd, targetOccurrence, targetProdType) {\n var _this = _super.call(this) || this;\n _this.topProd = topProd;\n _this.targetOccurrence = targetOccurrence;\n _this.targetProdType = targetProdType;\n return _this;\n }\n RestDefinitionFinderWalker.prototype.startWalking = function () {\n this.walk(this.topProd);\n return this.restDef;\n };\n RestDefinitionFinderWalker.prototype.checkIsTarget = function (node, expectedProdType, currRest, prevRest) {\n if (node.idx === this.targetOccurrence &&\n this.targetProdType === expectedProdType) {\n this.restDef = currRest.concat(prevRest);\n return true;\n }\n // performance optimization, do not iterate over the entire Grammar ast after we have found the target\n return false;\n };\n RestDefinitionFinderWalker.prototype.walkOption = function (optionProd, currRest, prevRest) {\n if (!this.checkIsTarget(optionProd, PROD_TYPE.OPTION, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, optionProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) {\n if (!this.checkIsTarget(atLeastOneProd, PROD_TYPE.REPETITION_MANDATORY, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, atLeastOneProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkAtLeastOneSep = function (atLeastOneSepProd, currRest, prevRest) {\n if (!this.checkIsTarget(atLeastOneSepProd, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, atLeastOneSepProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkMany = function (manyProd, currRest, prevRest) {\n if (!this.checkIsTarget(manyProd, PROD_TYPE.REPETITION, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, manyProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) {\n if (!this.checkIsTarget(manySepProd, PROD_TYPE.REPETITION_WITH_SEPARATOR, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, manySepProd, currRest, prevRest);\n }\n };\n return RestDefinitionFinderWalker;\n}(RestWalker));\n/**\n * Returns the definition of a target production in a top level level rule.\n */\nvar InsideDefinitionFinderVisitor = /** @class */ (function (_super) {\n __extends(InsideDefinitionFinderVisitor, _super);\n function InsideDefinitionFinderVisitor(targetOccurrence, targetProdType, targetRef) {\n var _this = _super.call(this) || this;\n _this.targetOccurrence = targetOccurrence;\n _this.targetProdType = targetProdType;\n _this.targetRef = targetRef;\n _this.result = [];\n return _this;\n }\n InsideDefinitionFinderVisitor.prototype.checkIsTarget = function (node, expectedProdName) {\n if (node.idx === this.targetOccurrence &&\n this.targetProdType === expectedProdName &&\n (this.targetRef === undefined || node === this.targetRef)) {\n this.result = node.definition;\n }\n };\n InsideDefinitionFinderVisitor.prototype.visitOption = function (node) {\n this.checkIsTarget(node, PROD_TYPE.OPTION);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetition = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetitionMandatory = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetitionWithSeparator = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_WITH_SEPARATOR);\n };\n InsideDefinitionFinderVisitor.prototype.visitAlternation = function (node) {\n this.checkIsTarget(node, PROD_TYPE.ALTERNATION);\n };\n return InsideDefinitionFinderVisitor;\n}(GAstVisitor));\nfunction initializeArrayOfArrays(size) {\n var result = new Array(size);\n for (var i = 0; i < size; i++) {\n result[i] = [];\n }\n return result;\n}\n/**\n * A sort of hash function between a Path in the grammar and a string.\n * Note that this returns multiple \"hashes\" to support the scenario of token categories.\n * - A single path with categories may match multiple **actual** paths.\n */\nfunction pathToHashKeys(path) {\n var keys = [\"\"];\n for (var i = 0; i < path.length; i++) {\n var tokType = path[i];\n var longerKeys = [];\n for (var j = 0; j < keys.length; j++) {\n var currShorterKey = keys[j];\n longerKeys.push(currShorterKey + \"_\" + tokType.tokenTypeIdx);\n for (var t = 0; t < tokType.categoryMatches.length; t++) {\n var categoriesKeySuffix = \"_\" + tokType.categoryMatches[t];\n longerKeys.push(currShorterKey + categoriesKeySuffix);\n }\n }\n keys = longerKeys;\n }\n return keys;\n}\n/**\n * Imperative style due to being called from a hot spot\n */\nfunction isUniquePrefixHash(altKnownPathsKeys, searchPathKeys, idx) {\n for (var currAltIdx = 0; currAltIdx < altKnownPathsKeys.length; currAltIdx++) {\n // We only want to test vs the other alternatives\n if (currAltIdx === idx) {\n continue;\n }\n var otherAltKnownPathsKeys = altKnownPathsKeys[currAltIdx];\n for (var searchIdx = 0; searchIdx < searchPathKeys.length; searchIdx++) {\n var searchKey = searchPathKeys[searchIdx];\n if (otherAltKnownPathsKeys[searchKey] === true) {\n return false;\n }\n }\n }\n // None of the SearchPathKeys were found in any of the other alternatives\n return true;\n}\nexport function lookAheadSequenceFromAlternatives(altsDefs, k) {\n var partialAlts = map(altsDefs, function (currAlt) { return possiblePathsFrom([currAlt], 1); });\n var finalResult = initializeArrayOfArrays(partialAlts.length);\n var altsHashes = map(partialAlts, function (currAltPaths) {\n var dict = {};\n forEach(currAltPaths, function (item) {\n var keys = pathToHashKeys(item.partialPath);\n forEach(keys, function (currKey) {\n dict[currKey] = true;\n });\n });\n return dict;\n });\n var newData = partialAlts;\n // maxLookahead loop\n for (var pathLength = 1; pathLength <= k; pathLength++) {\n var currDataset = newData;\n newData = initializeArrayOfArrays(currDataset.length);\n var _loop_1 = function (altIdx) {\n var currAltPathsAndSuffixes = currDataset[altIdx];\n // paths in current alternative loop\n for (var currPathIdx = 0; currPathIdx < currAltPathsAndSuffixes.length; currPathIdx++) {\n var currPathPrefix = currAltPathsAndSuffixes[currPathIdx].partialPath;\n var suffixDef = currAltPathsAndSuffixes[currPathIdx].suffixDef;\n var prefixKeys = pathToHashKeys(currPathPrefix);\n var isUnique = isUniquePrefixHash(altsHashes, prefixKeys, altIdx);\n // End of the line for this path.\n if (isUnique ||\n isEmpty(suffixDef) ||\n currPathPrefix.length === k) {\n var currAltResult = finalResult[altIdx];\n // TODO: Can we implement a containsPath using Maps/Dictionaries?\n if (containsPath(currAltResult, currPathPrefix) === false) {\n currAltResult.push(currPathPrefix);\n // Update all new keys for the current path.\n for (var j = 0; j < prefixKeys.length; j++) {\n var currKey = prefixKeys[j];\n altsHashes[altIdx][currKey] = true;\n }\n }\n }\n // Expand longer paths\n else {\n var newPartialPathsAndSuffixes = possiblePathsFrom(suffixDef, pathLength + 1, currPathPrefix);\n newData[altIdx] = newData[altIdx].concat(newPartialPathsAndSuffixes);\n // Update keys for new known paths\n forEach(newPartialPathsAndSuffixes, function (item) {\n var prefixKeys = pathToHashKeys(item.partialPath);\n forEach(prefixKeys, function (key) {\n altsHashes[altIdx][key] = true;\n });\n });\n }\n }\n };\n // alternatives loop\n for (var altIdx = 0; altIdx < currDataset.length; altIdx++) {\n _loop_1(altIdx);\n }\n }\n return finalResult;\n}\nexport function getLookaheadPathsForOr(occurrence, ruleGrammar, k, orProd) {\n var visitor = new InsideDefinitionFinderVisitor(occurrence, PROD_TYPE.ALTERNATION, orProd);\n ruleGrammar.accept(visitor);\n return lookAheadSequenceFromAlternatives(visitor.result, k);\n}\nexport function getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k) {\n var insideDefVisitor = new InsideDefinitionFinderVisitor(occurrence, prodType);\n ruleGrammar.accept(insideDefVisitor);\n var insideDef = insideDefVisitor.result;\n var afterDefWalker = new RestDefinitionFinderWalker(ruleGrammar, occurrence, prodType);\n var afterDef = afterDefWalker.startWalking();\n var insideFlat = new Flat({ definition: insideDef });\n var afterFlat = new Flat({ definition: afterDef });\n return lookAheadSequenceFromAlternatives([insideFlat, afterFlat], k);\n}\nexport function containsPath(alternative, searchPath) {\n compareOtherPath: for (var i = 0; i < alternative.length; i++) {\n var otherPath = alternative[i];\n if (otherPath.length !== searchPath.length) {\n continue;\n }\n for (var j = 0; j < otherPath.length; j++) {\n var searchTok = searchPath[j];\n var otherTok = otherPath[j];\n var matchingTokens = searchTok === otherTok ||\n otherTok.categoryMatchesMap[searchTok.tokenTypeIdx] !==\n undefined;\n if (matchingTokens === false) {\n continue compareOtherPath;\n }\n }\n return true;\n }\n return false;\n}\nexport function isStrictPrefixOfPath(prefix, other) {\n return (prefix.length < other.length &&\n every(prefix, function (tokType, idx) {\n var otherTokType = other[idx];\n return (tokType === otherTokType ||\n otherTokType.categoryMatchesMap[tokType.tokenTypeIdx]);\n }));\n}\nexport function areTokenCategoriesNotUsed(lookAheadPaths) {\n return every(lookAheadPaths, function (singleAltPaths) {\n return every(singleAltPaths, function (singlePath) {\n return every(singlePath, function (token) { return isEmpty(token.categoryMatches); });\n });\n });\n}\n//# sourceMappingURL=lookahead.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as utils from \"../../utils/utils\";\nimport { contains, every, findAll, flatten, forEach, groupBy, isEmpty, map, pick, reduce, reject, values } from \"../../utils/utils\";\nimport { ParserDefinitionErrorType } from \"../parser/parser\";\nimport { getProductionDslName, isOptionalProd } from \"./gast/gast\";\nimport { containsPath, getLookaheadPathsForOptionalProd, getLookaheadPathsForOr, getProdType, isStrictPrefixOfPath } from \"./lookahead\";\nimport { NamedDSLMethodsCollectorVisitor } from \"../cst/cst\";\nimport { nextPossibleTokensAfter } from \"./interpreter\";\nimport { Alternation, Flat, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Terminal } from \"./gast/gast_public\";\nimport { GAstVisitor } from \"./gast/gast_visitor_public\";\nexport function validateGrammar(topLevels, globalMaxLookahead, tokenTypes, ignoredIssues, errMsgProvider, grammarName) {\n var duplicateErrors = utils.map(topLevels, function (currTopLevel) {\n return validateDuplicateProductions(currTopLevel, errMsgProvider);\n });\n var leftRecursionErrors = utils.map(topLevels, function (currTopRule) {\n return validateNoLeftRecursion(currTopRule, currTopRule, errMsgProvider);\n });\n var emptyAltErrors = [];\n var ambiguousAltsErrors = [];\n var emptyRepetitionErrors = [];\n // left recursion could cause infinite loops in the following validations.\n // It is safest to first have the user fix the left recursion errors first and only then examine Further issues.\n if (every(leftRecursionErrors, isEmpty)) {\n emptyAltErrors = map(topLevels, function (currTopRule) {\n return validateEmptyOrAlternative(currTopRule, errMsgProvider);\n });\n ambiguousAltsErrors = map(topLevels, function (currTopRule) {\n return validateAmbiguousAlternationAlternatives(currTopRule, globalMaxLookahead, ignoredIssues, errMsgProvider);\n });\n emptyRepetitionErrors = validateSomeNonEmptyLookaheadPath(topLevels, globalMaxLookahead, errMsgProvider);\n }\n var termsNamespaceConflictErrors = checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider);\n var tokenNameErrors = utils.map(tokenTypes, function (currTokType) {\n return validateTokenName(currTokType, errMsgProvider);\n });\n var nestedRulesNameErrors = validateNestedRulesNames(topLevels, errMsgProvider);\n var nestedRulesDuplicateErrors = validateDuplicateNestedRules(topLevels, errMsgProvider);\n var tooManyAltsErrors = map(topLevels, function (curRule) {\n return validateTooManyAlts(curRule, errMsgProvider);\n });\n var ruleNameErrors = map(topLevels, function (curRule) {\n return validateRuleName(curRule, errMsgProvider);\n });\n var duplicateRulesError = map(topLevels, function (curRule) {\n return validateRuleDoesNotAlreadyExist(curRule, topLevels, grammarName, errMsgProvider);\n });\n return (utils.flatten(duplicateErrors.concat(tokenNameErrors, nestedRulesNameErrors, nestedRulesDuplicateErrors, emptyRepetitionErrors, leftRecursionErrors, emptyAltErrors, ambiguousAltsErrors, termsNamespaceConflictErrors, tooManyAltsErrors, ruleNameErrors, duplicateRulesError)));\n}\nfunction validateNestedRulesNames(topLevels, errMsgProvider) {\n var result = [];\n forEach(topLevels, function (curTopLevel) {\n var namedCollectorVisitor = new NamedDSLMethodsCollectorVisitor(\"\");\n curTopLevel.accept(namedCollectorVisitor);\n var nestedProds = map(namedCollectorVisitor.result, function (currItem) { return currItem.orgProd; });\n result.push(map(nestedProds, function (currNestedProd) {\n return validateNestedRuleName(curTopLevel, currNestedProd, errMsgProvider);\n }));\n });\n return flatten(result);\n}\nfunction validateDuplicateProductions(topLevelRule, errMsgProvider) {\n var collectorVisitor = new OccurrenceValidationCollector();\n topLevelRule.accept(collectorVisitor);\n var allRuleProductions = collectorVisitor.allProductions;\n var productionGroups = utils.groupBy(allRuleProductions, identifyProductionForDuplicates);\n var duplicates = utils.pick(productionGroups, function (currGroup) {\n return currGroup.length > 1;\n });\n var errors = utils.map(utils.values(duplicates), function (currDuplicates) {\n var firstProd = utils.first(currDuplicates);\n var msg = errMsgProvider.buildDuplicateFoundError(topLevelRule, currDuplicates);\n var dslName = getProductionDslName(firstProd);\n var defError = {\n message: msg,\n type: ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,\n ruleName: topLevelRule.name,\n dslName: dslName,\n occurrence: firstProd.idx\n };\n var param = getExtraProductionArgument(firstProd);\n if (param) {\n defError.parameter = param;\n }\n return defError;\n });\n return errors;\n}\nexport function identifyProductionForDuplicates(prod) {\n return getProductionDslName(prod) + \"_#_\" + prod.idx + \"_#_\" + getExtraProductionArgument(prod);\n}\nfunction getExtraProductionArgument(prod) {\n if (prod instanceof Terminal) {\n return prod.terminalType.name;\n }\n else if (prod instanceof NonTerminal) {\n return prod.nonTerminalName;\n }\n else {\n return \"\";\n }\n}\nvar OccurrenceValidationCollector = /** @class */ (function (_super) {\n __extends(OccurrenceValidationCollector, _super);\n function OccurrenceValidationCollector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.allProductions = [];\n return _this;\n }\n OccurrenceValidationCollector.prototype.visitNonTerminal = function (subrule) {\n this.allProductions.push(subrule);\n };\n OccurrenceValidationCollector.prototype.visitOption = function (option) {\n this.allProductions.push(option);\n };\n OccurrenceValidationCollector.prototype.visitRepetitionWithSeparator = function (manySep) {\n this.allProductions.push(manySep);\n };\n OccurrenceValidationCollector.prototype.visitRepetitionMandatory = function (atLeastOne) {\n this.allProductions.push(atLeastOne);\n };\n OccurrenceValidationCollector.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) {\n this.allProductions.push(atLeastOneSep);\n };\n OccurrenceValidationCollector.prototype.visitRepetition = function (many) {\n this.allProductions.push(many);\n };\n OccurrenceValidationCollector.prototype.visitAlternation = function (or) {\n this.allProductions.push(or);\n };\n OccurrenceValidationCollector.prototype.visitTerminal = function (terminal) {\n this.allProductions.push(terminal);\n };\n return OccurrenceValidationCollector;\n}(GAstVisitor));\nexport { OccurrenceValidationCollector };\nexport var validTermsPattern = /^[a-zA-Z_]\\w*$/;\nexport var validNestedRuleName = new RegExp(validTermsPattern.source.replace(\"^\", \"^\\\\$\"));\n// TODO: remove this limitation now that we use recorders\nexport function validateRuleName(rule, errMsgProvider) {\n var errors = [];\n var ruleName = rule.name;\n if (!ruleName.match(validTermsPattern)) {\n errors.push({\n message: errMsgProvider.buildInvalidRuleNameError({\n topLevelRule: rule,\n expectedPattern: validTermsPattern\n }),\n type: ParserDefinitionErrorType.INVALID_RULE_NAME,\n ruleName: ruleName\n });\n }\n return errors;\n}\n// TODO: did the nested rule name regExp now change?\nexport function validateNestedRuleName(topLevel, nestedProd, errMsgProvider) {\n var errors = [];\n var errMsg;\n if (!nestedProd.name.match(validNestedRuleName)) {\n errMsg = errMsgProvider.buildInvalidNestedRuleNameError(topLevel, nestedProd);\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.INVALID_NESTED_RULE_NAME,\n ruleName: topLevel.name\n });\n }\n return errors;\n}\n// TODO: remove this limitation now that we use recorders\nexport function validateTokenName(tokenType, errMsgProvider) {\n var errors = [];\n var tokTypeName = tokenType.name;\n if (!tokTypeName.match(validTermsPattern)) {\n errors.push({\n message: errMsgProvider.buildTokenNameError({\n tokenType: tokenType,\n expectedPattern: validTermsPattern\n }),\n type: ParserDefinitionErrorType.INVALID_TOKEN_NAME\n });\n }\n return errors;\n}\nexport function validateRuleDoesNotAlreadyExist(rule, allRules, className, errMsgProvider) {\n var errors = [];\n var occurrences = reduce(allRules, function (result, curRule) {\n if (curRule.name === rule.name) {\n return result + 1;\n }\n return result;\n }, 0);\n if (occurrences > 1) {\n var errMsg = errMsgProvider.buildDuplicateRuleNameError({\n topLevelRule: rule,\n grammarName: className\n });\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME,\n ruleName: rule.name\n });\n }\n return errors;\n}\n// TODO: is there anyway to get only the rule names of rules inherited from the super grammars?\n// This is not part of the IGrammarErrorProvider because the validation cannot be performed on\n// The grammar structure, only at runtime.\nexport function validateRuleIsOverridden(ruleName, definedRulesNames, className) {\n var errors = [];\n var errMsg;\n if (!utils.contains(definedRulesNames, ruleName)) {\n errMsg =\n \"Invalid rule override, rule: ->\" + ruleName + \"<- cannot be overridden in the grammar: ->\" + className + \"<-\" +\n \"as it is not defined in any of the super grammars \";\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,\n ruleName: ruleName\n });\n }\n return errors;\n}\nexport function validateNoLeftRecursion(topRule, currRule, errMsgProvider, path) {\n if (path === void 0) { path = []; }\n var errors = [];\n var nextNonTerminals = getFirstNoneTerminal(currRule.definition);\n if (utils.isEmpty(nextNonTerminals)) {\n return [];\n }\n else {\n var ruleName = topRule.name;\n var foundLeftRecursion = utils.contains(nextNonTerminals, topRule);\n if (foundLeftRecursion) {\n errors.push({\n message: errMsgProvider.buildLeftRecursionError({\n topLevelRule: topRule,\n leftRecursionPath: path\n }),\n type: ParserDefinitionErrorType.LEFT_RECURSION,\n ruleName: ruleName\n });\n }\n // we are only looking for cyclic paths leading back to the specific topRule\n // other cyclic paths are ignored, we still need this difference to avoid infinite loops...\n var validNextSteps = utils.difference(nextNonTerminals, path.concat([topRule]));\n var errorsFromNextSteps = utils.map(validNextSteps, function (currRefRule) {\n var newPath = utils.cloneArr(path);\n newPath.push(currRefRule);\n return validateNoLeftRecursion(topRule, currRefRule, errMsgProvider, newPath);\n });\n return errors.concat(utils.flatten(errorsFromNextSteps));\n }\n}\nexport function getFirstNoneTerminal(definition) {\n var result = [];\n if (utils.isEmpty(definition)) {\n return result;\n }\n var firstProd = utils.first(definition);\n /* istanbul ignore else */\n if (firstProd instanceof NonTerminal) {\n result.push(firstProd.referencedRule);\n }\n else if (firstProd instanceof Flat ||\n firstProd instanceof Option ||\n firstProd instanceof RepetitionMandatory ||\n firstProd instanceof RepetitionMandatoryWithSeparator ||\n firstProd instanceof RepetitionWithSeparator ||\n firstProd instanceof Repetition) {\n result = result.concat(getFirstNoneTerminal(firstProd.definition));\n }\n else if (firstProd instanceof Alternation) {\n // each sub definition in alternation is a FLAT\n result = utils.flatten(utils.map(firstProd.definition, function (currSubDef) {\n return getFirstNoneTerminal(currSubDef.definition);\n }));\n }\n else if (firstProd instanceof Terminal) {\n // nothing to see, move along\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n var isFirstOptional = isOptionalProd(firstProd);\n var hasMore = definition.length > 1;\n if (isFirstOptional && hasMore) {\n var rest = utils.drop(definition);\n return result.concat(getFirstNoneTerminal(rest));\n }\n else {\n return result;\n }\n}\nvar OrCollector = /** @class */ (function (_super) {\n __extends(OrCollector, _super);\n function OrCollector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.alternations = [];\n return _this;\n }\n OrCollector.prototype.visitAlternation = function (node) {\n this.alternations.push(node);\n };\n return OrCollector;\n}(GAstVisitor));\nexport function validateEmptyOrAlternative(topLevelRule, errMsgProvider) {\n var orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n var ors = orCollector.alternations;\n var errors = utils.reduce(ors, function (errors, currOr) {\n var exceptLast = utils.dropRight(currOr.definition);\n var currErrors = utils.map(exceptLast, function (currAlternative, currAltIdx) {\n var possibleFirstInAlt = nextPossibleTokensAfter([currAlternative], [], null, 1);\n if (utils.isEmpty(possibleFirstInAlt)) {\n return {\n message: errMsgProvider.buildEmptyAlternationError({\n topLevelRule: topLevelRule,\n alternation: currOr,\n emptyChoiceIdx: currAltIdx\n }),\n type: ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,\n ruleName: topLevelRule.name,\n occurrence: currOr.idx,\n alternative: currAltIdx + 1\n };\n }\n else {\n return null;\n }\n });\n return errors.concat(utils.compact(currErrors));\n }, []);\n return errors;\n}\nexport function validateAmbiguousAlternationAlternatives(topLevelRule, globalMaxLookahead, ignoredIssues, errMsgProvider) {\n var orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n var ors = orCollector.alternations;\n // TODO: this filtering should be deprecated once we remove the ignoredIssues\n // IParserConfig property\n var ignoredIssuesForCurrentRule = ignoredIssues[topLevelRule.name];\n if (ignoredIssuesForCurrentRule) {\n ors = reject(ors, function (currOr) {\n return ignoredIssuesForCurrentRule[getProductionDslName(currOr) +\n (currOr.idx === 0 ? \"\" : currOr.idx)];\n });\n }\n // New Handling of ignoring ambiguities\n // - https://github.com/SAP/chevrotain/issues/869\n ors = reject(ors, function (currOr) { return currOr.ignoreAmbiguities === true; });\n var errors = utils.reduce(ors, function (result, currOr) {\n var currOccurrence = currOr.idx;\n var actualMaxLookahead = currOr.maxLookahead || globalMaxLookahead;\n var alternatives = getLookaheadPathsForOr(currOccurrence, topLevelRule, actualMaxLookahead, currOr);\n var altsAmbiguityErrors = checkAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider);\n var altsPrefixAmbiguityErrors = checkPrefixAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider);\n return result.concat(altsAmbiguityErrors, altsPrefixAmbiguityErrors);\n }, []);\n return errors;\n}\nvar RepetionCollector = /** @class */ (function (_super) {\n __extends(RepetionCollector, _super);\n function RepetionCollector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.allProductions = [];\n return _this;\n }\n RepetionCollector.prototype.visitRepetitionWithSeparator = function (manySep) {\n this.allProductions.push(manySep);\n };\n RepetionCollector.prototype.visitRepetitionMandatory = function (atLeastOne) {\n this.allProductions.push(atLeastOne);\n };\n RepetionCollector.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) {\n this.allProductions.push(atLeastOneSep);\n };\n RepetionCollector.prototype.visitRepetition = function (many) {\n this.allProductions.push(many);\n };\n return RepetionCollector;\n}(GAstVisitor));\nexport { RepetionCollector };\nexport function validateTooManyAlts(topLevelRule, errMsgProvider) {\n var orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n var ors = orCollector.alternations;\n var errors = utils.reduce(ors, function (errors, currOr) {\n if (currOr.definition.length > 255) {\n errors.push({\n message: errMsgProvider.buildTooManyAlternativesError({\n topLevelRule: topLevelRule,\n alternation: currOr\n }),\n type: ParserDefinitionErrorType.TOO_MANY_ALTS,\n ruleName: topLevelRule.name,\n occurrence: currOr.idx\n });\n }\n return errors;\n }, []);\n return errors;\n}\nexport function validateSomeNonEmptyLookaheadPath(topLevelRules, maxLookahead, errMsgProvider) {\n var errors = [];\n forEach(topLevelRules, function (currTopRule) {\n var collectorVisitor = new RepetionCollector();\n currTopRule.accept(collectorVisitor);\n var allRuleProductions = collectorVisitor.allProductions;\n forEach(allRuleProductions, function (currProd) {\n var prodType = getProdType(currProd);\n var actualMaxLookahead = currProd.maxLookahead || maxLookahead;\n var currOccurrence = currProd.idx;\n var paths = getLookaheadPathsForOptionalProd(currOccurrence, currTopRule, prodType, actualMaxLookahead);\n var pathsInsideProduction = paths[0];\n if (isEmpty(flatten(pathsInsideProduction))) {\n var errMsg = errMsgProvider.buildEmptyRepetitionError({\n topLevelRule: currTopRule,\n repetition: currProd\n });\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,\n ruleName: currTopRule.name\n });\n }\n });\n });\n return errors;\n}\nfunction checkAlternativesAmbiguities(alternatives, alternation, rule, errMsgProvider) {\n var foundAmbiguousPaths = [];\n var identicalAmbiguities = reduce(alternatives, function (result, currAlt, currAltIdx) {\n // ignore (skip) ambiguities with this alternative\n if (alternation.definition[currAltIdx].ignoreAmbiguities === true) {\n return result;\n }\n forEach(currAlt, function (currPath) {\n var altsCurrPathAppearsIn = [currAltIdx];\n forEach(alternatives, function (currOtherAlt, currOtherAltIdx) {\n if (currAltIdx !== currOtherAltIdx &&\n containsPath(currOtherAlt, currPath) &&\n // ignore (skip) ambiguities with this \"other\" alternative\n alternation.definition[currOtherAltIdx]\n .ignoreAmbiguities !== true) {\n altsCurrPathAppearsIn.push(currOtherAltIdx);\n }\n });\n if (altsCurrPathAppearsIn.length > 1 &&\n !containsPath(foundAmbiguousPaths, currPath)) {\n foundAmbiguousPaths.push(currPath);\n result.push({\n alts: altsCurrPathAppearsIn,\n path: currPath\n });\n }\n });\n return result;\n }, []);\n var currErrors = utils.map(identicalAmbiguities, function (currAmbDescriptor) {\n var ambgIndices = map(currAmbDescriptor.alts, function (currAltIdx) { return currAltIdx + 1; });\n var currMessage = errMsgProvider.buildAlternationAmbiguityError({\n topLevelRule: rule,\n alternation: alternation,\n ambiguityIndices: ambgIndices,\n prefixPath: currAmbDescriptor.path\n });\n return {\n message: currMessage,\n type: ParserDefinitionErrorType.AMBIGUOUS_ALTS,\n ruleName: rule.name,\n occurrence: alternation.idx,\n alternatives: [currAmbDescriptor.alts]\n };\n });\n return currErrors;\n}\nexport function checkPrefixAlternativesAmbiguities(alternatives, alternation, rule, errMsgProvider) {\n var errors = [];\n // flatten\n var pathsAndIndices = reduce(alternatives, function (result, currAlt, idx) {\n var currPathsAndIdx = map(currAlt, function (currPath) {\n return { idx: idx, path: currPath };\n });\n return result.concat(currPathsAndIdx);\n }, []);\n forEach(pathsAndIndices, function (currPathAndIdx) {\n var alternativeGast = alternation.definition[currPathAndIdx.idx];\n // ignore (skip) ambiguities with this alternative\n if (alternativeGast.ignoreAmbiguities === true) {\n return;\n }\n var targetIdx = currPathAndIdx.idx;\n var targetPath = currPathAndIdx.path;\n var prefixAmbiguitiesPathsAndIndices = findAll(pathsAndIndices, function (searchPathAndIdx) {\n // prefix ambiguity can only be created from lower idx (higher priority) path\n return (\n // ignore (skip) ambiguities with this \"other\" alternative\n alternation.definition[searchPathAndIdx.idx]\n .ignoreAmbiguities !== true &&\n searchPathAndIdx.idx < targetIdx &&\n // checking for strict prefix because identical lookaheads\n // will be be detected using a different validation.\n isStrictPrefixOfPath(searchPathAndIdx.path, targetPath));\n });\n var currPathPrefixErrors = map(prefixAmbiguitiesPathsAndIndices, function (currAmbPathAndIdx) {\n var ambgIndices = [currAmbPathAndIdx.idx + 1, targetIdx + 1];\n var occurrence = alternation.idx === 0 ? \"\" : alternation.idx;\n var message = errMsgProvider.buildAlternationPrefixAmbiguityError({\n topLevelRule: rule,\n alternation: alternation,\n ambiguityIndices: ambgIndices,\n prefixPath: currAmbPathAndIdx.path\n });\n return {\n message: message,\n type: ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS,\n ruleName: rule.name,\n occurrence: occurrence,\n alternatives: ambgIndices\n };\n });\n errors = errors.concat(currPathPrefixErrors);\n });\n return errors;\n}\nfunction checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider) {\n var errors = [];\n var tokenNames = map(tokenTypes, function (currToken) { return currToken.name; });\n forEach(topLevels, function (currRule) {\n var currRuleName = currRule.name;\n if (contains(tokenNames, currRuleName)) {\n var errMsg = errMsgProvider.buildNamespaceConflictError(currRule);\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE,\n ruleName: currRuleName\n });\n }\n });\n return errors;\n}\nfunction validateDuplicateNestedRules(topLevelRules, errMsgProvider) {\n var errors = [];\n forEach(topLevelRules, function (currTopRule) {\n var namedCollectorVisitor = new NamedDSLMethodsCollectorVisitor(\"\");\n currTopRule.accept(namedCollectorVisitor);\n var prodsByGroup = groupBy(namedCollectorVisitor.result, function (item) { return item.name; });\n var duplicates = pick(prodsByGroup, function (currGroup) {\n return currGroup.length > 1;\n });\n forEach(values(duplicates), function (currDupGroup) {\n var currDupProds = map(currDupGroup, function (dupGroup) { return dupGroup.orgProd; });\n var errMsg = errMsgProvider.buildDuplicateNestedRuleNameError(currTopRule, currDupProds);\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.DUPLICATE_NESTED_NAME,\n ruleName: currTopRule.name\n });\n });\n });\n return errors;\n}\n//# sourceMappingURL=checks.js.map","import { hasTokenLabel, tokenLabel } from \"../scan/tokens_public\";\nimport * as utils from \"../utils/utils\";\nimport { first, map, reduce } from \"../utils/utils\";\nimport { NonTerminal, Rule, Terminal } from \"./grammar/gast/gast_public\";\nimport { getProductionDslName } from \"./grammar/gast/gast\";\nimport { validNestedRuleName } from \"./grammar/checks\";\nexport var defaultParserErrorProvider = {\n buildMismatchTokenMessage: function (_a) {\n var expected = _a.expected, actual = _a.actual, previous = _a.previous, ruleName = _a.ruleName;\n var hasLabel = hasTokenLabel(expected);\n var expectedMsg = hasLabel\n ? \"--> \" + tokenLabel(expected) + \" <--\"\n : \"token of type --> \" + expected.name + \" <--\";\n var msg = \"Expecting \" + expectedMsg + \" but found --> '\" + actual.image + \"' <--\";\n return msg;\n },\n buildNotAllInputParsedMessage: function (_a) {\n var firstRedundant = _a.firstRedundant, ruleName = _a.ruleName;\n return (\"Redundant input, expecting EOF but found: \" + firstRedundant.image);\n },\n buildNoViableAltMessage: function (_a) {\n var expectedPathsPerAlt = _a.expectedPathsPerAlt, actual = _a.actual, previous = _a.previous, customUserDescription = _a.customUserDescription, ruleName = _a.ruleName;\n var errPrefix = \"Expecting: \";\n // TODO: issue: No Viable Alternative Error may have incomplete details. #502\n var actualText = first(actual).image;\n var errSuffix = \"\\nbut found: '\" + actualText + \"'\";\n if (customUserDescription) {\n return errPrefix + customUserDescription + errSuffix;\n }\n else {\n var allLookAheadPaths = reduce(expectedPathsPerAlt, function (result, currAltPaths) { return result.concat(currAltPaths); }, []);\n var nextValidTokenSequences = map(allLookAheadPaths, function (currPath) {\n return \"[\" + map(currPath, function (currTokenType) {\n return tokenLabel(currTokenType);\n }).join(\", \") + \"]\";\n });\n var nextValidSequenceItems = map(nextValidTokenSequences, function (itemMsg, idx) { return \" \" + (idx + 1) + \". \" + itemMsg; });\n var calculatedDescription = \"one of these possible Token sequences:\\n\" + nextValidSequenceItems.join(\"\\n\");\n return errPrefix + calculatedDescription + errSuffix;\n }\n },\n buildEarlyExitMessage: function (_a) {\n var expectedIterationPaths = _a.expectedIterationPaths, actual = _a.actual, customUserDescription = _a.customUserDescription, ruleName = _a.ruleName;\n var errPrefix = \"Expecting: \";\n // TODO: issue: No Viable Alternative Error may have incomplete details. #502\n var actualText = first(actual).image;\n var errSuffix = \"\\nbut found: '\" + actualText + \"'\";\n if (customUserDescription) {\n return errPrefix + customUserDescription + errSuffix;\n }\n else {\n var nextValidTokenSequences = map(expectedIterationPaths, function (currPath) {\n return \"[\" + map(currPath, function (currTokenType) {\n return tokenLabel(currTokenType);\n }).join(\",\") + \"]\";\n });\n var calculatedDescription = \"expecting at least one iteration which starts with one of these possible Token sequences::\\n \" +\n (\"<\" + nextValidTokenSequences.join(\" ,\") + \">\");\n return errPrefix + calculatedDescription + errSuffix;\n }\n }\n};\nObject.freeze(defaultParserErrorProvider);\nexport var defaultGrammarResolverErrorProvider = {\n buildRuleNotFoundError: function (topLevelRule, undefinedRule) {\n var msg = \"Invalid grammar, reference to a rule which is not defined: ->\" +\n undefinedRule.nonTerminalName +\n \"<-\\n\" +\n \"inside top level rule: ->\" +\n topLevelRule.name +\n \"<-\";\n return msg;\n }\n};\nexport var defaultGrammarValidatorErrorProvider = {\n buildDuplicateFoundError: function (topLevelRule, duplicateProds) {\n function getExtraProductionArgument(prod) {\n if (prod instanceof Terminal) {\n return prod.terminalType.name;\n }\n else if (prod instanceof NonTerminal) {\n return prod.nonTerminalName;\n }\n else {\n return \"\";\n }\n }\n var topLevelName = topLevelRule.name;\n var duplicateProd = first(duplicateProds);\n var index = duplicateProd.idx;\n var dslName = getProductionDslName(duplicateProd);\n var extraArgument = getExtraProductionArgument(duplicateProd);\n var hasExplicitIndex = index > 0;\n var msg = \"->\" + dslName + (hasExplicitIndex ? index : \"\") + \"<- \" + (extraArgument ? \"with argument: ->\" + extraArgument + \"<-\" : \"\") + \"\\n appears more than once (\" + duplicateProds.length + \" times) in the top level rule: ->\" + topLevelName + \"<-. \\n For further details see: https://sap.github.io/chevrotain/docs/FAQ.html#NUMERICAL_SUFFIXES \\n \";\n // white space trimming time! better to trim afterwards as it allows to use WELL formatted multi line template strings...\n msg = msg.replace(/[ \\t]+/g, \" \");\n msg = msg.replace(/\\s\\s+/g, \"\\n\");\n return msg;\n },\n buildInvalidNestedRuleNameError: function (topLevelRule, nestedProd) {\n var msg = \"Invalid nested rule name: ->\" + nestedProd.name + \"<- inside rule: ->\" + topLevelRule.name + \"<-\\n\" +\n (\"it must match the pattern: ->\" + validNestedRuleName.toString() + \"<-.\\n\") +\n \"Note that this means a nested rule name must start with the '$'(dollar) sign.\";\n return msg;\n },\n buildDuplicateNestedRuleNameError: function (topLevelRule, nestedProd) {\n var duplicateName = first(nestedProd).name;\n var errMsg = \"Duplicate nested rule name: ->\" + duplicateName + \"<- inside rule: ->\" + topLevelRule.name + \"<-\\n\" +\n \"A nested name must be unique in the scope of a top level grammar rule.\";\n return errMsg;\n },\n buildNamespaceConflictError: function (rule) {\n var errMsg = \"Namespace conflict found in grammar.\\n\" +\n (\"The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <\" + rule.name + \">.\\n\") +\n \"To resolve this make sure each Terminal and Non-Terminal names are unique\\n\" +\n \"This is easy to accomplish by using the convention that Terminal names start with an uppercase letter\\n\" +\n \"and Non-Terminal names start with a lower case letter.\";\n return errMsg;\n },\n buildAlternationPrefixAmbiguityError: function (options) {\n var pathMsg = map(options.prefixPath, function (currTok) {\n return tokenLabel(currTok);\n }).join(\", \");\n var occurrence = options.alternation.idx === 0 ? \"\" : options.alternation.idx;\n var errMsg = \"Ambiguous alternatives: <\" + options.ambiguityIndices.join(\" ,\") + \"> due to common lookahead prefix\\n\" +\n (\"in <OR\" + occurrence + \"> inside <\" + options.topLevelRule.name + \"> Rule,\\n\") +\n (\"<\" + pathMsg + \"> may appears as a prefix path in all these alternatives.\\n\") +\n \"See: https://sap.github.io/chevrotain/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\\n\" +\n \"For Further details.\";\n return errMsg;\n },\n buildAlternationAmbiguityError: function (options) {\n var pathMsg = map(options.prefixPath, function (currtok) {\n return tokenLabel(currtok);\n }).join(\", \");\n var occurrence = options.alternation.idx === 0 ? \"\" : options.alternation.idx;\n var currMessage = \"Ambiguous Alternatives Detected: <\" + options.ambiguityIndices.join(\" ,\") + \"> in <OR\" + occurrence + \">\" +\n (\" inside <\" + options.topLevelRule.name + \"> Rule,\\n\") +\n (\"<\" + pathMsg + \"> may appears as a prefix path in all these alternatives.\\n\");\n currMessage =\n currMessage +\n \"See: https://sap.github.io/chevrotain/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\\n\" +\n \"For Further details.\";\n return currMessage;\n },\n buildEmptyRepetitionError: function (options) {\n var dslName = getProductionDslName(options.repetition);\n if (options.repetition.idx !== 0) {\n dslName += options.repetition.idx;\n }\n var errMsg = \"The repetition <\" + dslName + \"> within Rule <\" + options.topLevelRule.name + \"> can never consume any tokens.\\n\" +\n \"This could lead to an infinite loop.\";\n return errMsg;\n },\n buildTokenNameError: function (options) {\n var tokTypeName = options.tokenType.name;\n var errMsg = \"Invalid Grammar Token name: ->\" + tokTypeName + \"<- it must match the pattern: ->\" + options.expectedPattern.toString() + \"<-\";\n return errMsg;\n },\n buildEmptyAlternationError: function (options) {\n var errMsg = \"Ambiguous empty alternative: <\" + (options.emptyChoiceIdx + 1) + \">\" +\n (\" in <OR\" + options.alternation.idx + \"> inside <\" + options.topLevelRule.name + \"> Rule.\\n\") +\n \"Only the last alternative may be an empty alternative.\";\n return errMsg;\n },\n buildTooManyAlternativesError: function (options) {\n var errMsg = \"An Alternation cannot have more than 256 alternatives:\\n\" +\n (\"<OR\" + options.alternation.idx + \"> inside <\" + options.topLevelRule.name + \"> Rule.\\n has \" + (options.alternation.definition.length +\n 1) + \" alternatives.\");\n return errMsg;\n },\n buildLeftRecursionError: function (options) {\n var ruleName = options.topLevelRule.name;\n var pathNames = utils.map(options.leftRecursionPath, function (currRule) { return currRule.name; });\n var leftRecursivePath = ruleName + \" --> \" + pathNames\n .concat([ruleName])\n .join(\" --> \");\n var errMsg = \"Left Recursion found in grammar.\\n\" +\n (\"rule: <\" + ruleName + \"> can be invoked from itself (directly or indirectly)\\n\") +\n (\"without consuming any Tokens. The grammar path that causes this is: \\n \" + leftRecursivePath + \"\\n\") +\n \" To fix this refactor your grammar to remove the left recursion.\\n\" +\n \"see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.\";\n return errMsg;\n },\n buildInvalidRuleNameError: function (options) {\n var ruleName = options.topLevelRule.name;\n var expectedPatternString = options.expectedPattern.toString();\n var errMsg = \"Invalid grammar rule name: ->\" + ruleName + \"<- it must match the pattern: ->\" + expectedPatternString + \"<-\";\n return errMsg;\n },\n buildDuplicateRuleNameError: function (options) {\n var ruleName;\n if (options.topLevelRule instanceof Rule) {\n ruleName = options.topLevelRule.name;\n }\n else {\n ruleName = options.topLevelRule;\n }\n var errMsg = \"Duplicate definition, rule: ->\" + ruleName + \"<- is already defined in the grammar: ->\" + options.grammarName + \"<-\";\n return errMsg;\n }\n};\n//# sourceMappingURL=errors_public.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ParserDefinitionErrorType } from \"../parser/parser\";\nimport { forEach, values } from \"../../utils/utils\";\nimport { GAstVisitor } from \"./gast/gast_visitor_public\";\nexport function resolveGrammar(topLevels, errMsgProvider) {\n var refResolver = new GastRefResolverVisitor(topLevels, errMsgProvider);\n refResolver.resolveRefs();\n return refResolver.errors;\n}\nvar GastRefResolverVisitor = /** @class */ (function (_super) {\n __extends(GastRefResolverVisitor, _super);\n function GastRefResolverVisitor(nameToTopRule, errMsgProvider) {\n var _this = _super.call(this) || this;\n _this.nameToTopRule = nameToTopRule;\n _this.errMsgProvider = errMsgProvider;\n _this.errors = [];\n return _this;\n }\n GastRefResolverVisitor.prototype.resolveRefs = function () {\n var _this = this;\n forEach(values(this.nameToTopRule), function (prod) {\n _this.currTopLevel = prod;\n prod.accept(_this);\n });\n };\n GastRefResolverVisitor.prototype.visitNonTerminal = function (node) {\n var ref = this.nameToTopRule[node.nonTerminalName];\n if (!ref) {\n var msg = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, node);\n this.errors.push({\n message: msg,\n type: ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,\n ruleName: this.currTopLevel.name,\n unresolvedRefName: node.nonTerminalName\n });\n }\n else {\n node.referencedRule = ref;\n }\n };\n return GastRefResolverVisitor;\n}(GAstVisitor));\nexport { GastRefResolverVisitor };\n//# sourceMappingURL=resolver.js.map","import { defaults, forEach } from \"../../../utils/utils\";\nimport { resolveGrammar as orgResolveGrammar } from \"../resolver\";\nimport { validateGrammar as orgValidateGrammar } from \"../checks\";\nimport { defaultGrammarResolverErrorProvider, defaultGrammarValidatorErrorProvider } from \"../../errors_public\";\nimport { DslMethodsCollectorVisitor } from \"./gast\";\nexport function resolveGrammar(options) {\n options = defaults(options, {\n errMsgProvider: defaultGrammarResolverErrorProvider\n });\n var topRulesTable = {};\n forEach(options.rules, function (rule) {\n topRulesTable[rule.name] = rule;\n });\n return orgResolveGrammar(topRulesTable, options.errMsgProvider);\n}\nexport function validateGrammar(options) {\n options = defaults(options, {\n errMsgProvider: defaultGrammarValidatorErrorProvider,\n ignoredIssues: {}\n });\n return orgValidateGrammar(options.rules, options.maxLookahead, options.tokenTypes, options.ignoredIssues, options.errMsgProvider, options.grammarName);\n}\nexport function assignOccurrenceIndices(options) {\n forEach(options.rules, function (currRule) {\n var methodsCollector = new DslMethodsCollectorVisitor();\n currRule.accept(methodsCollector);\n forEach(methodsCollector.dslMethods, function (methods) {\n forEach(methods, function (currMethod, arrIdx) {\n currMethod.idx = arrIdx + 1;\n });\n });\n });\n}\n//# sourceMappingURL=gast_resolver_public.js.map","import { contains } from \"../utils/utils\";\nvar MISMATCHED_TOKEN_EXCEPTION = \"MismatchedTokenException\";\nvar NO_VIABLE_ALT_EXCEPTION = \"NoViableAltException\";\nvar EARLY_EXIT_EXCEPTION = \"EarlyExitException\";\nvar NOT_ALL_INPUT_PARSED_EXCEPTION = \"NotAllInputParsedException\";\nvar RECOGNITION_EXCEPTION_NAMES = [\n MISMATCHED_TOKEN_EXCEPTION,\n NO_VIABLE_ALT_EXCEPTION,\n EARLY_EXIT_EXCEPTION,\n NOT_ALL_INPUT_PARSED_EXCEPTION\n];\nObject.freeze(RECOGNITION_EXCEPTION_NAMES);\n// hacks to bypass no support for custom Errors in javascript/typescript\nexport function isRecognitionException(error) {\n // can't do instanceof on hacked custom js exceptions\n return contains(RECOGNITION_EXCEPTION_NAMES, error.name);\n}\nexport function MismatchedTokenException(message, token, previousToken) {\n this.name = MISMATCHED_TOKEN_EXCEPTION;\n this.message = message;\n this.token = token;\n this.previousToken = previousToken;\n this.resyncedTokens = [];\n}\n// must use the \"Error.prototype\" instead of \"new Error\"\n// because the stack trace points to where \"new Error\" was invoked\"\nMismatchedTokenException.prototype = Error.prototype;\nexport function NoViableAltException(message, token, previousToken) {\n this.name = NO_VIABLE_ALT_EXCEPTION;\n this.message = message;\n this.token = token;\n this.previousToken = previousToken;\n this.resyncedTokens = [];\n}\nNoViableAltException.prototype = Error.prototype;\nexport function NotAllInputParsedException(message, token) {\n this.name = NOT_ALL_INPUT_PARSED_EXCEPTION;\n this.message = message;\n this.token = token;\n this.resyncedTokens = [];\n}\nNotAllInputParsedException.prototype = Error.prototype;\nexport function EarlyExitException(message, token, previousToken) {\n this.name = EARLY_EXIT_EXCEPTION;\n this.message = message;\n this.token = token;\n this.previousToken = previousToken;\n this.resyncedTokens = [];\n}\nEarlyExitException.prototype = Error.prototype;\n//# sourceMappingURL=exceptions_public.js.map","import { createTokenInstance, EOF } from \"../../../scan/tokens_public\";\nimport { cloneArr, contains, dropRight, find, flatten, has, isEmpty, map } from \"../../../utils/utils\";\nimport { MismatchedTokenException } from \"../../exceptions_public\";\nimport { IN } from \"../../constants\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser\";\nexport var EOF_FOLLOW_KEY = {};\nexport var IN_RULE_RECOVERY_EXCEPTION = \"InRuleRecoveryException\";\nexport function InRuleRecoveryException(message) {\n this.name = IN_RULE_RECOVERY_EXCEPTION;\n this.message = message;\n}\nInRuleRecoveryException.prototype = Error.prototype;\n/**\n * This trait is responsible for the error recovery and fault tolerant logic\n */\nvar Recoverable = /** @class */ (function () {\n function Recoverable() {\n }\n Recoverable.prototype.initRecoverable = function (config) {\n this.firstAfterRepMap = {};\n this.resyncFollows = {};\n this.recoveryEnabled = has(config, \"recoveryEnabled\")\n ? config.recoveryEnabled\n : DEFAULT_PARSER_CONFIG.recoveryEnabled;\n // performance optimization, NOOP will be inlined which\n // effectively means that this optional feature does not exist\n // when not used.\n if (this.recoveryEnabled) {\n this.attemptInRepetitionRecovery = attemptInRepetitionRecovery;\n }\n };\n Recoverable.prototype.getTokenToInsert = function (tokType) {\n var tokToInsert = createTokenInstance(tokType, \"\", NaN, NaN, NaN, NaN, NaN, NaN);\n tokToInsert.isInsertedInRecovery = true;\n return tokToInsert;\n };\n Recoverable.prototype.canTokenTypeBeInsertedInRecovery = function (tokType) {\n return true;\n };\n Recoverable.prototype.tryInRepetitionRecovery = function (grammarRule, grammarRuleArgs, lookAheadFunc, expectedTokType) {\n var _this = this;\n // TODO: can the resyncTokenType be cached?\n var reSyncTokType = this.findReSyncTokenType();\n var savedLexerState = this.exportLexerState();\n var resyncedTokens = [];\n var passedResyncPoint = false;\n var nextTokenWithoutResync = this.LA(1);\n var currToken = this.LA(1);\n var generateErrorMessage = function () {\n var previousToken = _this.LA(0);\n // we are preemptively re-syncing before an error has been detected, therefor we must reproduce\n // the error that would have been thrown\n var msg = _this.errorMessageProvider.buildMismatchTokenMessage({\n expected: expectedTokType,\n actual: nextTokenWithoutResync,\n previous: previousToken,\n ruleName: _this.getCurrRuleFullName()\n });\n var error = new MismatchedTokenException(msg, nextTokenWithoutResync, _this.LA(0));\n // the first token here will be the original cause of the error, this is not part of the resyncedTokens property.\n error.resyncedTokens = dropRight(resyncedTokens);\n _this.SAVE_ERROR(error);\n };\n while (!passedResyncPoint) {\n // re-synced to a point where we can safely exit the repetition/\n if (this.tokenMatcher(currToken, expectedTokType)) {\n generateErrorMessage();\n return; // must return here to avoid reverting the inputIdx\n }\n else if (lookAheadFunc.call(this)) {\n // we skipped enough tokens so we can resync right back into another iteration of the repetition grammar rule\n generateErrorMessage();\n // recursive invocation in other to support multiple re-syncs in the same top level repetition grammar rule\n grammarRule.apply(this, grammarRuleArgs);\n return; // must return here to avoid reverting the inputIdx\n }\n else if (this.tokenMatcher(currToken, reSyncTokType)) {\n passedResyncPoint = true;\n }\n else {\n currToken = this.SKIP_TOKEN();\n this.addToResyncTokens(currToken, resyncedTokens);\n }\n }\n // we were unable to find a CLOSER point to resync inside the Repetition, reset the state.\n // The parsing exception we were trying to prevent will happen in the NEXT parsing step. it may be handled by\n // \"between rules\" resync recovery later in the flow.\n this.importLexerState(savedLexerState);\n };\n Recoverable.prototype.shouldInRepetitionRecoveryBeTried = function (expectTokAfterLastMatch, nextTokIdx, notStuck) {\n // Edge case of arriving from a MANY repetition which is stuck\n // Attempting recovery in this case could cause an infinite loop\n if (notStuck === false) {\n return false;\n }\n // arguments to try and perform resync into the next iteration of the many are missing\n if (expectTokAfterLastMatch === undefined || nextTokIdx === undefined) {\n return false;\n }\n // no need to recover, next token is what we expect...\n if (this.tokenMatcher(this.LA(1), expectTokAfterLastMatch)) {\n return false;\n }\n // error recovery is disabled during backtracking as it can make the parser ignore a valid grammar path\n // and prefer some backtracking path that includes recovered errors.\n if (this.isBackTracking()) {\n return false;\n }\n // if we can perform inRule recovery (single token insertion or deletion) we always prefer that recovery algorithm\n // because if it works, it makes the least amount of changes to the input stream (greedy algorithm)\n //noinspection RedundantIfStatementJS\n if (this.canPerformInRuleRecovery(expectTokAfterLastMatch, this.getFollowsForInRuleRecovery(expectTokAfterLastMatch, nextTokIdx))) {\n return false;\n }\n return true;\n };\n // Error Recovery functionality\n Recoverable.prototype.getFollowsForInRuleRecovery = function (tokType, tokIdxInRule) {\n var grammarPath = this.getCurrentGrammarPath(tokType, tokIdxInRule);\n var follows = this.getNextPossibleTokenTypes(grammarPath);\n return follows;\n };\n Recoverable.prototype.tryInRuleRecovery = function (expectedTokType, follows) {\n if (this.canRecoverWithSingleTokenInsertion(expectedTokType, follows)) {\n var tokToInsert = this.getTokenToInsert(expectedTokType);\n return tokToInsert;\n }\n if (this.canRecoverWithSingleTokenDeletion(expectedTokType)) {\n var nextTok = this.SKIP_TOKEN();\n this.consumeToken();\n return nextTok;\n }\n throw new InRuleRecoveryException(\"sad sad panda\");\n };\n Recoverable.prototype.canPerformInRuleRecovery = function (expectedToken, follows) {\n return (this.canRecoverWithSingleTokenInsertion(expectedToken, follows) ||\n this.canRecoverWithSingleTokenDeletion(expectedToken));\n };\n Recoverable.prototype.canRecoverWithSingleTokenInsertion = function (expectedTokType, follows) {\n var _this = this;\n if (!this.canTokenTypeBeInsertedInRecovery(expectedTokType)) {\n return false;\n }\n // must know the possible following tokens to perform single token insertion\n if (isEmpty(follows)) {\n return false;\n }\n var mismatchedTok = this.LA(1);\n var isMisMatchedTokInFollows = find(follows, function (possibleFollowsTokType) {\n return _this.tokenMatcher(mismatchedTok, possibleFollowsTokType);\n }) !== undefined;\n return isMisMatchedTokInFollows;\n };\n Recoverable.prototype.canRecoverWithSingleTokenDeletion = function (expectedTokType) {\n var isNextTokenWhatIsExpected = this.tokenMatcher(this.LA(2), expectedTokType);\n return isNextTokenWhatIsExpected;\n };\n Recoverable.prototype.isInCurrentRuleReSyncSet = function (tokenTypeIdx) {\n var followKey = this.getCurrFollowKey();\n var currentRuleReSyncSet = this.getFollowSetFromFollowKey(followKey);\n return contains(currentRuleReSyncSet, tokenTypeIdx);\n };\n Recoverable.prototype.findReSyncTokenType = function () {\n var allPossibleReSyncTokTypes = this.flattenFollowSet();\n // this loop will always terminate as EOF is always in the follow stack and also always (virtually) in the input\n var nextToken = this.LA(1);\n var k = 2;\n while (true) {\n var nextTokenType = nextToken.tokenType;\n if (contains(allPossibleReSyncTokTypes, nextTokenType)) {\n return nextTokenType;\n }\n nextToken = this.LA(k);\n k++;\n }\n };\n Recoverable.prototype.getCurrFollowKey = function () {\n // the length is at least one as we always add the ruleName to the stack before invoking the rule.\n if (this.RULE_STACK.length === 1) {\n return EOF_FOLLOW_KEY;\n }\n var currRuleShortName = this.getLastExplicitRuleShortName();\n var currRuleIdx = this.getLastExplicitRuleOccurrenceIndex();\n var prevRuleShortName = this.getPreviousExplicitRuleShortName();\n return {\n ruleName: this.shortRuleNameToFullName(currRuleShortName),\n idxInCallingRule: currRuleIdx,\n inRule: this.shortRuleNameToFullName(prevRuleShortName)\n };\n };\n Recoverable.prototype.buildFullFollowKeyStack = function () {\n var _this = this;\n var explicitRuleStack = this.RULE_STACK;\n var explicitOccurrenceStack = this.RULE_OCCURRENCE_STACK;\n if (!isEmpty(this.LAST_EXPLICIT_RULE_STACK)) {\n explicitRuleStack = map(this.LAST_EXPLICIT_RULE_STACK, function (idx) { return _this.RULE_STACK[idx]; });\n explicitOccurrenceStack = map(this.LAST_EXPLICIT_RULE_STACK, function (idx) { return _this.RULE_OCCURRENCE_STACK[idx]; });\n }\n // TODO: only iterate over explicit rules here\n return map(explicitRuleStack, function (ruleName, idx) {\n if (idx === 0) {\n return EOF_FOLLOW_KEY;\n }\n return {\n ruleName: _this.shortRuleNameToFullName(ruleName),\n idxInCallingRule: explicitOccurrenceStack[idx],\n inRule: _this.shortRuleNameToFullName(explicitRuleStack[idx - 1])\n };\n });\n };\n Recoverable.prototype.flattenFollowSet = function () {\n var _this = this;\n var followStack = map(this.buildFullFollowKeyStack(), function (currKey) {\n return _this.getFollowSetFromFollowKey(currKey);\n });\n return flatten(followStack);\n };\n Recoverable.prototype.getFollowSetFromFollowKey = function (followKey) {\n if (followKey === EOF_FOLLOW_KEY) {\n return [EOF];\n }\n var followName = followKey.ruleName +\n followKey.idxInCallingRule +\n IN +\n followKey.inRule;\n return this.resyncFollows[followName];\n };\n // It does not make any sense to include a virtual EOF token in the list of resynced tokens\n // as EOF does not really exist and thus does not contain any useful information (line/column numbers)\n Recoverable.prototype.addToResyncTokens = function (token, resyncTokens) {\n if (!this.tokenMatcher(token, EOF)) {\n resyncTokens.push(token);\n }\n return resyncTokens;\n };\n Recoverable.prototype.reSyncTo = function (tokType) {\n var resyncedTokens = [];\n var nextTok = this.LA(1);\n while (this.tokenMatcher(nextTok, tokType) === false) {\n nextTok = this.SKIP_TOKEN();\n this.addToResyncTokens(nextTok, resyncedTokens);\n }\n // the last token is not part of the error.\n return dropRight(resyncedTokens);\n };\n Recoverable.prototype.attemptInRepetitionRecovery = function (prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) {\n // by default this is a NO-OP\n // The actual implementation is with the function(not method) below\n };\n Recoverable.prototype.getCurrentGrammarPath = function (tokType, tokIdxInRule) {\n var pathRuleStack = this.getHumanReadableRuleStack();\n var pathOccurrenceStack = cloneArr(this.RULE_OCCURRENCE_STACK);\n var grammarPath = {\n ruleStack: pathRuleStack,\n occurrenceStack: pathOccurrenceStack,\n lastTok: tokType,\n lastTokOccurrence: tokIdxInRule\n };\n return grammarPath;\n };\n Recoverable.prototype.getHumanReadableRuleStack = function () {\n var _this = this;\n if (!isEmpty(this.LAST_EXPLICIT_RULE_STACK)) {\n return map(this.LAST_EXPLICIT_RULE_STACK, function (currIdx) {\n return _this.shortRuleNameToFullName(_this.RULE_STACK[currIdx]);\n });\n }\n else {\n return map(this.RULE_STACK, function (currShortName) {\n return _this.shortRuleNameToFullName(currShortName);\n });\n }\n };\n return Recoverable;\n}());\nexport { Recoverable };\nexport function attemptInRepetitionRecovery(prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) {\n var key = this.getKeyForAutomaticLookahead(dslMethodIdx, prodOccurrence);\n var firstAfterRepInfo = this.firstAfterRepMap[key];\n if (firstAfterRepInfo === undefined) {\n var currRuleName = this.getCurrRuleFullName();\n var ruleGrammar = this.getGAstProductions()[currRuleName];\n var walker = new nextToksWalker(ruleGrammar, prodOccurrence);\n firstAfterRepInfo = walker.startWalking();\n this.firstAfterRepMap[key] = firstAfterRepInfo;\n }\n var expectTokAfterLastMatch = firstAfterRepInfo.token;\n var nextTokIdx = firstAfterRepInfo.occurrence;\n var isEndOfRule = firstAfterRepInfo.isEndOfRule;\n // special edge case of a TOP most repetition after which the input should END.\n // this will force an attempt for inRule recovery in that scenario.\n if (this.RULE_STACK.length === 1 &&\n isEndOfRule &&\n expectTokAfterLastMatch === undefined) {\n expectTokAfterLastMatch = EOF;\n nextTokIdx = 1;\n }\n if (this.shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch, nextTokIdx, notStuck)) {\n // TODO: performance optimization: instead of passing the original args here, we modify\n // the args param (or create a new one) and make sure the lookahead func is explicitly provided\n // to avoid searching the cache for it once more.\n this.tryInRepetitionRecovery(prodFunc, args, lookaheadFunc, expectTokAfterLastMatch);\n }\n}\n//# sourceMappingURL=recoverable.js.map","import { buildAlternativesLookAheadFunc, buildLookaheadFuncForOptionalProd, buildLookaheadFuncForOr, buildSingleAlternativeLookaheadFunction, PROD_TYPE } from \"../../grammar/lookahead\";\nimport { forEach, has, isES2015MapSupported } from \"../../../utils/utils\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser\";\nimport { AT_LEAST_ONE_IDX, AT_LEAST_ONE_SEP_IDX, getKeyForAutomaticLookahead, MANY_IDX, MANY_SEP_IDX, OPTION_IDX, OR_IDX } from \"../../grammar/keys\";\nimport { collectMethods, getProductionDslName } from \"../../grammar/gast/gast\";\n/**\n * Trait responsible for the lookahead related utilities and optimizations.\n */\nvar LooksAhead = /** @class */ (function () {\n function LooksAhead() {\n }\n LooksAhead.prototype.initLooksAhead = function (config) {\n this.dynamicTokensEnabled = has(config, \"dynamicTokensEnabled\")\n ? config.dynamicTokensEnabled\n : DEFAULT_PARSER_CONFIG.dynamicTokensEnabled;\n this.maxLookahead = has(config, \"maxLookahead\")\n ? config.maxLookahead\n : DEFAULT_PARSER_CONFIG.maxLookahead;\n /* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */\n this.lookAheadFuncsCache = isES2015MapSupported() ? new Map() : [];\n // Performance optimization on newer engines that support ES6 Map\n // For larger Maps this is slightly faster than using a plain object (array in our case).\n /* istanbul ignore else - The else branch will be tested on older node.js versions and IE11 */\n if (isES2015MapSupported()) {\n this.getLaFuncFromCache = this.getLaFuncFromMap;\n this.setLaFuncCache = this.setLaFuncCacheUsingMap;\n }\n else {\n this.getLaFuncFromCache = this.getLaFuncFromObj;\n this.setLaFuncCache = this.setLaFuncUsingObj;\n }\n };\n LooksAhead.prototype.preComputeLookaheadFunctions = function (rules) {\n var _this = this;\n forEach(rules, function (currRule) {\n _this.TRACE_INIT(currRule.name + \" Rule Lookahead\", function () {\n var _a = collectMethods(currRule), alternation = _a.alternation, repetition = _a.repetition, option = _a.option, repetitionMandatory = _a.repetitionMandatory, repetitionMandatoryWithSeparator = _a.repetitionMandatoryWithSeparator, repetitionWithSeparator = _a.repetitionWithSeparator;\n forEach(alternation, function (currProd) {\n var prodIdx = currProd.idx === 0 ? \"\" : currProd.idx;\n _this.TRACE_INIT(\"\" + getProductionDslName(currProd) + prodIdx, function () {\n var laFunc = buildLookaheadFuncForOr(currProd.idx, currRule, currProd.maxLookahead || _this.maxLookahead, currProd.hasPredicates, _this.dynamicTokensEnabled, _this.lookAheadBuilderForAlternatives);\n var key = getKeyForAutomaticLookahead(_this.fullRuleNameToShort[currRule.name], OR_IDX, currProd.idx);\n _this.setLaFuncCache(key, laFunc);\n });\n });\n forEach(repetition, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, MANY_IDX, PROD_TYPE.REPETITION, currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach(option, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, OPTION_IDX, PROD_TYPE.OPTION, currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach(repetitionMandatory, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_IDX, PROD_TYPE.REPETITION_MANDATORY, currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach(repetitionMandatoryWithSeparator, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_SEP_IDX, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach(repetitionWithSeparator, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, MANY_SEP_IDX, PROD_TYPE.REPETITION_WITH_SEPARATOR, currProd.maxLookahead, getProductionDslName(currProd));\n });\n });\n });\n };\n LooksAhead.prototype.computeLookaheadFunc = function (rule, prodOccurrence, prodKey, prodType, prodMaxLookahead, dslMethodName) {\n var _this = this;\n this.TRACE_INIT(\"\" + dslMethodName + (prodOccurrence === 0 ? \"\" : prodOccurrence), function () {\n var laFunc = buildLookaheadFuncForOptionalProd(prodOccurrence, rule, prodMaxLookahead || _this.maxLookahead, _this.dynamicTokensEnabled, prodType, _this.lookAheadBuilderForOptional);\n var key = getKeyForAutomaticLookahead(_this.fullRuleNameToShort[rule.name], prodKey, prodOccurrence);\n _this.setLaFuncCache(key, laFunc);\n });\n };\n LooksAhead.prototype.lookAheadBuilderForOptional = function (alt, tokenMatcher, dynamicTokensEnabled) {\n return buildSingleAlternativeLookaheadFunction(alt, tokenMatcher, dynamicTokensEnabled);\n };\n LooksAhead.prototype.lookAheadBuilderForAlternatives = function (alts, hasPredicates, tokenMatcher, dynamicTokensEnabled) {\n return buildAlternativesLookAheadFunc(alts, hasPredicates, tokenMatcher, dynamicTokensEnabled);\n };\n // this actually returns a number, but it is always used as a string (object prop key)\n LooksAhead.prototype.getKeyForAutomaticLookahead = function (dslMethodIdx, occurrence) {\n var currRuleShortName = this.getLastExplicitRuleShortName();\n return getKeyForAutomaticLookahead(currRuleShortName, dslMethodIdx, occurrence);\n };\n /* istanbul ignore next */\n LooksAhead.prototype.getLaFuncFromCache = function (key) {\n return undefined;\n };\n LooksAhead.prototype.getLaFuncFromMap = function (key) {\n return this.lookAheadFuncsCache.get(key);\n };\n /* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */\n LooksAhead.prototype.getLaFuncFromObj = function (key) {\n return this.lookAheadFuncsCache[key];\n };\n /* istanbul ignore next */\n LooksAhead.prototype.setLaFuncCache = function (key, value) { };\n LooksAhead.prototype.setLaFuncCacheUsingMap = function (key, value) {\n this.lookAheadFuncsCache.set(key, value);\n };\n /* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */\n LooksAhead.prototype.setLaFuncUsingObj = function (key, value) {\n this.lookAheadFuncsCache[key] = value;\n };\n return LooksAhead;\n}());\nexport { LooksAhead };\n//# sourceMappingURL=looksahead.js.map","import { compact, contains, forEach, isArray, isEmpty, isFunction, isUndefined, keys, map } from \"../../utils/utils\";\nimport { defineNameProp, functionName } from \"../../lang/lang_extensions\";\nimport { validTermsPattern } from \"../grammar/checks\";\nexport function defaultVisit(ctx, param) {\n var childrenNames = keys(ctx);\n var childrenNamesLength = childrenNames.length;\n for (var i = 0; i < childrenNamesLength; i++) {\n var currChildName = childrenNames[i];\n var currChildArray = ctx[currChildName];\n var currChildArrayLength = currChildArray.length;\n for (var j = 0; j < currChildArrayLength; j++) {\n var currChild = currChildArray[j];\n // distinction between Tokens Children and CstNode children\n if (currChild.tokenTypeIdx === undefined) {\n if (currChild.fullName !== undefined) {\n this[currChild.fullName](currChild.children, param);\n }\n else {\n this[currChild.name](currChild.children, param);\n }\n }\n }\n }\n // defaultVisit does not support generic out param\n return undefined;\n}\nexport function createBaseSemanticVisitorConstructor(grammarName, ruleNames) {\n var derivedConstructor = function () { };\n // can be overwritten according to:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/\n // name?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fname\n defineNameProp(derivedConstructor, grammarName + \"BaseSemantics\");\n var semanticProto = {\n visit: function (cstNode, param) {\n // enables writing more concise visitor methods when CstNode has only a single child\n if (isArray(cstNode)) {\n // A CST Node's children dictionary can never have empty arrays as values\n // If a key is defined there will be at least one element in the corresponding value array.\n cstNode = cstNode[0];\n }\n // enables passing optional CstNodes concisely.\n if (isUndefined(cstNode)) {\n return undefined;\n }\n if (cstNode.fullName !== undefined) {\n return this[cstNode.fullName](cstNode.children, param);\n }\n else {\n return this[cstNode.name](cstNode.children, param);\n }\n },\n validateVisitor: function () {\n var semanticDefinitionErrors = validateVisitor(this, ruleNames);\n if (!isEmpty(semanticDefinitionErrors)) {\n var errorMessages = map(semanticDefinitionErrors, function (currDefError) { return currDefError.msg; });\n throw Error(\"Errors Detected in CST Visitor <\" + functionName(this.constructor) + \">:\\n\\t\" +\n (\"\" + errorMessages.join(\"\\n\\n\").replace(/\\n/g, \"\\n\\t\")));\n }\n }\n };\n derivedConstructor.prototype = semanticProto;\n derivedConstructor.prototype.constructor = derivedConstructor;\n derivedConstructor._RULE_NAMES = ruleNames;\n return derivedConstructor;\n}\nexport function createBaseVisitorConstructorWithDefaults(grammarName, ruleNames, baseConstructor) {\n var derivedConstructor = function () { };\n // can be overwritten according to:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/\n // name?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fname\n defineNameProp(derivedConstructor, grammarName + \"BaseSemanticsWithDefaults\");\n var withDefaultsProto = Object.create(baseConstructor.prototype);\n forEach(ruleNames, function (ruleName) {\n withDefaultsProto[ruleName] = defaultVisit;\n });\n derivedConstructor.prototype = withDefaultsProto;\n derivedConstructor.prototype.constructor = derivedConstructor;\n return derivedConstructor;\n}\nexport var CstVisitorDefinitionError;\n(function (CstVisitorDefinitionError) {\n CstVisitorDefinitionError[CstVisitorDefinitionError[\"REDUNDANT_METHOD\"] = 0] = \"REDUNDANT_METHOD\";\n CstVisitorDefinitionError[CstVisitorDefinitionError[\"MISSING_METHOD\"] = 1] = \"MISSING_METHOD\";\n})(CstVisitorDefinitionError || (CstVisitorDefinitionError = {}));\nexport function validateVisitor(visitorInstance, ruleNames) {\n var missingErrors = validateMissingCstMethods(visitorInstance, ruleNames);\n var redundantErrors = validateRedundantMethods(visitorInstance, ruleNames);\n return missingErrors.concat(redundantErrors);\n}\nexport function validateMissingCstMethods(visitorInstance, ruleNames) {\n var errors = map(ruleNames, function (currRuleName) {\n if (!isFunction(visitorInstance[currRuleName])) {\n return {\n msg: \"Missing visitor method: <\" + currRuleName + \"> on \" + functionName(visitorInstance.constructor) + \" CST Visitor.\",\n type: CstVisitorDefinitionError.MISSING_METHOD,\n methodName: currRuleName\n };\n }\n });\n return compact(errors);\n}\nvar VALID_PROP_NAMES = [\"constructor\", \"visit\", \"validateVisitor\"];\nexport function validateRedundantMethods(visitorInstance, ruleNames) {\n var errors = [];\n for (var prop in visitorInstance) {\n if (validTermsPattern.test(prop) &&\n isFunction(visitorInstance[prop]) &&\n !contains(VALID_PROP_NAMES, prop) &&\n !contains(ruleNames, prop)) {\n errors.push({\n msg: \"Redundant visitor method: <\" + prop + \"> on \" + functionName(visitorInstance.constructor) + \" CST Visitor\\n\" +\n \"There is no Grammar Rule corresponding to this method's name.\\n\" +\n (\"For utility methods on visitor classes use methods names that do not match /\" + validTermsPattern.source + \"/.\"),\n type: CstVisitorDefinitionError.REDUNDANT_METHOD,\n methodName: prop\n });\n }\n }\n return errors;\n}\n//# sourceMappingURL=cst_visitor.js.map","import { isUndefined } from \"../utils/utils\";\nexport function classNameFromInstance(instance) {\n return functionName(instance.constructor);\n}\nvar FUNC_NAME_REGEXP = /^\\s*function\\s*(\\S*)\\s*\\(/;\nvar NAME = \"name\";\n/* istanbul ignore next too many hacks for IE/old versions of node.js here*/\nexport function functionName(func) {\n // Engines that support Function.prototype.name OR the nth (n>1) time after\n // the name has been computed in the following else block.\n var existingNameProp = func.name;\n if (existingNameProp) {\n return existingNameProp;\n }\n // hack for IE and engines that do not support Object.defineProperty on function.name (Node.js 0.10 && 0.12)\n var computedName = func.toString().match(FUNC_NAME_REGEXP)[1];\n return computedName;\n}\n/**\n * @returns {boolean} - has the property been successfully defined\n */\nexport function defineNameProp(obj, nameValue) {\n var namePropDescriptor = Object.getOwnPropertyDescriptor(obj, NAME);\n /* istanbul ignore else -> will only run in old versions of node.js */\n if (isUndefined(namePropDescriptor) || namePropDescriptor.configurable) {\n Object.defineProperty(obj, NAME, {\n enumerable: false,\n configurable: true,\n writable: false,\n value: nameValue\n });\n return true;\n }\n /* istanbul ignore next -> will only run in old versions of node.js */\n return false;\n}\n//# sourceMappingURL=lang_extensions.js.map","import { addNoneTerminalToCst, addTerminalToCst, setNodeLocationFull, setNodeLocationOnlyOffset } from \"../../cst/cst\";\nimport { has, isUndefined, NOOP } from \"../../../utils/utils\";\nimport { createBaseSemanticVisitorConstructor, createBaseVisitorConstructorWithDefaults } from \"../../cst/cst_visitor\";\nimport { getKeyForAltIndex } from \"../../grammar/keys\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser\";\n/**\n * This trait is responsible for the CST building logic.\n */\nvar TreeBuilder = /** @class */ (function () {\n function TreeBuilder() {\n }\n TreeBuilder.prototype.initTreeBuilder = function (config) {\n this.LAST_EXPLICIT_RULE_STACK = [];\n this.CST_STACK = [];\n this.outputCst = has(config, \"outputCst\")\n ? config.outputCst\n : DEFAULT_PARSER_CONFIG.outputCst;\n this.nodeLocationTracking = has(config, \"nodeLocationTracking\")\n ? config.nodeLocationTracking\n : DEFAULT_PARSER_CONFIG.nodeLocationTracking;\n if (!this.outputCst) {\n this.cstInvocationStateUpdate = NOOP;\n this.cstFinallyStateUpdate = NOOP;\n this.cstPostTerminal = NOOP;\n this.cstPostNonTerminal = NOOP;\n this.cstPostRule = NOOP;\n this.getLastExplicitRuleShortName = this.getLastExplicitRuleShortNameNoCst;\n this.getPreviousExplicitRuleShortName = this.getPreviousExplicitRuleShortNameNoCst;\n this.getLastExplicitRuleOccurrenceIndex = this.getLastExplicitRuleOccurrenceIndexNoCst;\n this.manyInternal = this.manyInternalNoCst;\n this.orInternal = this.orInternalNoCst;\n this.optionInternal = this.optionInternalNoCst;\n this.atLeastOneInternal = this.atLeastOneInternalNoCst;\n this.manySepFirstInternal = this.manySepFirstInternalNoCst;\n this.atLeastOneSepFirstInternal = this.atLeastOneSepFirstInternalNoCst;\n }\n else {\n if (/full/i.test(this.nodeLocationTracking)) {\n if (this.recoveryEnabled) {\n this.setNodeLocationFromToken = setNodeLocationFull;\n this.setNodeLocationFromNode = setNodeLocationFull;\n this.cstPostRule = NOOP;\n this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery;\n }\n else {\n this.setNodeLocationFromToken = NOOP;\n this.setNodeLocationFromNode = NOOP;\n this.cstPostRule = this.cstPostRuleFull;\n this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular;\n }\n }\n else if (/onlyOffset/i.test(this.nodeLocationTracking)) {\n if (this.recoveryEnabled) {\n this.setNodeLocationFromToken = (setNodeLocationOnlyOffset);\n this.setNodeLocationFromNode = (setNodeLocationOnlyOffset);\n this.cstPostRule = NOOP;\n this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRecovery;\n }\n else {\n this.setNodeLocationFromToken = NOOP;\n this.setNodeLocationFromNode = NOOP;\n this.cstPostRule = this.cstPostRuleOnlyOffset;\n this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRegular;\n }\n }\n else if (/none/i.test(this.nodeLocationTracking)) {\n this.setNodeLocationFromToken = NOOP;\n this.setNodeLocationFromNode = NOOP;\n this.cstPostRule = NOOP;\n this.setInitialNodeLocation = NOOP;\n }\n else {\n throw Error(\"Invalid <nodeLocationTracking> config option: \\\"\" + config.nodeLocationTracking + \"\\\"\");\n }\n }\n };\n TreeBuilder.prototype.setInitialNodeLocationOnlyOffsetRecovery = function (cstNode) {\n cstNode.location = {\n startOffset: NaN,\n endOffset: NaN\n };\n };\n TreeBuilder.prototype.setInitialNodeLocationOnlyOffsetRegular = function (cstNode) {\n cstNode.location = {\n // without error recovery the starting Location of a new CstNode is guaranteed\n // To be the next Token's startOffset (for valid inputs).\n // For invalid inputs there won't be any CSTOutput so this potential\n // inaccuracy does not matter\n startOffset: this.LA(1).startOffset,\n endOffset: NaN\n };\n };\n TreeBuilder.prototype.setInitialNodeLocationFullRecovery = function (cstNode) {\n cstNode.location = {\n startOffset: NaN,\n startLine: NaN,\n startColumn: NaN,\n endOffset: NaN,\n endLine: NaN,\n endColumn: NaN\n };\n };\n /**\n * @see setInitialNodeLocationOnlyOffsetRegular for explanation why this work\n\n * @param cstNode\n */\n TreeBuilder.prototype.setInitialNodeLocationFullRegular = function (cstNode) {\n var nextToken = this.LA(1);\n cstNode.location = {\n startOffset: nextToken.startOffset,\n startLine: nextToken.startLine,\n startColumn: nextToken.startColumn,\n endOffset: NaN,\n endLine: NaN,\n endColumn: NaN\n };\n };\n // CST\n TreeBuilder.prototype.cstNestedInvocationStateUpdate = function (nestedName, shortName) {\n var cstNode = {\n name: nestedName,\n fullName: this.shortRuleNameToFull[this.getLastExplicitRuleShortName()] +\n nestedName,\n children: {}\n };\n this.setInitialNodeLocation(cstNode);\n this.CST_STACK.push(cstNode);\n };\n TreeBuilder.prototype.cstInvocationStateUpdate = function (fullRuleName, shortName) {\n this.LAST_EXPLICIT_RULE_STACK.push(this.RULE_STACK.length - 1);\n var cstNode = {\n name: fullRuleName,\n children: {}\n };\n this.setInitialNodeLocation(cstNode);\n this.CST_STACK.push(cstNode);\n };\n TreeBuilder.prototype.cstFinallyStateUpdate = function () {\n this.LAST_EXPLICIT_RULE_STACK.pop();\n this.CST_STACK.pop();\n };\n TreeBuilder.prototype.cstNestedFinallyStateUpdate = function () {\n var lastCstNode = this.CST_STACK.pop();\n // TODO: the naming is bad, this should go directly to the\n // (correct) cstLocation update method\n // e.g if we put other logic in postRule...\n this.cstPostRule(lastCstNode);\n };\n TreeBuilder.prototype.cstPostRuleFull = function (ruleCstNode) {\n var prevToken = this.LA(0);\n var loc = ruleCstNode.location;\n // If this condition is true it means we consumed at least one Token\n // In this CstNode or its nested children.\n if (loc.startOffset <= prevToken.startOffset === true) {\n loc.endOffset = prevToken.endOffset;\n loc.endLine = prevToken.endLine;\n loc.endColumn = prevToken.endColumn;\n }\n // \"empty\" CstNode edge case\n else {\n loc.startOffset = NaN;\n loc.startLine = NaN;\n loc.startColumn = NaN;\n }\n };\n TreeBuilder.prototype.cstPostRuleOnlyOffset = function (ruleCstNode) {\n var prevToken = this.LA(0);\n var loc = ruleCstNode.location;\n // If this condition is true it means we consumed at least one Token\n // In this CstNode or its nested children.\n if (loc.startOffset <= prevToken.startOffset === true) {\n loc.endOffset = prevToken.endOffset;\n }\n // \"empty\" CstNode edge case\n else {\n loc.startOffset = NaN;\n }\n };\n TreeBuilder.prototype.cstPostTerminal = function (key, consumedToken) {\n var rootCst = this.CST_STACK[this.CST_STACK.length - 1];\n addTerminalToCst(rootCst, consumedToken, key);\n // This is only used when **both** error recovery and CST Output are enabled.\n this.setNodeLocationFromToken(rootCst.location, consumedToken);\n };\n TreeBuilder.prototype.cstPostNonTerminal = function (ruleCstResult, ruleName) {\n // Avoid side effects due to back tracking\n // TODO: This costs a 2-3% in performance, A flag on IParserConfig\n // could be used to get rid of this conditional, but not sure its worth the effort\n // and API complexity.\n if (this.isBackTracking() !== true) {\n var preCstNode = this.CST_STACK[this.CST_STACK.length - 1];\n addNoneTerminalToCst(preCstNode, ruleName, ruleCstResult);\n // This is only used when **both** error recovery and CST Output are enabled.\n this.setNodeLocationFromNode(preCstNode.location, ruleCstResult.location);\n }\n };\n TreeBuilder.prototype.getBaseCstVisitorConstructor = function () {\n if (isUndefined(this.baseCstVisitorConstructor)) {\n var newBaseCstVisitorConstructor = createBaseSemanticVisitorConstructor(this.className, this.allRuleNames);\n this.baseCstVisitorConstructor = newBaseCstVisitorConstructor;\n return newBaseCstVisitorConstructor;\n }\n return this.baseCstVisitorConstructor;\n };\n TreeBuilder.prototype.getBaseCstVisitorConstructorWithDefaults = function () {\n if (isUndefined(this.baseCstVisitorWithDefaultsConstructor)) {\n var newConstructor = createBaseVisitorConstructorWithDefaults(this.className, this.allRuleNames, this.getBaseCstVisitorConstructor());\n this.baseCstVisitorWithDefaultsConstructor = newConstructor;\n return newConstructor;\n }\n return this.baseCstVisitorWithDefaultsConstructor;\n };\n TreeBuilder.prototype.nestedRuleBeforeClause = function (methodOpts, laKey) {\n var nestedName;\n if (methodOpts.NAME !== undefined) {\n nestedName = methodOpts.NAME;\n this.nestedRuleInvocationStateUpdate(nestedName, laKey);\n return nestedName;\n }\n else {\n return undefined;\n }\n };\n TreeBuilder.prototype.nestedAltBeforeClause = function (methodOpts, occurrence, methodKeyIdx, altIdx) {\n var ruleIdx = this.getLastExplicitRuleShortName();\n var shortName = getKeyForAltIndex(ruleIdx, methodKeyIdx, occurrence, altIdx);\n var nestedName;\n if (methodOpts.NAME !== undefined) {\n nestedName = methodOpts.NAME;\n this.nestedRuleInvocationStateUpdate(nestedName, shortName);\n return {\n shortName: shortName,\n nestedName: nestedName\n };\n }\n else {\n return undefined;\n }\n };\n TreeBuilder.prototype.nestedRuleFinallyClause = function (laKey, nestedName) {\n var cstStack = this.CST_STACK;\n var nestedRuleCst = cstStack[cstStack.length - 1];\n this.nestedRuleFinallyStateUpdate();\n // this return a different result than the previous invocation because \"nestedRuleFinallyStateUpdate\" pops the cst stack\n var parentCstNode = cstStack[cstStack.length - 1];\n addNoneTerminalToCst(parentCstNode, nestedName, nestedRuleCst);\n this.setNodeLocationFromNode(parentCstNode.location, nestedRuleCst.location);\n };\n TreeBuilder.prototype.getLastExplicitRuleShortName = function () {\n var lastExplictIndex = this.LAST_EXPLICIT_RULE_STACK[this.LAST_EXPLICIT_RULE_STACK.length - 1];\n return this.RULE_STACK[lastExplictIndex];\n };\n TreeBuilder.prototype.getLastExplicitRuleShortNameNoCst = function () {\n var ruleStack = this.RULE_STACK;\n return ruleStack[ruleStack.length - 1];\n };\n TreeBuilder.prototype.getPreviousExplicitRuleShortName = function () {\n var lastExplicitIndex = this.LAST_EXPLICIT_RULE_STACK[this.LAST_EXPLICIT_RULE_STACK.length - 2];\n return this.RULE_STACK[lastExplicitIndex];\n };\n TreeBuilder.prototype.getPreviousExplicitRuleShortNameNoCst = function () {\n var ruleStack = this.RULE_STACK;\n return ruleStack[ruleStack.length - 2];\n };\n TreeBuilder.prototype.getLastExplicitRuleOccurrenceIndex = function () {\n var lastExplicitIndex = this.LAST_EXPLICIT_RULE_STACK[this.LAST_EXPLICIT_RULE_STACK.length - 1];\n return this.RULE_OCCURRENCE_STACK[lastExplicitIndex];\n };\n TreeBuilder.prototype.getLastExplicitRuleOccurrenceIndexNoCst = function () {\n var occurrenceStack = this.RULE_OCCURRENCE_STACK;\n return occurrenceStack[occurrenceStack.length - 1];\n };\n TreeBuilder.prototype.nestedRuleInvocationStateUpdate = function (nestedRuleName, shortNameKey) {\n this.RULE_OCCURRENCE_STACK.push(1);\n this.RULE_STACK.push(shortNameKey);\n this.cstNestedInvocationStateUpdate(nestedRuleName, shortNameKey);\n };\n TreeBuilder.prototype.nestedRuleFinallyStateUpdate = function () {\n this.RULE_STACK.pop();\n this.RULE_OCCURRENCE_STACK.pop();\n // NOOP when cst is disabled\n this.cstNestedFinallyStateUpdate();\n };\n return TreeBuilder;\n}());\nexport { TreeBuilder };\n//# sourceMappingURL=tree_builder.js.map","import { END_OF_FILE } from \"../parser\";\n/**\n * Trait responsible abstracting over the interaction with Lexer output (Token vector).\n *\n * This could be generalized to support other kinds of lexers, e.g.\n * - Just in Time Lexing / Lexer-Less parsing.\n * - Streaming Lexer.\n */\nvar LexerAdapter = /** @class */ (function () {\n function LexerAdapter() {\n }\n LexerAdapter.prototype.initLexerAdapter = function () {\n this.tokVector = [];\n this.tokVectorLength = 0;\n this.currIdx = -1;\n };\n Object.defineProperty(LexerAdapter.prototype, \"input\", {\n get: function () {\n return this.tokVector;\n },\n set: function (newInput) {\n if (this.selfAnalysisDone !== true) {\n throw Error(\"Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.\");\n }\n this.reset();\n this.tokVector = newInput;\n this.tokVectorLength = newInput.length;\n },\n enumerable: true,\n configurable: true\n });\n // skips a token and returns the next token\n LexerAdapter.prototype.SKIP_TOKEN = function () {\n if (this.currIdx <= this.tokVector.length - 2) {\n this.consumeToken();\n return this.LA(1);\n }\n else {\n return END_OF_FILE;\n }\n };\n // Lexer (accessing Token vector) related methods which can be overridden to implement lazy lexers\n // or lexers dependent on parser context.\n LexerAdapter.prototype.LA = function (howMuch) {\n var soughtIdx = this.currIdx + howMuch;\n if (soughtIdx < 0 || this.tokVectorLength <= soughtIdx) {\n return END_OF_FILE;\n }\n else {\n return this.tokVector[soughtIdx];\n }\n };\n LexerAdapter.prototype.consumeToken = function () {\n this.currIdx++;\n };\n LexerAdapter.prototype.exportLexerState = function () {\n return this.currIdx;\n };\n LexerAdapter.prototype.importLexerState = function (newState) {\n this.currIdx = newState;\n };\n LexerAdapter.prototype.resetLexerState = function () {\n this.currIdx = -1;\n };\n LexerAdapter.prototype.moveToTerminatedState = function () {\n this.currIdx = this.tokVector.length - 1;\n };\n LexerAdapter.prototype.getLexerPosition = function () {\n return this.exportLexerState();\n };\n return LexerAdapter;\n}());\nexport { LexerAdapter };\n//# sourceMappingURL=lexer_adapter.js.map","import { contains, values } from \"../../../utils/utils\";\nimport { isRecognitionException } from \"../../exceptions_public\";\nimport { DEFAULT_RULE_CONFIG, ParserDefinitionErrorType } from \"../parser\";\nimport { defaultGrammarValidatorErrorProvider } from \"../../errors_public\";\nimport { validateRuleIsOverridden } from \"../../grammar/checks\";\nimport { serializeGrammar } from \"../../grammar/gast/gast_public\";\n/**\n * This trait is responsible for implementing the public API\n * for defining Chevrotain parsers, i.e:\n * - CONSUME\n * - RULE\n * - OPTION\n * - ...\n */\nvar RecognizerApi = /** @class */ (function () {\n function RecognizerApi() {\n }\n RecognizerApi.prototype.ACTION = function (impl) {\n return impl.call(this);\n };\n RecognizerApi.prototype.consume = function (idx, tokType, options) {\n return this.consumeInternal(tokType, idx, options);\n };\n RecognizerApi.prototype.subrule = function (idx, ruleToCall, options) {\n return this.subruleInternal(ruleToCall, idx, options);\n };\n RecognizerApi.prototype.option = function (idx, actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, idx);\n };\n RecognizerApi.prototype.or = function (idx, altsOrOpts) {\n return this.orInternal(altsOrOpts, idx);\n };\n RecognizerApi.prototype.many = function (idx, actionORMethodDef) {\n return this.manyInternal(idx, actionORMethodDef);\n };\n RecognizerApi.prototype.atLeastOne = function (idx, actionORMethodDef) {\n return this.atLeastOneInternal(idx, actionORMethodDef);\n };\n RecognizerApi.prototype.CONSUME = function (tokType, options) {\n return this.consumeInternal(tokType, 0, options);\n };\n RecognizerApi.prototype.CONSUME1 = function (tokType, options) {\n return this.consumeInternal(tokType, 1, options);\n };\n RecognizerApi.prototype.CONSUME2 = function (tokType, options) {\n return this.consumeInternal(tokType, 2, options);\n };\n RecognizerApi.prototype.CONSUME3 = function (tokType, options) {\n return this.consumeInternal(tokType, 3, options);\n };\n RecognizerApi.prototype.CONSUME4 = function (tokType, options) {\n return this.consumeInternal(tokType, 4, options);\n };\n RecognizerApi.prototype.CONSUME5 = function (tokType, options) {\n return this.consumeInternal(tokType, 5, options);\n };\n RecognizerApi.prototype.CONSUME6 = function (tokType, options) {\n return this.consumeInternal(tokType, 6, options);\n };\n RecognizerApi.prototype.CONSUME7 = function (tokType, options) {\n return this.consumeInternal(tokType, 7, options);\n };\n RecognizerApi.prototype.CONSUME8 = function (tokType, options) {\n return this.consumeInternal(tokType, 8, options);\n };\n RecognizerApi.prototype.CONSUME9 = function (tokType, options) {\n return this.consumeInternal(tokType, 9, options);\n };\n RecognizerApi.prototype.SUBRULE = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 0, options);\n };\n RecognizerApi.prototype.SUBRULE1 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 1, options);\n };\n RecognizerApi.prototype.SUBRULE2 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 2, options);\n };\n RecognizerApi.prototype.SUBRULE3 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 3, options);\n };\n RecognizerApi.prototype.SUBRULE4 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 4, options);\n };\n RecognizerApi.prototype.SUBRULE5 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 5, options);\n };\n RecognizerApi.prototype.SUBRULE6 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 6, options);\n };\n RecognizerApi.prototype.SUBRULE7 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 7, options);\n };\n RecognizerApi.prototype.SUBRULE8 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 8, options);\n };\n RecognizerApi.prototype.SUBRULE9 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 9, options);\n };\n RecognizerApi.prototype.OPTION = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 0);\n };\n RecognizerApi.prototype.OPTION1 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 1);\n };\n RecognizerApi.prototype.OPTION2 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 2);\n };\n RecognizerApi.prototype.OPTION3 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 3);\n };\n RecognizerApi.prototype.OPTION4 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 4);\n };\n RecognizerApi.prototype.OPTION5 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 5);\n };\n RecognizerApi.prototype.OPTION6 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 6);\n };\n RecognizerApi.prototype.OPTION7 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 7);\n };\n RecognizerApi.prototype.OPTION8 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 8);\n };\n RecognizerApi.prototype.OPTION9 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 9);\n };\n RecognizerApi.prototype.OR = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 0);\n };\n RecognizerApi.prototype.OR1 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 1);\n };\n RecognizerApi.prototype.OR2 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 2);\n };\n RecognizerApi.prototype.OR3 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 3);\n };\n RecognizerApi.prototype.OR4 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 4);\n };\n RecognizerApi.prototype.OR5 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 5);\n };\n RecognizerApi.prototype.OR6 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 6);\n };\n RecognizerApi.prototype.OR7 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 7);\n };\n RecognizerApi.prototype.OR8 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 8);\n };\n RecognizerApi.prototype.OR9 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 9);\n };\n RecognizerApi.prototype.MANY = function (actionORMethodDef) {\n this.manyInternal(0, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY1 = function (actionORMethodDef) {\n this.manyInternal(1, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY2 = function (actionORMethodDef) {\n this.manyInternal(2, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY3 = function (actionORMethodDef) {\n this.manyInternal(3, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY4 = function (actionORMethodDef) {\n this.manyInternal(4, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY5 = function (actionORMethodDef) {\n this.manyInternal(5, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY6 = function (actionORMethodDef) {\n this.manyInternal(6, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY7 = function (actionORMethodDef) {\n this.manyInternal(7, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY8 = function (actionORMethodDef) {\n this.manyInternal(8, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY9 = function (actionORMethodDef) {\n this.manyInternal(9, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY_SEP = function (options) {\n this.manySepFirstInternal(0, options);\n };\n RecognizerApi.prototype.MANY_SEP1 = function (options) {\n this.manySepFirstInternal(1, options);\n };\n RecognizerApi.prototype.MANY_SEP2 = function (options) {\n this.manySepFirstInternal(2, options);\n };\n RecognizerApi.prototype.MANY_SEP3 = function (options) {\n this.manySepFirstInternal(3, options);\n };\n RecognizerApi.prototype.MANY_SEP4 = function (options) {\n this.manySepFirstInternal(4, options);\n };\n RecognizerApi.prototype.MANY_SEP5 = function (options) {\n this.manySepFirstInternal(5, options);\n };\n RecognizerApi.prototype.MANY_SEP6 = function (options) {\n this.manySepFirstInternal(6, options);\n };\n RecognizerApi.prototype.MANY_SEP7 = function (options) {\n this.manySepFirstInternal(7, options);\n };\n RecognizerApi.prototype.MANY_SEP8 = function (options) {\n this.manySepFirstInternal(8, options);\n };\n RecognizerApi.prototype.MANY_SEP9 = function (options) {\n this.manySepFirstInternal(9, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE = function (actionORMethodDef) {\n this.atLeastOneInternal(0, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE1 = function (actionORMethodDef) {\n return this.atLeastOneInternal(1, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE2 = function (actionORMethodDef) {\n this.atLeastOneInternal(2, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE3 = function (actionORMethodDef) {\n this.atLeastOneInternal(3, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE4 = function (actionORMethodDef) {\n this.atLeastOneInternal(4, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE5 = function (actionORMethodDef) {\n this.atLeastOneInternal(5, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE6 = function (actionORMethodDef) {\n this.atLeastOneInternal(6, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE7 = function (actionORMethodDef) {\n this.atLeastOneInternal(7, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE8 = function (actionORMethodDef) {\n this.atLeastOneInternal(8, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE9 = function (actionORMethodDef) {\n this.atLeastOneInternal(9, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP = function (options) {\n this.atLeastOneSepFirstInternal(0, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP1 = function (options) {\n this.atLeastOneSepFirstInternal(1, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP2 = function (options) {\n this.atLeastOneSepFirstInternal(2, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP3 = function (options) {\n this.atLeastOneSepFirstInternal(3, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP4 = function (options) {\n this.atLeastOneSepFirstInternal(4, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP5 = function (options) {\n this.atLeastOneSepFirstInternal(5, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP6 = function (options) {\n this.atLeastOneSepFirstInternal(6, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP7 = function (options) {\n this.atLeastOneSepFirstInternal(7, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP8 = function (options) {\n this.atLeastOneSepFirstInternal(8, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP9 = function (options) {\n this.atLeastOneSepFirstInternal(9, options);\n };\n RecognizerApi.prototype.RULE = function (name, implementation, config) {\n if (config === void 0) { config = DEFAULT_RULE_CONFIG; }\n if (contains(this.definedRulesNames, name)) {\n var errMsg = defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({\n topLevelRule: name,\n grammarName: this.className\n });\n var error = {\n message: errMsg,\n type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME,\n ruleName: name\n };\n this.definitionErrors.push(error);\n }\n this.definedRulesNames.push(name);\n var ruleImplementation = this.defineRule(name, implementation, config);\n this[name] = ruleImplementation;\n return ruleImplementation;\n };\n RecognizerApi.prototype.OVERRIDE_RULE = function (name, impl, config) {\n if (config === void 0) { config = DEFAULT_RULE_CONFIG; }\n var ruleErrors = [];\n ruleErrors = ruleErrors.concat(validateRuleIsOverridden(name, this.definedRulesNames, this.className));\n this.definitionErrors.push.apply(this.definitionErrors, ruleErrors); // mutability for the win\n var ruleImplementation = this.defineRule(name, impl, config);\n this[name] = ruleImplementation;\n return ruleImplementation;\n };\n RecognizerApi.prototype.BACKTRACK = function (grammarRule, args) {\n return function () {\n // save org state\n this.isBackTrackingStack.push(1);\n var orgState = this.saveRecogState();\n try {\n grammarRule.apply(this, args);\n // if no exception was thrown we have succeed parsing the rule.\n return true;\n }\n catch (e) {\n if (isRecognitionException(e)) {\n return false;\n }\n else {\n throw e;\n }\n }\n finally {\n this.reloadRecogState(orgState);\n this.isBackTrackingStack.pop();\n }\n };\n };\n // GAST export APIs\n RecognizerApi.prototype.getGAstProductions = function () {\n return this.gastProductionsCache;\n };\n RecognizerApi.prototype.getSerializedGastProductions = function () {\n return serializeGrammar(values(this.gastProductionsCache));\n };\n return RecognizerApi;\n}());\nexport { RecognizerApi };\n//# sourceMappingURL=recognizer_api.js.map","import { cloneArr, cloneObj, every, flatten, has, isArray, isEmpty, isObject, reduce, uniq, values } from \"../../../utils/utils\";\nimport { AT_LEAST_ONE_IDX, AT_LEAST_ONE_SEP_IDX, BITS_FOR_METHOD_TYPE, BITS_FOR_OCCURRENCE_IDX, MANY_IDX, MANY_SEP_IDX, OPTION_IDX, OR_IDX } from \"../../grammar/keys\";\nimport { isRecognitionException, MismatchedTokenException, NotAllInputParsedException } from \"../../exceptions_public\";\nimport { PROD_TYPE } from \"../../grammar/lookahead\";\nimport { NextTerminalAfterAtLeastOneSepWalker, NextTerminalAfterAtLeastOneWalker, NextTerminalAfterManySepWalker, NextTerminalAfterManyWalker } from \"../../grammar/interpreter\";\nimport { DEFAULT_RULE_CONFIG } from \"../parser\";\nimport { IN_RULE_RECOVERY_EXCEPTION } from \"./recoverable\";\nimport { EOF } from \"../../../scan/tokens_public\";\nimport { augmentTokenTypes, isTokenType, tokenStructuredMatcher, tokenStructuredMatcherNoCategories } from \"../../../scan/tokens\";\nimport { classNameFromInstance } from \"../../../lang/lang_extensions\";\n/**\n * This trait is responsible for the runtime parsing engine\n * Used by the official API (recognizer_api.ts)\n */\nvar RecognizerEngine = /** @class */ (function () {\n function RecognizerEngine() {\n }\n RecognizerEngine.prototype.initRecognizerEngine = function (tokenVocabulary, config) {\n this.className = classNameFromInstance(this);\n // TODO: would using an ES6 Map or plain object be faster (CST building scenario)\n this.shortRuleNameToFull = {};\n this.fullRuleNameToShort = {};\n this.ruleShortNameIdx = 256;\n this.tokenMatcher = tokenStructuredMatcherNoCategories;\n this.definedRulesNames = [];\n this.tokensMap = {};\n this.allRuleNames = [];\n this.isBackTrackingStack = [];\n this.RULE_STACK = [];\n this.RULE_OCCURRENCE_STACK = [];\n this.gastProductionsCache = {};\n if (has(config, \"serializedGrammar\")) {\n throw Error(\"The Parser's configuration can no longer contain a <serializedGrammar> property.\\n\" +\n \"\\tSee: https://sap.github.io/chevrotain/docs/changes/BREAKING_CHANGES.html#_6-0-0\\n\" +\n \"\\tFor Further details.\");\n }\n if (isArray(tokenVocabulary)) {\n // This only checks for Token vocabularies provided as arrays.\n // That is good enough because the main objective is to detect users of pre-V4.0 APIs\n // rather than all edge cases of empty Token vocabularies.\n if (isEmpty(tokenVocabulary)) {\n throw Error(\"A Token Vocabulary cannot be empty.\\n\" +\n \"\\tNote that the first argument for the parser constructor\\n\" +\n \"\\tis no longer a Token vector (since v4.0).\");\n }\n if (typeof tokenVocabulary[0].startOffset === \"number\") {\n throw Error(\"The Parser constructor no longer accepts a token vector as the first argument.\\n\" +\n \"\\tSee: https://sap.github.io/chevrotain/docs/changes/BREAKING_CHANGES.html#_4-0-0\\n\" +\n \"\\tFor Further details.\");\n }\n }\n if (isArray(tokenVocabulary)) {\n this.tokensMap = reduce(tokenVocabulary, function (acc, tokType) {\n acc[tokType.name] = tokType;\n return acc;\n }, {});\n }\n else if (has(tokenVocabulary, \"modes\") &&\n every(flatten(values(tokenVocabulary.modes)), isTokenType)) {\n var allTokenTypes = flatten(values(tokenVocabulary.modes));\n var uniqueTokens = uniq(allTokenTypes);\n this.tokensMap = reduce(uniqueTokens, function (acc, tokType) {\n acc[tokType.name] = tokType;\n return acc;\n }, {});\n }\n else if (isObject(tokenVocabulary)) {\n this.tokensMap = cloneObj(tokenVocabulary);\n }\n else {\n throw new Error(\"<tokensDictionary> argument must be An Array of Token constructors,\" +\n \" A dictionary of Token constructors or an IMultiModeLexerDefinition\");\n }\n // always add EOF to the tokenNames -> constructors map. it is useful to assure all the input has been\n // parsed with a clear error message (\"expecting EOF but found ...\")\n /* tslint:disable */\n this.tokensMap[\"EOF\"] = EOF;\n // TODO: This check may not be accurate for multi mode lexers\n var noTokenCategoriesUsed = every(values(tokenVocabulary), function (tokenConstructor) { return isEmpty(tokenConstructor.categoryMatches); });\n this.tokenMatcher = noTokenCategoriesUsed\n ? tokenStructuredMatcherNoCategories\n : tokenStructuredMatcher;\n // Because ES2015+ syntax should be supported for creating Token classes\n // We cannot assume that the Token classes were created using the \"extendToken\" utilities\n // Therefore we must augment the Token classes both on Lexer initialization and on Parser initialization\n augmentTokenTypes(values(this.tokensMap));\n };\n RecognizerEngine.prototype.defineRule = function (ruleName, impl, config) {\n if (this.selfAnalysisDone) {\n throw Error(\"Grammar rule <\" + ruleName + \"> may not be defined after the 'performSelfAnalysis' method has been called'\\n\" +\n \"Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.\");\n }\n var resyncEnabled = has(config, \"resyncEnabled\")\n ? config.resyncEnabled\n : DEFAULT_RULE_CONFIG.resyncEnabled;\n var recoveryValueFunc = has(config, \"recoveryValueFunc\")\n ? config.recoveryValueFunc\n : DEFAULT_RULE_CONFIG.recoveryValueFunc;\n // performance optimization: Use small integers as keys for the longer human readable \"full\" rule names.\n // this greatly improves Map access time (as much as 8% for some performance benchmarks).\n /* tslint:disable */\n var shortName = this.ruleShortNameIdx <<\n (BITS_FOR_METHOD_TYPE + BITS_FOR_OCCURRENCE_IDX);\n /* tslint:enable */\n this.ruleShortNameIdx++;\n this.shortRuleNameToFull[shortName] = ruleName;\n this.fullRuleNameToShort[ruleName] = shortName;\n function invokeRuleWithTry(args) {\n try {\n if (this.outputCst === true) {\n impl.apply(this, args);\n var cst = this.CST_STACK[this.CST_STACK.length - 1];\n this.cstPostRule(cst);\n return cst;\n }\n else {\n return impl.apply(this, args);\n }\n }\n catch (e) {\n return this.invokeRuleCatch(e, resyncEnabled, recoveryValueFunc);\n }\n finally {\n this.ruleFinallyStateUpdate();\n }\n }\n var wrappedGrammarRule;\n wrappedGrammarRule = function (idxInCallingRule, args) {\n if (idxInCallingRule === void 0) { idxInCallingRule = 0; }\n this.ruleInvocationStateUpdate(shortName, ruleName, idxInCallingRule);\n return invokeRuleWithTry.call(this, args);\n };\n var ruleNamePropName = \"ruleName\";\n wrappedGrammarRule[ruleNamePropName] = ruleName;\n wrappedGrammarRule[\"originalGrammarAction\"] = impl;\n return wrappedGrammarRule;\n };\n RecognizerEngine.prototype.invokeRuleCatch = function (e, resyncEnabledConfig, recoveryValueFunc) {\n var isFirstInvokedRule = this.RULE_STACK.length === 1;\n // note the reSync is always enabled for the first rule invocation, because we must always be able to\n // reSync with EOF and just output some INVALID ParseTree\n // during backtracking reSync recovery is disabled, otherwise we can't be certain the backtracking\n // path is really the most valid one\n var reSyncEnabled = resyncEnabledConfig &&\n !this.isBackTracking() &&\n this.recoveryEnabled;\n if (isRecognitionException(e)) {\n var recogError = e;\n if (reSyncEnabled) {\n var reSyncTokType = this.findReSyncTokenType();\n if (this.isInCurrentRuleReSyncSet(reSyncTokType)) {\n recogError.resyncedTokens = this.reSyncTo(reSyncTokType);\n if (this.outputCst) {\n var partialCstResult = this.CST_STACK[this.CST_STACK.length - 1];\n partialCstResult.recoveredNode = true;\n return partialCstResult;\n }\n else {\n return recoveryValueFunc();\n }\n }\n else {\n if (this.outputCst) {\n var partialCstResult = this.CST_STACK[this.CST_STACK.length - 1];\n partialCstResult.recoveredNode = true;\n recogError.partialCstResult = partialCstResult;\n }\n // to be handled Further up the call stack\n throw recogError;\n }\n }\n else if (isFirstInvokedRule) {\n // otherwise a Redundant input error will be created as well and we cannot guarantee that this is indeed the case\n this.moveToTerminatedState();\n // the parser should never throw one of its own errors outside its flow.\n // even if error recovery is disabled\n return recoveryValueFunc();\n }\n else {\n // to be recovered Further up the call stack\n throw recogError;\n }\n }\n else {\n // some other Error type which we don't know how to handle (for example a built in JavaScript Error)\n throw e;\n }\n };\n // Implementation of parsing DSL\n RecognizerEngine.prototype.optionInternal = function (actionORMethodDef, occurrence) {\n var key = this.getKeyForAutomaticLookahead(OPTION_IDX, occurrence);\n var nestedName = this.nestedRuleBeforeClause(actionORMethodDef, key);\n try {\n return this.optionInternalLogic(actionORMethodDef, occurrence, key);\n }\n finally {\n if (nestedName !== undefined) {\n this.nestedRuleFinallyClause(key, nestedName);\n }\n }\n };\n RecognizerEngine.prototype.optionInternalNoCst = function (actionORMethodDef, occurrence) {\n var key = this.getKeyForAutomaticLookahead(OPTION_IDX, occurrence);\n return this.optionInternalLogic(actionORMethodDef, occurrence, key);\n };\n RecognizerEngine.prototype.optionInternalLogic = function (actionORMethodDef, occurrence, key) {\n var _this = this;\n var lookAheadFunc = this.getLaFuncFromCache(key);\n var action;\n var predicate;\n if (actionORMethodDef.DEF !== undefined) {\n action = actionORMethodDef.DEF;\n predicate = actionORMethodDef.GATE;\n // predicate present\n if (predicate !== undefined) {\n var orgLookaheadFunction_1 = lookAheadFunc;\n lookAheadFunc = function () {\n return (predicate.call(_this) && orgLookaheadFunction_1.call(_this));\n };\n }\n }\n else {\n action = actionORMethodDef;\n }\n if (lookAheadFunc.call(this) === true) {\n return action.call(this);\n }\n return undefined;\n };\n RecognizerEngine.prototype.atLeastOneInternal = function (prodOccurrence, actionORMethodDef) {\n var laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_IDX, prodOccurrence);\n var nestedName = this.nestedRuleBeforeClause(actionORMethodDef, laKey);\n try {\n return this.atLeastOneInternalLogic(prodOccurrence, actionORMethodDef, laKey);\n }\n finally {\n if (nestedName !== undefined) {\n this.nestedRuleFinallyClause(laKey, nestedName);\n }\n }\n };\n RecognizerEngine.prototype.atLeastOneInternalNoCst = function (prodOccurrence, actionORMethodDef) {\n var key = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_IDX, prodOccurrence);\n this.atLeastOneInternalLogic(prodOccurrence, actionORMethodDef, key);\n };\n RecognizerEngine.prototype.atLeastOneInternalLogic = function (prodOccurrence, actionORMethodDef, key) {\n var _this = this;\n var lookAheadFunc = this.getLaFuncFromCache(key);\n var action;\n var predicate;\n if (actionORMethodDef.DEF !== undefined) {\n action = actionORMethodDef.DEF;\n predicate = actionORMethodDef.GATE;\n // predicate present\n if (predicate !== undefined) {\n var orgLookaheadFunction_2 = lookAheadFunc;\n lookAheadFunc = function () {\n return (predicate.call(_this) && orgLookaheadFunction_2.call(_this));\n };\n }\n }\n else {\n action = actionORMethodDef;\n }\n if (lookAheadFunc.call(this) === true) {\n var notStuck = this.doSingleRepetition(action);\n while (lookAheadFunc.call(this) === true &&\n notStuck === true) {\n notStuck = this.doSingleRepetition(action);\n }\n }\n else {\n throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY, actionORMethodDef.ERR_MSG);\n }\n // note that while it may seem that this can cause an error because by using a recursive call to\n // AT_LEAST_ONE we change the grammar to AT_LEAST_TWO, AT_LEAST_THREE ... , the possible recursive call\n // from the tryInRepetitionRecovery(...) will only happen IFF there really are TWO/THREE/.... items.\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.atLeastOneInternal, [prodOccurrence, actionORMethodDef], lookAheadFunc, AT_LEAST_ONE_IDX, prodOccurrence, NextTerminalAfterAtLeastOneWalker);\n };\n RecognizerEngine.prototype.atLeastOneSepFirstInternal = function (prodOccurrence, options) {\n var laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_SEP_IDX, prodOccurrence);\n var nestedName = this.nestedRuleBeforeClause(options, laKey);\n try {\n this.atLeastOneSepFirstInternalLogic(prodOccurrence, options, laKey);\n }\n finally {\n if (nestedName !== undefined) {\n this.nestedRuleFinallyClause(laKey, nestedName);\n }\n }\n };\n RecognizerEngine.prototype.atLeastOneSepFirstInternalNoCst = function (prodOccurrence, options) {\n var laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_SEP_IDX, prodOccurrence);\n this.atLeastOneSepFirstInternalLogic(prodOccurrence, options, laKey);\n };\n RecognizerEngine.prototype.atLeastOneSepFirstInternalLogic = function (prodOccurrence, options, key) {\n var _this = this;\n var action = options.DEF;\n var separator = options.SEP;\n var firstIterationLookaheadFunc = this.getLaFuncFromCache(key);\n // 1st iteration\n if (firstIterationLookaheadFunc.call(this) === true) {\n ;\n action.call(this);\n // TODO: Optimization can move this function construction into \"attemptInRepetitionRecovery\"\n // because it is only needed in error recovery scenarios.\n var separatorLookAheadFunc = function () {\n return _this.tokenMatcher(_this.LA(1), separator);\n };\n // 2nd..nth iterations\n while (this.tokenMatcher(this.LA(1), separator) === true) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n action.call(this);\n }\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n NextTerminalAfterAtLeastOneSepWalker\n ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, NextTerminalAfterAtLeastOneSepWalker);\n }\n else {\n throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, options.ERR_MSG);\n }\n };\n RecognizerEngine.prototype.manyInternal = function (prodOccurrence, actionORMethodDef) {\n var laKey = this.getKeyForAutomaticLookahead(MANY_IDX, prodOccurrence);\n var nestedName = this.nestedRuleBeforeClause(actionORMethodDef, laKey);\n try {\n return this.manyInternalLogic(prodOccurrence, actionORMethodDef, laKey);\n }\n finally {\n if (nestedName !== undefined) {\n this.nestedRuleFinallyClause(laKey, nestedName);\n }\n }\n };\n RecognizerEngine.prototype.manyInternalNoCst = function (prodOccurrence, actionORMethodDef) {\n var laKey = this.getKeyForAutomaticLookahead(MANY_IDX, prodOccurrence);\n return this.manyInternalLogic(prodOccurrence, actionORMethodDef, laKey);\n };\n RecognizerEngine.prototype.manyInternalLogic = function (prodOccurrence, actionORMethodDef, key) {\n var _this = this;\n var lookaheadFunction = this.getLaFuncFromCache(key);\n var action;\n var predicate;\n if (actionORMethodDef.DEF !== undefined) {\n action = actionORMethodDef.DEF;\n predicate = actionORMethodDef.GATE;\n // predicate present\n if (predicate !== undefined) {\n var orgLookaheadFunction_3 = lookaheadFunction;\n lookaheadFunction = function () {\n return (predicate.call(_this) && orgLookaheadFunction_3.call(_this));\n };\n }\n }\n else {\n action = actionORMethodDef;\n }\n var notStuck = true;\n while (lookaheadFunction.call(this) === true && notStuck === true) {\n notStuck = this.doSingleRepetition(action);\n }\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.manyInternal, [prodOccurrence, actionORMethodDef], lookaheadFunction, MANY_IDX, prodOccurrence, NextTerminalAfterManyWalker, \n // The notStuck parameter is only relevant when \"attemptInRepetitionRecovery\"\n // is invoked from manyInternal, in the MANY_SEP case and AT_LEAST_ONE[_SEP]\n // An infinite loop cannot occur as:\n // - Either the lookahead is guaranteed to consume something (Single Token Separator)\n // - AT_LEAST_ONE by definition is guaranteed to consume something (or error out).\n notStuck);\n };\n RecognizerEngine.prototype.manySepFirstInternal = function (prodOccurrence, options) {\n var laKey = this.getKeyForAutomaticLookahead(MANY_SEP_IDX, prodOccurrence);\n var nestedName = this.nestedRuleBeforeClause(options, laKey);\n try {\n this.manySepFirstInternalLogic(prodOccurrence, options, laKey);\n }\n finally {\n if (nestedName !== undefined) {\n this.nestedRuleFinallyClause(laKey, nestedName);\n }\n }\n };\n RecognizerEngine.prototype.manySepFirstInternalNoCst = function (prodOccurrence, options) {\n var laKey = this.getKeyForAutomaticLookahead(MANY_SEP_IDX, prodOccurrence);\n this.manySepFirstInternalLogic(prodOccurrence, options, laKey);\n };\n RecognizerEngine.prototype.manySepFirstInternalLogic = function (prodOccurrence, options, key) {\n var _this = this;\n var action = options.DEF;\n var separator = options.SEP;\n var firstIterationLaFunc = this.getLaFuncFromCache(key);\n // 1st iteration\n if (firstIterationLaFunc.call(this) === true) {\n action.call(this);\n var separatorLookAheadFunc = function () {\n return _this.tokenMatcher(_this.LA(1), separator);\n };\n // 2nd..nth iterations\n while (this.tokenMatcher(this.LA(1), separator) === true) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n // No need for checking infinite loop here due to consuming the separator.\n action.call(this);\n }\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n NextTerminalAfterManySepWalker\n ], separatorLookAheadFunc, MANY_SEP_IDX, prodOccurrence, NextTerminalAfterManySepWalker);\n }\n };\n RecognizerEngine.prototype.repetitionSepSecondInternal = function (prodOccurrence, separator, separatorLookAheadFunc, action, nextTerminalAfterWalker) {\n while (separatorLookAheadFunc()) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n action.call(this);\n }\n // we can only arrive to this function after an error\n // has occurred (hence the name 'second') so the following\n // IF will always be entered, its possible to remove it...\n // however it is kept to avoid confusion and be consistent.\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n /* istanbul ignore else */\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n nextTerminalAfterWalker\n ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, nextTerminalAfterWalker);\n };\n RecognizerEngine.prototype.doSingleRepetition = function (action) {\n var beforeIteration = this.getLexerPosition();\n action.call(this);\n var afterIteration = this.getLexerPosition();\n // This boolean will indicate if this repetition progressed\n // or if we are \"stuck\" (potential infinite loop in the repetition).\n return afterIteration > beforeIteration;\n };\n RecognizerEngine.prototype.orInternalNoCst = function (altsOrOpts, occurrence) {\n var alts = isArray(altsOrOpts)\n ? altsOrOpts\n : altsOrOpts.DEF;\n var laKey = this.getKeyForAutomaticLookahead(OR_IDX, occurrence);\n var laFunc = this.getLaFuncFromCache(laKey);\n var altIdxToTake = laFunc.call(this, alts);\n if (altIdxToTake !== undefined) {\n var chosenAlternative = alts[altIdxToTake];\n return chosenAlternative.ALT.call(this);\n }\n this.raiseNoAltException(occurrence, altsOrOpts.ERR_MSG);\n };\n RecognizerEngine.prototype.orInternal = function (altsOrOpts, occurrence) {\n var laKey = this.getKeyForAutomaticLookahead(OR_IDX, occurrence);\n var nestedName = this.nestedRuleBeforeClause(altsOrOpts, laKey);\n try {\n var alts = isArray(altsOrOpts)\n ? altsOrOpts\n : altsOrOpts.DEF;\n var laFunc = this.getLaFuncFromCache(laKey);\n var altIdxToTake = laFunc.call(this, alts);\n if (altIdxToTake !== undefined) {\n var chosenAlternative = alts[altIdxToTake];\n var nestedAltBeforeClauseResult = this.nestedAltBeforeClause(chosenAlternative, occurrence, OR_IDX, altIdxToTake);\n try {\n return chosenAlternative.ALT.call(this);\n }\n finally {\n if (nestedAltBeforeClauseResult !== undefined) {\n this.nestedRuleFinallyClause(nestedAltBeforeClauseResult.shortName, nestedAltBeforeClauseResult.nestedName);\n }\n }\n }\n this.raiseNoAltException(occurrence, altsOrOpts.ERR_MSG);\n }\n finally {\n if (nestedName !== undefined) {\n this.nestedRuleFinallyClause(laKey, nestedName);\n }\n }\n };\n RecognizerEngine.prototype.ruleFinallyStateUpdate = function () {\n this.RULE_STACK.pop();\n this.RULE_OCCURRENCE_STACK.pop();\n // NOOP when cst is disabled\n this.cstFinallyStateUpdate();\n if (this.RULE_STACK.length === 0 && this.isAtEndOfInput() === false) {\n var firstRedundantTok = this.LA(1);\n var errMsg = this.errorMessageProvider.buildNotAllInputParsedMessage({\n firstRedundant: firstRedundantTok,\n ruleName: this.getCurrRuleFullName()\n });\n this.SAVE_ERROR(new NotAllInputParsedException(errMsg, firstRedundantTok));\n }\n };\n RecognizerEngine.prototype.subruleInternal = function (ruleToCall, idx, options) {\n var ruleResult;\n try {\n var args = options !== undefined ? options.ARGS : undefined;\n ruleResult = ruleToCall.call(this, idx, args);\n this.cstPostNonTerminal(ruleResult, options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : ruleToCall.ruleName);\n return ruleResult;\n }\n catch (e) {\n this.subruleInternalError(e, options, ruleToCall.ruleName);\n }\n };\n RecognizerEngine.prototype.subruleInternalError = function (e, options, ruleName) {\n if (isRecognitionException(e) && e.partialCstResult !== undefined) {\n this.cstPostNonTerminal(e.partialCstResult, options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : ruleName);\n delete e.partialCstResult;\n }\n throw e;\n };\n RecognizerEngine.prototype.consumeInternal = function (tokType, idx, options) {\n var consumedToken;\n try {\n var nextToken = this.LA(1);\n if (this.tokenMatcher(nextToken, tokType) === true) {\n this.consumeToken();\n consumedToken = nextToken;\n }\n else {\n this.consumeInternalError(tokType, nextToken, options);\n }\n }\n catch (eFromConsumption) {\n consumedToken = this.consumeInternalRecovery(tokType, idx, eFromConsumption);\n }\n this.cstPostTerminal(options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : tokType.name, consumedToken);\n return consumedToken;\n };\n RecognizerEngine.prototype.consumeInternalError = function (tokType, nextToken, options) {\n var msg;\n var previousToken = this.LA(0);\n if (options !== undefined && options.ERR_MSG) {\n msg = options.ERR_MSG;\n }\n else {\n msg = this.errorMessageProvider.buildMismatchTokenMessage({\n expected: tokType,\n actual: nextToken,\n previous: previousToken,\n ruleName: this.getCurrRuleFullName()\n });\n }\n throw this.SAVE_ERROR(new MismatchedTokenException(msg, nextToken, previousToken));\n };\n RecognizerEngine.prototype.consumeInternalRecovery = function (tokType, idx, eFromConsumption) {\n // no recovery allowed during backtracking, otherwise backtracking may recover invalid syntax and accept it\n // but the original syntax could have been parsed successfully without any backtracking + recovery\n if (this.recoveryEnabled &&\n // TODO: more robust checking of the exception type. Perhaps Typescript extending expressions?\n eFromConsumption.name === \"MismatchedTokenException\" &&\n !this.isBackTracking()) {\n var follows = this.getFollowsForInRuleRecovery(tokType, idx);\n try {\n return this.tryInRuleRecovery(tokType, follows);\n }\n catch (eFromInRuleRecovery) {\n if (eFromInRuleRecovery.name === IN_RULE_RECOVERY_EXCEPTION) {\n // failed in RuleRecovery.\n // throw the original error in order to trigger reSync error recovery\n throw eFromConsumption;\n }\n else {\n throw eFromInRuleRecovery;\n }\n }\n }\n else {\n throw eFromConsumption;\n }\n };\n RecognizerEngine.prototype.saveRecogState = function () {\n // errors is a getter which will clone the errors array\n var savedErrors = this.errors;\n var savedRuleStack = cloneArr(this.RULE_STACK);\n return {\n errors: savedErrors,\n lexerState: this.exportLexerState(),\n RULE_STACK: savedRuleStack,\n CST_STACK: this.CST_STACK,\n LAST_EXPLICIT_RULE_STACK: this.LAST_EXPLICIT_RULE_STACK\n };\n };\n RecognizerEngine.prototype.reloadRecogState = function (newState) {\n this.errors = newState.errors;\n this.importLexerState(newState.lexerState);\n this.RULE_STACK = newState.RULE_STACK;\n };\n RecognizerEngine.prototype.ruleInvocationStateUpdate = function (shortName, fullName, idxInCallingRule) {\n this.RULE_OCCURRENCE_STACK.push(idxInCallingRule);\n this.RULE_STACK.push(shortName);\n // NOOP when cst is disabled\n this.cstInvocationStateUpdate(fullName, shortName);\n };\n RecognizerEngine.prototype.isBackTracking = function () {\n return this.isBackTrackingStack.length !== 0;\n };\n RecognizerEngine.prototype.getCurrRuleFullName = function () {\n var shortName = this.getLastExplicitRuleShortName();\n return this.shortRuleNameToFull[shortName];\n };\n RecognizerEngine.prototype.shortRuleNameToFullName = function (shortName) {\n return this.shortRuleNameToFull[shortName];\n };\n RecognizerEngine.prototype.isAtEndOfInput = function () {\n return this.tokenMatcher(this.LA(1), EOF);\n };\n RecognizerEngine.prototype.reset = function () {\n this.resetLexerState();\n this.isBackTrackingStack = [];\n this.errors = [];\n this.RULE_STACK = [];\n this.LAST_EXPLICIT_RULE_STACK = [];\n // TODO: extract a specific rest for TreeBuilder trait\n this.CST_STACK = [];\n this.RULE_OCCURRENCE_STACK = [];\n };\n return RecognizerEngine;\n}());\nexport { RecognizerEngine };\n//# sourceMappingURL=recognizer_engine.js.map","import { EarlyExitException, isRecognitionException, NoViableAltException } from \"../../exceptions_public\";\nimport { cloneArr, defaults } from \"../../../utils/utils\";\nimport { getLookaheadPathsForOptionalProd, getLookaheadPathsForOr } from \"../../grammar/lookahead\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser\";\n/**\n * Trait responsible for runtime parsing errors.\n */\nvar ErrorHandler = /** @class */ (function () {\n function ErrorHandler() {\n }\n ErrorHandler.prototype.initErrorHandler = function (config) {\n this._errors = [];\n this.errorMessageProvider = defaults(config.errorMessageProvider, DEFAULT_PARSER_CONFIG.errorMessageProvider);\n };\n ErrorHandler.prototype.SAVE_ERROR = function (error) {\n if (isRecognitionException(error)) {\n error.context = {\n ruleStack: this.getHumanReadableRuleStack(),\n ruleOccurrenceStack: cloneArr(this.RULE_OCCURRENCE_STACK)\n };\n this._errors.push(error);\n return error;\n }\n else {\n throw Error(\"Trying to save an Error which is not a RecognitionException\");\n }\n };\n Object.defineProperty(ErrorHandler.prototype, \"errors\", {\n // TODO: extract these methods to ErrorHandler Trait?\n get: function () {\n return cloneArr(this._errors);\n },\n set: function (newErrors) {\n this._errors = newErrors;\n },\n enumerable: true,\n configurable: true\n });\n // TODO: consider caching the error message computed information\n ErrorHandler.prototype.raiseEarlyExitException = function (occurrence, prodType, userDefinedErrMsg) {\n var ruleName = this.getCurrRuleFullName();\n var ruleGrammar = this.getGAstProductions()[ruleName];\n var lookAheadPathsPerAlternative = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, this.maxLookahead);\n var insideProdPaths = lookAheadPathsPerAlternative[0];\n var actualTokens = [];\n for (var i = 1; i <= this.maxLookahead; i++) {\n actualTokens.push(this.LA(i));\n }\n var msg = this.errorMessageProvider.buildEarlyExitMessage({\n expectedIterationPaths: insideProdPaths,\n actual: actualTokens,\n previous: this.LA(0),\n customUserDescription: userDefinedErrMsg,\n ruleName: ruleName\n });\n throw this.SAVE_ERROR(new EarlyExitException(msg, this.LA(1), this.LA(0)));\n };\n // TODO: consider caching the error message computed information\n ErrorHandler.prototype.raiseNoAltException = function (occurrence, errMsgTypes) {\n var ruleName = this.getCurrRuleFullName();\n var ruleGrammar = this.getGAstProductions()[ruleName];\n // TODO: getLookaheadPathsForOr can be slow for large enough maxLookahead and certain grammars, consider caching ?\n var lookAheadPathsPerAlternative = getLookaheadPathsForOr(occurrence, ruleGrammar, this.maxLookahead);\n var actualTokens = [];\n for (var i = 1; i <= this.maxLookahead; i++) {\n actualTokens.push(this.LA(i));\n }\n var previousToken = this.LA(0);\n var errMsg = this.errorMessageProvider.buildNoViableAltMessage({\n expectedPathsPerAlt: lookAheadPathsPerAlternative,\n actual: actualTokens,\n previous: previousToken,\n customUserDescription: errMsgTypes,\n ruleName: this.getCurrRuleFullName()\n });\n throw this.SAVE_ERROR(new NoViableAltException(errMsg, this.LA(1), previousToken));\n };\n return ErrorHandler;\n}());\nexport { ErrorHandler };\n//# sourceMappingURL=error_handler.js.map","import { NextAfterTokenWalker, nextPossibleTokensAfter } from \"../../grammar/interpreter\";\nimport { first, isUndefined } from \"../../../utils/utils\";\nvar ContentAssist = /** @class */ (function () {\n function ContentAssist() {\n }\n ContentAssist.prototype.initContentAssist = function () { };\n ContentAssist.prototype.computeContentAssist = function (startRuleName, precedingInput) {\n var startRuleGast = this.gastProductionsCache[startRuleName];\n if (isUndefined(startRuleGast)) {\n throw Error(\"Rule ->\" + startRuleName + \"<- does not exist in this grammar.\");\n }\n return nextPossibleTokensAfter([startRuleGast], precedingInput, this.tokenMatcher, this.maxLookahead);\n };\n // TODO: should this be a member method or a utility? it does not have any state or usage of 'this'...\n // TODO: should this be more explicitly part of the public API?\n ContentAssist.prototype.getNextPossibleTokenTypes = function (grammarPath) {\n var topRuleName = first(grammarPath.ruleStack);\n var gastProductions = this.getGAstProductions();\n var topProduction = gastProductions[topRuleName];\n var nextPossibleTokenTypes = new NextAfterTokenWalker(topProduction, grammarPath).startWalking();\n return nextPossibleTokenTypes;\n };\n return ContentAssist;\n}());\nexport { ContentAssist };\n//# sourceMappingURL=context_assist.js.map","import { forEach, has, isArray, isFunction, peek, some } from \"../../../utils/utils\";\nimport { Alternation, Flat, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"../../grammar/gast/gast_public\";\nimport { Lexer } from \"../../../scan/lexer_public\";\nimport { augmentTokenTypes, hasShortKeyProperty } from \"../../../scan/tokens\";\nimport { createToken, createTokenInstance } from \"../../../scan/tokens_public\";\nimport { END_OF_FILE } from \"../parser\";\nimport { BITS_FOR_OCCURRENCE_IDX } from \"../../grammar/keys\";\nvar RECORDING_NULL_OBJECT = {\n description: \"This Object indicates the Parser is during Recording Phase\"\n};\nObject.freeze(RECORDING_NULL_OBJECT);\nvar HANDLE_SEPARATOR = true;\nvar MAX_METHOD_IDX = Math.pow(2, BITS_FOR_OCCURRENCE_IDX) - 1;\nvar RFT = createToken({ name: \"RECORDING_PHASE_TOKEN\", pattern: Lexer.NA });\naugmentTokenTypes([RFT]);\nvar RECORDING_PHASE_TOKEN = createTokenInstance(RFT, \"This IToken indicates the Parser is in Recording Phase\\n\\t\" +\n \"\" +\n \"See: https://sap.github.io/chevrotain/docs/guide/internals.html#grammar-recording for details\", \n// Using \"-1\" instead of NaN (as in EOF) because an actual number is less likely to\n// cause errors if the output of LA or CONSUME would be (incorrectly) used during the recording phase.\n-1, -1, -1, -1, -1, -1);\nObject.freeze(RECORDING_PHASE_TOKEN);\nvar RECORDING_PHASE_CSTNODE = {\n name: \"This CSTNode indicates the Parser is in Recording Phase\\n\\t\" +\n \"See: https://sap.github.io/chevrotain/docs/guide/internals.html#grammar-recording for details\",\n children: {}\n};\n/**\n * This trait handles the creation of the GAST structure for Chevrotain Grammars\n */\nvar GastRecorder = /** @class */ (function () {\n function GastRecorder() {\n }\n GastRecorder.prototype.initGastRecorder = function (config) {\n this.recordingProdStack = [];\n this.RECORDING_PHASE = false;\n };\n GastRecorder.prototype.enableRecording = function () {\n var _this = this;\n this.RECORDING_PHASE = true;\n this.TRACE_INIT(\"Enable Recording\", function () {\n var _loop_1 = function (i) {\n var idx = i > 0 ? i : \"\";\n _this[\"CONSUME\" + idx] = function (arg1, arg2) {\n return this.consumeInternalRecord(arg1, i, arg2);\n };\n _this[\"SUBRULE\" + idx] = function (arg1, arg2) {\n return this.subruleInternalRecord(arg1, i, arg2);\n };\n _this[\"OPTION\" + idx] = function (arg1) {\n return this.optionInternalRecord(arg1, i);\n };\n _this[\"OR\" + idx] = function (arg1) {\n return this.orInternalRecord(arg1, i);\n };\n _this[\"MANY\" + idx] = function (arg1) {\n this.manyInternalRecord(i, arg1);\n };\n _this[\"MANY_SEP\" + idx] = function (arg1) {\n this.manySepFirstInternalRecord(i, arg1);\n };\n _this[\"AT_LEAST_ONE\" + idx] = function (arg1) {\n this.atLeastOneInternalRecord(i, arg1);\n };\n _this[\"AT_LEAST_ONE_SEP\" + idx] = function (arg1) {\n this.atLeastOneSepFirstInternalRecord(i, arg1);\n };\n };\n /**\n * Warning Dark Voodoo Magic upcoming!\n * We are \"replacing\" the public parsing DSL methods API\n * With **new** alternative implementations on the Parser **instance**\n *\n * So far this is the only way I've found to avoid performance regressions during parsing time.\n * - Approx 30% performance regression was measured on Chrome 75 Canary when attempting to replace the \"internal\"\n * implementations directly instead.\n */\n for (var i = 0; i < 10; i++) {\n _loop_1(i);\n }\n // DSL methods with the idx(suffix) as an argument\n _this[\"consume\"] = function (idx, arg1, arg2) {\n return this.consumeInternalRecord(arg1, idx, arg2);\n };\n _this[\"subrule\"] = function (idx, arg1, arg2) {\n return this.subruleInternalRecord(arg1, idx, arg2);\n };\n _this[\"option\"] = function (idx, arg1) {\n return this.optionInternalRecord(arg1, idx);\n };\n _this[\"or\"] = function (idx, arg1) {\n return this.orInternalRecord(arg1, idx);\n };\n _this[\"many\"] = function (idx, arg1) {\n this.manyInternalRecord(idx, arg1);\n };\n _this[\"atLeastOne\"] = function (idx, arg1) {\n this.atLeastOneInternalRecord(idx, arg1);\n };\n _this.ACTION = _this.ACTION_RECORD;\n _this.BACKTRACK = _this.BACKTRACK_RECORD;\n _this.LA = _this.LA_RECORD;\n });\n };\n GastRecorder.prototype.disableRecording = function () {\n var _this = this;\n this.RECORDING_PHASE = false;\n // By deleting these **instance** properties, any future invocation\n // will be deferred to the original methods on the **prototype** object\n // This seems to get rid of any incorrect optimizations that V8 may\n // do during the recording phase.\n this.TRACE_INIT(\"Deleting Recording methods\", function () {\n for (var i = 0; i < 10; i++) {\n var idx = i > 0 ? i : \"\";\n delete _this[\"CONSUME\" + idx];\n delete _this[\"SUBRULE\" + idx];\n delete _this[\"OPTION\" + idx];\n delete _this[\"OR\" + idx];\n delete _this[\"MANY\" + idx];\n delete _this[\"MANY_SEP\" + idx];\n delete _this[\"AT_LEAST_ONE\" + idx];\n delete _this[\"AT_LEAST_ONE_SEP\" + idx];\n }\n delete _this[\"consume\"];\n delete _this[\"subrule\"];\n delete _this[\"option\"];\n delete _this[\"or\"];\n delete _this[\"many\"];\n delete _this[\"atLeastOne\"];\n delete _this.ACTION;\n delete _this.BACKTRACK;\n delete _this.LA;\n });\n };\n // TODO: is there any way to use this method to check no\n // Parser methods are called inside an ACTION?\n // Maybe try/catch/finally on ACTIONS while disabling the recorders state changes?\n GastRecorder.prototype.ACTION_RECORD = function (impl) {\n // NO-OP during recording\n return;\n };\n // Executing backtracking logic will break our recording logic assumptions\n GastRecorder.prototype.BACKTRACK_RECORD = function (grammarRule, args) {\n return function () { return true; };\n };\n // LA is part of the official API and may be used for custom lookahead logic\n // by end users who may forget to wrap it in ACTION or inside a GATE\n GastRecorder.prototype.LA_RECORD = function (howMuch) {\n // We cannot use the RECORD_PHASE_TOKEN here because someone may depend\n // On LA return EOF at the end of the input so an infinite loop may occur.\n return END_OF_FILE;\n };\n GastRecorder.prototype.topLevelRuleRecord = function (name, def) {\n try {\n var newTopLevelRule = new Rule({ definition: [], name: name });\n newTopLevelRule.name = name;\n this.recordingProdStack.push(newTopLevelRule);\n def.call(this);\n this.recordingProdStack.pop();\n return newTopLevelRule;\n }\n catch (originalError) {\n if (originalError.KNOWN_RECORDER_ERROR !== true) {\n try {\n originalError.message =\n originalError.message +\n '\\n\\t This error was thrown during the \"grammar recording phase\" For more info see:\\n\\t' +\n \"https://sap.github.io/chevrotain/docs/guide/internals.html#grammar-recording\";\n }\n catch (mutabilityError) {\n // We may not be able to modify the original error object\n throw originalError;\n }\n }\n throw originalError;\n }\n };\n // Implementation of parsing DSL\n GastRecorder.prototype.optionInternalRecord = function (actionORMethodDef, occurrence) {\n return recordProd.call(this, Option, actionORMethodDef, occurrence);\n };\n GastRecorder.prototype.atLeastOneInternalRecord = function (occurrence, actionORMethodDef) {\n recordProd.call(this, RepetitionMandatory, actionORMethodDef, occurrence);\n };\n GastRecorder.prototype.atLeastOneSepFirstInternalRecord = function (occurrence, options) {\n recordProd.call(this, RepetitionMandatoryWithSeparator, options, occurrence, HANDLE_SEPARATOR);\n };\n GastRecorder.prototype.manyInternalRecord = function (occurrence, actionORMethodDef) {\n recordProd.call(this, Repetition, actionORMethodDef, occurrence);\n };\n GastRecorder.prototype.manySepFirstInternalRecord = function (occurrence, options) {\n recordProd.call(this, RepetitionWithSeparator, options, occurrence, HANDLE_SEPARATOR);\n };\n GastRecorder.prototype.orInternalRecord = function (altsOrOpts, occurrence) {\n return recordOrProd.call(this, altsOrOpts, occurrence);\n };\n GastRecorder.prototype.subruleInternalRecord = function (ruleToCall, occurrence, options) {\n assertMethodIdxIsValid(occurrence);\n if (!ruleToCall || has(ruleToCall, \"ruleName\") === false) {\n var error = new Error(\"<SUBRULE\" + getIdxSuffix(occurrence) + \"> argument is invalid\" +\n (\" expecting a Parser method reference but got: <\" + JSON.stringify(ruleToCall) + \">\") +\n (\"\\n inside top level rule: <\" + this.recordingProdStack[0].name + \">\"));\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n var prevProd = peek(this.recordingProdStack);\n var ruleName = ruleToCall[\"ruleName\"];\n var newNoneTerminal = new NonTerminal({\n idx: occurrence,\n nonTerminalName: ruleName,\n // The resolving of the `referencedRule` property will be done once all the Rule's GASTs have been created\n referencedRule: undefined\n });\n prevProd.definition.push(newNoneTerminal);\n return this.outputCst\n ? RECORDING_PHASE_CSTNODE\n : RECORDING_NULL_OBJECT;\n };\n GastRecorder.prototype.consumeInternalRecord = function (tokType, occurrence, options) {\n assertMethodIdxIsValid(occurrence);\n if (!hasShortKeyProperty(tokType)) {\n var error = new Error(\"<CONSUME\" + getIdxSuffix(occurrence) + \"> argument is invalid\" +\n (\" expecting a TokenType reference but got: <\" + JSON.stringify(tokType) + \">\") +\n (\"\\n inside top level rule: <\" + this.recordingProdStack[0].name + \">\"));\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n var prevProd = peek(this.recordingProdStack);\n var newNoneTerminal = new Terminal({\n idx: occurrence,\n terminalType: tokType\n });\n prevProd.definition.push(newNoneTerminal);\n return RECORDING_PHASE_TOKEN;\n };\n return GastRecorder;\n}());\nexport { GastRecorder };\nfunction recordProd(prodConstructor, mainProdArg, occurrence, handleSep) {\n if (handleSep === void 0) { handleSep = false; }\n assertMethodIdxIsValid(occurrence);\n var prevProd = peek(this.recordingProdStack);\n var grammarAction = isFunction(mainProdArg)\n ? mainProdArg\n : mainProdArg.DEF;\n var newProd = new prodConstructor({ definition: [], idx: occurrence });\n if (has(mainProdArg, \"NAME\")) {\n newProd.name = mainProdArg.NAME;\n }\n if (handleSep) {\n newProd.separator = mainProdArg.SEP;\n }\n if (has(mainProdArg, \"MAX_LOOKAHEAD\")) {\n newProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD;\n }\n this.recordingProdStack.push(newProd);\n grammarAction.call(this);\n prevProd.definition.push(newProd);\n this.recordingProdStack.pop();\n return RECORDING_NULL_OBJECT;\n}\nfunction recordOrProd(mainProdArg, occurrence) {\n var _this = this;\n assertMethodIdxIsValid(occurrence);\n var prevProd = peek(this.recordingProdStack);\n // Only an array of alternatives\n var hasOptions = isArray(mainProdArg) === false;\n var alts = hasOptions === false ? mainProdArg : mainProdArg.DEF;\n var newOrProd = new Alternation({\n definition: [],\n idx: occurrence,\n ignoreAmbiguities: hasOptions && mainProdArg.IGNORE_AMBIGUITIES === true\n });\n if (has(mainProdArg, \"NAME\")) {\n newOrProd.name = mainProdArg.NAME;\n }\n if (has(mainProdArg, \"MAX_LOOKAHEAD\")) {\n newOrProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD;\n }\n var hasPredicates = some(alts, function (currAlt) { return isFunction(currAlt.GATE); });\n newOrProd.hasPredicates = hasPredicates;\n prevProd.definition.push(newOrProd);\n forEach(alts, function (currAlt) {\n var currAltFlat = new Flat({ definition: [] });\n newOrProd.definition.push(currAltFlat);\n if (has(currAlt, \"NAME\")) {\n currAltFlat.name = currAlt.NAME;\n }\n if (has(currAlt, \"IGNORE_AMBIGUITIES\")) {\n currAltFlat.ignoreAmbiguities = currAlt.IGNORE_AMBIGUITIES;\n }\n // **implicit** ignoreAmbiguities due to usage of gate\n else if (has(currAlt, \"GATE\")) {\n currAltFlat.ignoreAmbiguities = true;\n }\n _this.recordingProdStack.push(currAltFlat);\n currAlt.ALT.call(_this);\n _this.recordingProdStack.pop();\n });\n return RECORDING_NULL_OBJECT;\n}\nfunction getIdxSuffix(idx) {\n return idx === 0 ? \"\" : \"\" + idx;\n}\nfunction assertMethodIdxIsValid(idx) {\n if (idx < 0 || idx > MAX_METHOD_IDX) {\n var error = new Error(\n // The stack trace will contain all the needed details\n \"Invalid DSL Method idx value: <\" + idx + \">\\n\\t\" +\n (\"Idx value must be a none negative value smaller than \" + (MAX_METHOD_IDX +\n 1)));\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n}\n//# sourceMappingURL=gast_recorder.js.map","import { has, timer } from \"../../../utils/utils\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser\";\n/**\n * Trait responsible for runtime parsing errors.\n */\nvar PerformanceTracer = /** @class */ (function () {\n function PerformanceTracer() {\n }\n PerformanceTracer.prototype.initPerformanceTracer = function (config) {\n if (has(config, \"traceInitPerf\")) {\n var userTraceInitPerf = config.traceInitPerf;\n var traceIsNumber = typeof userTraceInitPerf === \"number\";\n this.traceInitMaxIdent = traceIsNumber\n ? userTraceInitPerf\n : Infinity;\n this.traceInitPerf = traceIsNumber\n ? userTraceInitPerf > 0\n : userTraceInitPerf;\n }\n else {\n this.traceInitMaxIdent = 0;\n this.traceInitPerf = DEFAULT_PARSER_CONFIG.traceInitPerf;\n }\n this.traceInitIndent = -1;\n };\n PerformanceTracer.prototype.TRACE_INIT = function (phaseDesc, phaseImpl) {\n // No need to optimize this using NOOP pattern because\n // It is not called in a hot spot...\n if (this.traceInitPerf === true) {\n this.traceInitIndent++;\n var indent = new Array(this.traceInitIndent + 1).join(\"\\t\");\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n console.log(indent + \"--> <\" + phaseDesc + \">\");\n }\n var _a = timer(phaseImpl), time = _a.time, value = _a.value;\n /* istanbul ignore next - Difficult to reproduce specific performance behavior (>10ms) in tests */\n var traceMethod = time > 10 ? console.warn : console.log;\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n traceMethod(indent + \"<-- <\" + phaseDesc + \"> time: \" + time + \"ms\");\n }\n this.traceInitIndent--;\n return value;\n }\n else {\n return phaseImpl();\n }\n };\n return PerformanceTracer;\n}());\nexport { PerformanceTracer };\n//# sourceMappingURL=perf_tracer.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { applyMixins, cloneObj, forEach, has, isEmpty, map, PRINT_WARNING, toFastProperties, values } from \"../../utils/utils\";\nimport { computeAllProdsFollows } from \"../grammar/follow\";\nimport { createTokenInstance, EOF } from \"../../scan/tokens_public\";\nimport { expandAllNestedRuleNames } from \"../cst/cst\";\nimport { defaultGrammarValidatorErrorProvider, defaultParserErrorProvider } from \"../errors_public\";\nimport { resolveGrammar, validateGrammar } from \"../grammar/gast/gast_resolver_public\";\nimport { Recoverable } from \"./traits/recoverable\";\nimport { LooksAhead } from \"./traits/looksahead\";\nimport { TreeBuilder } from \"./traits/tree_builder\";\nimport { LexerAdapter } from \"./traits/lexer_adapter\";\nimport { RecognizerApi } from \"./traits/recognizer_api\";\nimport { RecognizerEngine } from \"./traits/recognizer_engine\";\nimport { ErrorHandler } from \"./traits/error_handler\";\nimport { ContentAssist } from \"./traits/context_assist\";\nimport { GastRecorder } from \"./traits/gast_recorder\";\nimport { PerformanceTracer } from \"./traits/perf_tracer\";\nexport var END_OF_FILE = createTokenInstance(EOF, \"\", NaN, NaN, NaN, NaN, NaN, NaN);\nObject.freeze(END_OF_FILE);\nexport var DEFAULT_PARSER_CONFIG = Object.freeze({\n recoveryEnabled: false,\n maxLookahead: 4,\n ignoredIssues: {},\n dynamicTokensEnabled: false,\n outputCst: true,\n errorMessageProvider: defaultParserErrorProvider,\n nodeLocationTracking: \"none\",\n traceInitPerf: false,\n skipValidations: false\n});\nexport var DEFAULT_RULE_CONFIG = Object.freeze({\n recoveryValueFunc: function () { return undefined; },\n resyncEnabled: true\n});\nexport var ParserDefinitionErrorType;\n(function (ParserDefinitionErrorType) {\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"INVALID_RULE_NAME\"] = 0] = \"INVALID_RULE_NAME\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"DUPLICATE_RULE_NAME\"] = 1] = \"DUPLICATE_RULE_NAME\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"INVALID_RULE_OVERRIDE\"] = 2] = \"INVALID_RULE_OVERRIDE\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"DUPLICATE_PRODUCTIONS\"] = 3] = \"DUPLICATE_PRODUCTIONS\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"UNRESOLVED_SUBRULE_REF\"] = 4] = \"UNRESOLVED_SUBRULE_REF\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"LEFT_RECURSION\"] = 5] = \"LEFT_RECURSION\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"NONE_LAST_EMPTY_ALT\"] = 6] = \"NONE_LAST_EMPTY_ALT\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"AMBIGUOUS_ALTS\"] = 7] = \"AMBIGUOUS_ALTS\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"CONFLICT_TOKENS_RULES_NAMESPACE\"] = 8] = \"CONFLICT_TOKENS_RULES_NAMESPACE\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"INVALID_TOKEN_NAME\"] = 9] = \"INVALID_TOKEN_NAME\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"INVALID_NESTED_RULE_NAME\"] = 10] = \"INVALID_NESTED_RULE_NAME\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"DUPLICATE_NESTED_NAME\"] = 11] = \"DUPLICATE_NESTED_NAME\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"NO_NON_EMPTY_LOOKAHEAD\"] = 12] = \"NO_NON_EMPTY_LOOKAHEAD\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"AMBIGUOUS_PREFIX_ALTS\"] = 13] = \"AMBIGUOUS_PREFIX_ALTS\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"TOO_MANY_ALTS\"] = 14] = \"TOO_MANY_ALTS\";\n})(ParserDefinitionErrorType || (ParserDefinitionErrorType = {}));\nexport function EMPTY_ALT(value) {\n if (value === void 0) { value = undefined; }\n return function () {\n return value;\n };\n}\nvar Parser = /** @class */ (function () {\n function Parser(tokenVocabulary, config) {\n if (config === void 0) { config = DEFAULT_PARSER_CONFIG; }\n this.ignoredIssues = DEFAULT_PARSER_CONFIG.ignoredIssues;\n this.definitionErrors = [];\n this.selfAnalysisDone = false;\n var that = this;\n that.initErrorHandler(config);\n that.initLexerAdapter();\n that.initLooksAhead(config);\n that.initRecognizerEngine(tokenVocabulary, config);\n that.initRecoverable(config);\n that.initTreeBuilder(config);\n that.initContentAssist();\n that.initGastRecorder(config);\n that.initPerformanceTracer(config);\n /* istanbul ignore if - complete over-kill to test this, we should only add a test when we actually hard deprecate it and throw an error... */\n if (has(config, \"ignoredIssues\") &&\n config.ignoredIssues !== DEFAULT_PARSER_CONFIG.ignoredIssues) {\n PRINT_WARNING(\"The <ignoredIssues> IParserConfig property is soft-deprecated and will be removed in future versions.\\n\\t\" +\n \"Please use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.\");\n }\n this.ignoredIssues = has(config, \"ignoredIssues\")\n ? config.ignoredIssues\n : DEFAULT_PARSER_CONFIG.ignoredIssues;\n this.skipValidations = has(config, \"skipValidations\")\n ? config.skipValidations\n : DEFAULT_PARSER_CONFIG.skipValidations;\n }\n /**\n * @deprecated use the **instance** method with the same name instead\n */\n Parser.performSelfAnalysis = function (parserInstance) {\n ;\n parserInstance.performSelfAnalysis();\n };\n Parser.prototype.performSelfAnalysis = function () {\n var _this = this;\n this.TRACE_INIT(\"performSelfAnalysis\", function () {\n var defErrorsMsgs;\n _this.selfAnalysisDone = true;\n var className = _this.className;\n _this.TRACE_INIT(\"toFastProps\", function () {\n // Without this voodoo magic the parser would be x3-x4 slower\n // It seems it is better to invoke `toFastProperties` **before**\n // Any manipulations of the `this` object done during the recording phase.\n toFastProperties(_this);\n });\n _this.TRACE_INIT(\"Grammar Recording\", function () {\n try {\n _this.enableRecording();\n // Building the GAST\n forEach(_this.definedRulesNames, function (currRuleName) {\n var wrappedRule = _this[currRuleName];\n var originalGrammarAction = wrappedRule[\"originalGrammarAction\"];\n var recordedRuleGast = undefined;\n _this.TRACE_INIT(currRuleName + \" Rule\", function () {\n recordedRuleGast = _this.topLevelRuleRecord(currRuleName, originalGrammarAction);\n });\n _this.gastProductionsCache[currRuleName] = recordedRuleGast;\n });\n }\n finally {\n _this.disableRecording();\n }\n });\n var resolverErrors = [];\n _this.TRACE_INIT(\"Grammar Resolving\", function () {\n resolverErrors = resolveGrammar({\n rules: values(_this.gastProductionsCache)\n });\n _this.definitionErrors.push.apply(_this.definitionErrors, resolverErrors); // mutability for the win?\n });\n _this.TRACE_INIT(\"Grammar Validations\", function () {\n // only perform additional grammar validations IFF no resolving errors have occurred.\n // as unresolved grammar may lead to unhandled runtime exceptions in the follow up validations.\n if (isEmpty(resolverErrors) && _this.skipValidations === false) {\n var validationErrors = validateGrammar({\n rules: values(_this.gastProductionsCache),\n maxLookahead: _this.maxLookahead,\n tokenTypes: values(_this.tokensMap),\n ignoredIssues: _this.ignoredIssues,\n errMsgProvider: defaultGrammarValidatorErrorProvider,\n grammarName: className\n });\n _this.definitionErrors.push.apply(_this.definitionErrors, validationErrors); // mutability for the win?\n }\n });\n // this analysis may fail if the grammar is not perfectly valid\n if (isEmpty(_this.definitionErrors)) {\n // The results of these computations are not needed unless error recovery is enabled.\n if (_this.recoveryEnabled) {\n _this.TRACE_INIT(\"computeAllProdsFollows\", function () {\n var allFollows = computeAllProdsFollows(values(_this.gastProductionsCache));\n _this.resyncFollows = allFollows;\n });\n }\n _this.TRACE_INIT(\"ComputeLookaheadFunctions\", function () {\n _this.preComputeLookaheadFunctions(values(_this.gastProductionsCache));\n });\n }\n _this.TRACE_INIT(\"expandAllNestedRuleNames\", function () {\n // TODO: is this needed for EmbeddedActionsParser?\n var cstAnalysisResult = expandAllNestedRuleNames(values(_this.gastProductionsCache), _this.fullRuleNameToShort);\n _this.allRuleNames = cstAnalysisResult.allRuleNames;\n });\n if (!Parser.DEFER_DEFINITION_ERRORS_HANDLING &&\n !isEmpty(_this.definitionErrors)) {\n defErrorsMsgs = map(_this.definitionErrors, function (defError) { return defError.message; });\n throw new Error(\"Parser Definition Errors detected:\\n \" + defErrorsMsgs.join(\"\\n-------------------------------\\n\"));\n }\n });\n };\n // Set this flag to true if you don't want the Parser to throw error when problems in it's definition are detected.\n // (normally during the parser's constructor).\n // This is a design time flag, it will not affect the runtime error handling of the parser, just design time errors,\n // for example: duplicate rule names, referencing an unresolved subrule, ect...\n // This flag should not be enabled during normal usage, it is used in special situations, for example when\n // needing to display the parser definition errors in some GUI(online playground).\n Parser.DEFER_DEFINITION_ERRORS_HANDLING = false;\n return Parser;\n}());\nexport { Parser };\napplyMixins(Parser, [\n Recoverable,\n LooksAhead,\n TreeBuilder,\n LexerAdapter,\n RecognizerEngine,\n RecognizerApi,\n ErrorHandler,\n ContentAssist,\n GastRecorder,\n PerformanceTracer\n]);\nvar CstParser = /** @class */ (function (_super) {\n __extends(CstParser, _super);\n function CstParser(tokenVocabulary, config) {\n if (config === void 0) { config = DEFAULT_PARSER_CONFIG; }\n var _this = this;\n var configClone = cloneObj(config);\n configClone.outputCst = true;\n _this = _super.call(this, tokenVocabulary, configClone) || this;\n return _this;\n }\n return CstParser;\n}(Parser));\nexport { CstParser };\nvar EmbeddedActionsParser = /** @class */ (function (_super) {\n __extends(EmbeddedActionsParser, _super);\n function EmbeddedActionsParser(tokenVocabulary, config) {\n if (config === void 0) { config = DEFAULT_PARSER_CONFIG; }\n var _this = this;\n var configClone = cloneObj(config);\n configClone.outputCst = false;\n _this = _super.call(this, tokenVocabulary, configClone) || this;\n return _this;\n }\n return EmbeddedActionsParser;\n}(Parser));\nexport { EmbeddedActionsParser };\n//# sourceMappingURL=parser.js.map","import { VERSION } from \"../version\";\nexport function createSyntaxDiagramsCode(grammar, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.resourceBase, resourceBase = _c === void 0 ? \"https://unpkg.com/chevrotain@\" + VERSION + \"/diagrams/\" : _c, _d = _b.css, css = _d === void 0 ? \"https://unpkg.com/chevrotain@\" + VERSION + \"/diagrams/diagrams.css\" : _d;\n var header = \"\\n<!-- This is a generated file -->\\n<!DOCTYPE html>\\n<meta charset=\\\"utf-8\\\">\\n<style>\\n body {\\n background-color: hsl(30, 20%, 95%)\\n }\\n</style>\\n\\n\";\n var cssHtml = \"\\n<link rel='stylesheet' href='\" + css + \"'>\\n\";\n var scripts = \"\\n<script src='\" + resourceBase + \"vendor/railroad-diagrams.js'></script>\\n<script src='\" + resourceBase + \"src/diagrams_builder.js'></script>\\n<script src='\" + resourceBase + \"src/diagrams_behavior.js'></script>\\n<script src='\" + resourceBase + \"src/main.js'></script>\\n\";\n var diagramsDiv = \"\\n<div id=\\\"diagrams\\\" align=\\\"center\\\"></div> \\n\";\n var serializedGrammar = \"\\n<script>\\n window.serializedGrammar = \" + JSON.stringify(grammar, null, \" \") + \";\\n</script>\\n\";\n var initLogic = \"\\n<script>\\n var diagramsDiv = document.getElementById(\\\"diagrams\\\");\\n main.drawDiagramsFromSerializedGrammar(serializedGrammar, diagramsDiv);\\n</script>\\n\";\n return (header + cssHtml + scripts + diagramsDiv + serializedGrammar + initLogic);\n}\n//# sourceMappingURL=render_public.js.map","import { forEach, map } from \"../utils/utils\";\nimport { RepetitionMandatory, Option, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Terminal, NonTerminal, Alternation, Flat, Repetition } from \"../parse/grammar/gast/gast_public\";\n/**\n * Missing features\n * 1. Rule arguments\n * 2. Gates\n * 3. embedded actions\n */\nvar NL = \"\\n\";\nexport function genUmdModule(options) {\n return \"\\n(function (root, factory) {\\n if (typeof define === 'function' && define.amd) {\\n // AMD. Register as an anonymous module.\\n define(['chevrotain'], factory);\\n } else if (typeof module === 'object' && module.exports) {\\n // Node. Does not work with strict CommonJS, but\\n // only CommonJS-like environments that support module.exports,\\n // like Node.\\n module.exports = factory(require('chevrotain'));\\n } else {\\n // Browser globals (root is window)\\n root.returnExports = factory(root.b);\\n }\\n}(typeof self !== 'undefined' ? self : this, function (chevrotain) {\\n\\n\" + genClass(options) + \"\\n \\nreturn {\\n \" + options.name + \": \" + options.name + \" \\n}\\n}));\\n\";\n}\nexport function genWrapperFunction(options) {\n return \" \\n\" + genClass(options) + \"\\nreturn new \" + options.name + \"(tokenVocabulary, config) \\n\";\n}\nexport function genClass(options) {\n // TODO: how to pass the token vocabulary? Constructor? other?\n var result = \"\\nfunction \" + options.name + \"(tokenVocabulary, config) {\\n // invoke super constructor\\n // No support for embedded actions currently, so we can 'hardcode'\\n // The use of CstParser.\\n chevrotain.CstParser.call(this, tokenVocabulary, config)\\n\\n const $ = this\\n\\n \" + genAllRules(options.rules) + \"\\n\\n // very important to call this after all the rules have been defined.\\n // otherwise the parser may not work correctly as it will lack information\\n // derived during the self analysis phase.\\n this.performSelfAnalysis(this)\\n}\\n\\n// inheritance as implemented in javascript in the previous decade... :(\\n\" + options.name + \".prototype = Object.create(chevrotain.CstParser.prototype)\\n\" + options.name + \".prototype.constructor = \" + options.name + \" \\n \";\n return result;\n}\nexport function genAllRules(rules) {\n var rulesText = map(rules, function (currRule) {\n return genRule(currRule, 1);\n });\n return rulesText.join(\"\\n\");\n}\nexport function genRule(prod, n) {\n var result = indent(n, \"$.RULE(\\\"\" + prod.name + \"\\\", function() {\") + NL;\n result += genDefinition(prod.definition, n + 1);\n result += indent(n + 1, \"})\") + NL;\n return result;\n}\nexport function genTerminal(prod, n) {\n var name = prod.terminalType.name;\n // TODO: potential performance optimization, avoid tokenMap Dictionary access\n return indent(n, \"$.CONSUME\" + prod.idx + \"(this.tokensMap.\" + name + \")\" + NL);\n}\nexport function genNonTerminal(prod, n) {\n return indent(n, \"$.SUBRULE\" + prod.idx + \"($.\" + prod.nonTerminalName + \")\" + NL);\n}\nexport function genAlternation(prod, n) {\n var result = indent(n, \"$.OR\" + prod.idx + \"([\") + NL;\n var alts = map(prod.definition, function (altDef) { return genSingleAlt(altDef, n + 1); });\n result += alts.join(\",\" + NL);\n result += NL + indent(n, \"])\" + NL);\n return result;\n}\nexport function genSingleAlt(prod, n) {\n var result = indent(n, \"{\") + NL;\n if (prod.name) {\n result += indent(n + 1, \"NAME: \\\"\" + prod.name + \"\\\",\") + NL;\n }\n result += indent(n + 1, \"ALT: function() {\") + NL;\n result += genDefinition(prod.definition, n + 1);\n result += indent(n + 1, \"}\") + NL;\n result += indent(n, \"}\");\n return result;\n}\nfunction genProd(prod, n) {\n /* istanbul ignore else */\n if (prod instanceof NonTerminal) {\n return genNonTerminal(prod, n);\n }\n else if (prod instanceof Option) {\n return genDSLRule(\"OPTION\", prod, n);\n }\n else if (prod instanceof RepetitionMandatory) {\n return genDSLRule(\"AT_LEAST_ONE\", prod, n);\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return genDSLRule(\"AT_LEAST_ONE_SEP\", prod, n);\n }\n else if (prod instanceof RepetitionWithSeparator) {\n return genDSLRule(\"MANY_SEP\", prod, n);\n }\n else if (prod instanceof Repetition) {\n return genDSLRule(\"MANY\", prod, n);\n }\n else if (prod instanceof Alternation) {\n return genAlternation(prod, n);\n }\n else if (prod instanceof Terminal) {\n return genTerminal(prod, n);\n }\n else if (prod instanceof Flat) {\n return genDefinition(prod.definition, n);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nfunction genDSLRule(dslName, prod, n) {\n var result = indent(n, \"$.\" + (dslName + prod.idx) + \"(\");\n if (prod.name || prod.separator) {\n result += \"{\" + NL;\n if (prod.name) {\n result += indent(n + 1, \"NAME: \\\"\" + prod.name + \"\\\"\") + \",\" + NL;\n }\n if (prod.separator) {\n result +=\n indent(n + 1, \"SEP: this.tokensMap.\" + prod.separator.name) +\n \",\" +\n NL;\n }\n result += \"DEF: \" + genDefFunction(prod.definition, n + 2) + NL;\n result += indent(n, \"}\") + NL;\n }\n else {\n result += genDefFunction(prod.definition, n + 1);\n }\n result += indent(n, \")\") + NL;\n return result;\n}\nfunction genDefFunction(definition, n) {\n var def = \"function() {\" + NL;\n def += genDefinition(definition, n);\n def += indent(n, \"}\") + NL;\n return def;\n}\nfunction genDefinition(def, n) {\n var result = \"\";\n forEach(def, function (prod) {\n result += genProd(prod, n + 1);\n });\n return result;\n}\nfunction indent(howMuch, text) {\n var spaces = Array(howMuch * 4 + 1).join(\" \");\n return spaces + text;\n}\n//# sourceMappingURL=generate.js.map","import { genUmdModule, genWrapperFunction } from \"./generate\";\nexport function generateParserFactory(options) {\n var wrapperText = genWrapperFunction({\n name: options.name,\n rules: options.rules\n });\n var constructorWrapper = new Function(\"tokenVocabulary\", \"config\", \"chevrotain\", wrapperText);\n return function (config) {\n return constructorWrapper(options.tokenVocabulary, config, \n // TODO: check how the require is transpiled/webpacked\n require(\"../api\"));\n };\n}\nexport function generateParserModule(options) {\n return genUmdModule({ name: options.name, rules: options.rules });\n}\n//# sourceMappingURL=generate_public.js.map","// semantic version\nexport { VERSION } from \"./version\";\nexport { Parser, CstParser, EmbeddedActionsParser, ParserDefinitionErrorType, EMPTY_ALT } from \"./parse/parser/parser\";\nexport { Lexer, LexerDefinitionErrorType } from \"./scan/lexer_public\";\n// Tokens utilities\nexport { createToken, createTokenInstance, EOF, tokenLabel, tokenMatcher, tokenName } from \"./scan/tokens_public\";\n// Other Utilities\nexport { defaultGrammarResolverErrorProvider, defaultGrammarValidatorErrorProvider, defaultParserErrorProvider } from \"./parse/errors_public\";\nexport { EarlyExitException, isRecognitionException, MismatchedTokenException, NotAllInputParsedException, NoViableAltException } from \"./parse/exceptions_public\";\nexport { defaultLexerErrorProvider } from \"./scan/lexer_errors_public\";\n// grammar reflection API\nexport { Alternation, Flat, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"./parse/grammar/gast/gast_public\";\n// GAST Utilities\nexport { serializeGrammar, serializeProduction } from \"./parse/grammar/gast/gast_public\";\nexport { GAstVisitor } from \"./parse/grammar/gast/gast_visitor_public\";\nexport { assignOccurrenceIndices, resolveGrammar, validateGrammar } from \"./parse/grammar/gast/gast_resolver_public\";\n/* istanbul ignore next */\nexport function clearCache() {\n console.warn(\"The clearCache function was 'soft' removed from the Chevrotain API.\" +\n \"\\n\\t It performs no action other than printing this message.\" +\n \"\\n\\t Please avoid using it as it will be completely removed in the future\");\n}\nexport { createSyntaxDiagramsCode } from \"./diagrams/render_public\";\nexport { generateParserFactory, generateParserModule } from \"./generate/generate_public\";\n//# sourceMappingURL=api.js.map","/*\n Utils using lodash style API. (not necessarily 100% compliant) for functional and other utils.\n These utils should replace usage of lodash in the production code base. not because they are any better...\n but for the purpose of being a dependency free library.\n\n The hotspots in the code are already written in imperative style for performance reasons.\n so writing several dozen utils which may be slower than the original lodash, does not matter as much\n considering they will not be invoked in hotspots...\n */\nexport function isEmpty(arr) {\n return arr && arr.length === 0;\n}\nexport function keys(obj) {\n if (obj === undefined || obj === null) {\n return [];\n }\n return Object.keys(obj);\n}\nexport function values(obj) {\n var vals = [];\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n vals.push(obj[keys[i]]);\n }\n return vals;\n}\nexport function mapValues(obj, callback) {\n var result = [];\n var objKeys = keys(obj);\n for (var idx = 0; idx < objKeys.length; idx++) {\n var currKey = objKeys[idx];\n result.push(callback.call(null, obj[currKey], currKey));\n }\n return result;\n}\nexport function map(arr, callback) {\n var result = [];\n for (var idx = 0; idx < arr.length; idx++) {\n result.push(callback.call(null, arr[idx], idx));\n }\n return result;\n}\nexport function flatten(arr) {\n var result = [];\n for (var idx = 0; idx < arr.length; idx++) {\n var currItem = arr[idx];\n if (Array.isArray(currItem)) {\n result = result.concat(flatten(currItem));\n }\n else {\n result.push(currItem);\n }\n }\n return result;\n}\nexport function first(arr) {\n return isEmpty(arr) ? undefined : arr[0];\n}\nexport function last(arr) {\n var len = arr && arr.length;\n return len ? arr[len - 1] : undefined;\n}\nexport function forEach(collection, iteratorCallback) {\n /* istanbul ignore else */\n if (Array.isArray(collection)) {\n for (var i = 0; i < collection.length; i++) {\n iteratorCallback.call(null, collection[i], i);\n }\n }\n else if (isObject(collection)) {\n var colKeys = keys(collection);\n for (var i = 0; i < colKeys.length; i++) {\n var key = colKeys[i];\n var value = collection[key];\n iteratorCallback.call(null, value, key);\n }\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexport function isString(item) {\n return typeof item === \"string\";\n}\nexport function isUndefined(item) {\n return item === undefined;\n}\nexport function isFunction(item) {\n return item instanceof Function;\n}\nexport function drop(arr, howMuch) {\n if (howMuch === void 0) { howMuch = 1; }\n return arr.slice(howMuch, arr.length);\n}\nexport function dropRight(arr, howMuch) {\n if (howMuch === void 0) { howMuch = 1; }\n return arr.slice(0, arr.length - howMuch);\n}\nexport function filter(arr, predicate) {\n var result = [];\n if (Array.isArray(arr)) {\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n if (predicate.call(null, item)) {\n result.push(item);\n }\n }\n }\n return result;\n}\nexport function reject(arr, predicate) {\n return filter(arr, function (item) { return !predicate(item); });\n}\nexport function pick(obj, predicate) {\n var keys = Object.keys(obj);\n var result = {};\n for (var i = 0; i < keys.length; i++) {\n var currKey = keys[i];\n var currItem = obj[currKey];\n if (predicate(currItem)) {\n result[currKey] = currItem;\n }\n }\n return result;\n}\nexport function has(obj, prop) {\n if (isObject(obj)) {\n return obj.hasOwnProperty(prop);\n }\n return false;\n}\nexport function contains(arr, item) {\n return find(arr, function (currItem) { return currItem === item; }) !== undefined ? true : false;\n}\n/**\n * shallow clone\n */\nexport function cloneArr(arr) {\n var newArr = [];\n for (var i = 0; i < arr.length; i++) {\n newArr.push(arr[i]);\n }\n return newArr;\n}\n/**\n * shallow clone\n */\nexport function cloneObj(obj) {\n var clonedObj = {};\n for (var key in obj) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clonedObj[key] = obj[key];\n }\n }\n return clonedObj;\n}\nexport function find(arr, predicate) {\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n if (predicate.call(null, item)) {\n return item;\n }\n }\n return undefined;\n}\nexport function findAll(arr, predicate) {\n var found = [];\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n if (predicate.call(null, item)) {\n found.push(item);\n }\n }\n return found;\n}\nexport function reduce(arrOrObj, iterator, initial) {\n var isArr = Array.isArray(arrOrObj);\n var vals = isArr ? arrOrObj : values(arrOrObj);\n var objKeys = isArr ? [] : keys(arrOrObj);\n var accumulator = initial;\n for (var i = 0; i < vals.length; i++) {\n accumulator = iterator.call(null, accumulator, vals[i], isArr ? i : objKeys[i]);\n }\n return accumulator;\n}\nexport function compact(arr) {\n return reject(arr, function (item) { return item === null || item === undefined; });\n}\nexport function uniq(arr, identity) {\n if (identity === void 0) { identity = function (item) { return item; }; }\n var identities = [];\n return reduce(arr, function (result, currItem) {\n var currIdentity = identity(currItem);\n if (contains(identities, currIdentity)) {\n return result;\n }\n else {\n identities.push(currIdentity);\n return result.concat(currItem);\n }\n }, []);\n}\nexport function partial(func) {\n var restArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n restArgs[_i - 1] = arguments[_i];\n }\n var firstArg = [null];\n var allArgs = firstArg.concat(restArgs);\n return Function.bind.apply(func, allArgs);\n}\nexport function isArray(obj) {\n return Array.isArray(obj);\n}\nexport function isRegExp(obj) {\n return obj instanceof RegExp;\n}\nexport function isObject(obj) {\n return obj instanceof Object;\n}\nexport function every(arr, predicate) {\n for (var i = 0; i < arr.length; i++) {\n if (!predicate(arr[i], i)) {\n return false;\n }\n }\n return true;\n}\nexport function difference(arr, values) {\n return reject(arr, function (item) { return contains(values, item); });\n}\nexport function some(arr, predicate) {\n for (var i = 0; i < arr.length; i++) {\n if (predicate(arr[i])) {\n return true;\n }\n }\n return false;\n}\nexport function indexOf(arr, value) {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === value) {\n return i;\n }\n }\n return -1;\n}\nexport function sortBy(arr, orderFunc) {\n var result = cloneArr(arr);\n result.sort(function (a, b) { return orderFunc(a) - orderFunc(b); });\n return result;\n}\nexport function zipObject(keys, values) {\n if (keys.length !== values.length) {\n throw Error(\"can't zipObject with different number of keys and values!\");\n }\n var result = {};\n for (var i = 0; i < keys.length; i++) {\n result[keys[i]] = values[i];\n }\n return result;\n}\n/**\n * mutates! (and returns) target\n */\nexport function assign(target) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < sources.length; i++) {\n var curSource = sources[i];\n var currSourceKeys = keys(curSource);\n for (var j = 0; j < currSourceKeys.length; j++) {\n var currKey = currSourceKeys[j];\n target[currKey] = curSource[currKey];\n }\n }\n return target;\n}\n/**\n * mutates! (and returns) target\n */\nexport function assignNoOverwrite(target) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < sources.length; i++) {\n var curSource = sources[i];\n if (isUndefined(curSource)) {\n continue;\n }\n var currSourceKeys = keys(curSource);\n for (var j = 0; j < currSourceKeys.length; j++) {\n var currKey = currSourceKeys[j];\n if (!has(target, currKey)) {\n target[currKey] = curSource[currKey];\n }\n }\n }\n return target;\n}\nexport function defaults() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return assignNoOverwrite.apply(null, [{}].concat(sources));\n}\nexport function groupBy(arr, groupKeyFunc) {\n var result = {};\n forEach(arr, function (item) {\n var currGroupKey = groupKeyFunc(item);\n var currGroupArr = result[currGroupKey];\n if (currGroupArr) {\n currGroupArr.push(item);\n }\n else {\n result[currGroupKey] = [item];\n }\n });\n return result;\n}\n/**\n * Merge obj2 into obj1.\n * Will overwrite existing properties with the same name\n */\nexport function merge(obj1, obj2) {\n var result = cloneObj(obj1);\n var keys2 = keys(obj2);\n for (var i = 0; i < keys2.length; i++) {\n var key = keys2[i];\n var value = obj2[key];\n result[key] = value;\n }\n return result;\n}\nexport function NOOP() { }\nexport function IDENTITY(item) {\n return item;\n}\n/**\n * Will return a new packed array with same values.\n */\nexport function packArray(holeyArr) {\n var result = [];\n for (var i = 0; i < holeyArr.length; i++) {\n var orgValue = holeyArr[i];\n result.push(orgValue !== undefined ? orgValue : undefined);\n }\n return result;\n}\nexport function PRINT_ERROR(msg) {\n /* istanbul ignore else - can't override global.console in node.js */\n if (console && console.error) {\n console.error(\"Error: \" + msg);\n }\n}\nexport function PRINT_WARNING(msg) {\n /* istanbul ignore else - can't override global.console in node.js*/\n if (console && console.warn) {\n // TODO: modify docs accordingly\n console.warn(\"Warning: \" + msg);\n }\n}\nexport function isES2015MapSupported() {\n return typeof Map === \"function\";\n}\nexport function applyMixins(derivedCtor, baseCtors) {\n baseCtors.forEach(function (baseCtor) {\n var baseProto = baseCtor.prototype;\n Object.getOwnPropertyNames(baseProto).forEach(function (propName) {\n if (propName === \"constructor\") {\n return;\n }\n var basePropDescriptor = Object.getOwnPropertyDescriptor(baseProto, propName);\n // Handle Accessors\n if (basePropDescriptor &&\n (basePropDescriptor.get || basePropDescriptor.set)) {\n Object.defineProperty(derivedCtor.prototype, propName, basePropDescriptor);\n }\n else {\n derivedCtor.prototype[propName] = baseCtor.prototype[propName];\n }\n });\n });\n}\n// base on: https://github.com/petkaantonov/bluebird/blob/b97c0d2d487e8c5076e8bd897e0dcd4622d31846/src/util.js#L201-L216\nexport function toFastProperties(toBecomeFast) {\n function FakeConstructor() { }\n // If our object is used as a constructor it would receive\n FakeConstructor.prototype = toBecomeFast;\n var fakeInstance = new FakeConstructor();\n function fakeAccess() {\n return typeof fakeInstance.bar;\n }\n // help V8 understand this is a \"real\" prototype by actually using\n // the fake instance.\n fakeAccess();\n fakeAccess();\n return toBecomeFast;\n // Eval prevents optimization of this method (even though this is dead code)\n /* istanbul ignore next */\n // tslint:disable-next-line\n eval(toBecomeFast);\n}\nexport function peek(arr) {\n return arr[arr.length - 1];\n}\n/* istanbul ignore next - for performance tracing*/\nexport function timer(func) {\n var start = new Date().getTime();\n var val = func();\n var end = new Date().getTime();\n var total = end - start;\n return { time: total, value: val };\n}\n//# sourceMappingURL=utils.js.map","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n (function () { return this; })() || Function('return this')();\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","// IEEE754 conversions based on https://github.com/feross/ieee754\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.8.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/function-bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n",";(function(root, factory) {\n // istanbul ignore next\n if (typeof define === \"function\" && define.amd) {\n // istanbul ignore next\n define([], factory)\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory()\n } else {\n // istanbul ignore next\n root.regexpToAst = factory()\n }\n})(\n typeof self !== \"undefined\"\n ? // istanbul ignore next\n self\n : this,\n function() {\n // references\n // https://hackernoon.com/the-madness-of-parsing-real-world-javascript-regexps-d9ee336df983\n // https://www.ecma-international.org/ecma-262/8.0/index.html#prod-Pattern\n function RegExpParser() {}\n\n RegExpParser.prototype.saveState = function() {\n return {\n idx: this.idx,\n input: this.input,\n groupIdx: this.groupIdx\n }\n }\n\n RegExpParser.prototype.restoreState = function(newState) {\n this.idx = newState.idx\n this.input = newState.input\n this.groupIdx = newState.groupIdx\n }\n\n RegExpParser.prototype.pattern = function(input) {\n // parser state\n this.idx = 0\n this.input = input\n this.groupIdx = 0\n\n this.consumeChar(\"/\")\n var value = this.disjunction()\n this.consumeChar(\"/\")\n\n var flags = {\n type: \"Flags\",\n global: false,\n ignoreCase: false,\n multiLine: false,\n unicode: false,\n sticky: false\n }\n\n while (this.isRegExpFlag()) {\n switch (this.popChar()) {\n case \"g\":\n addFlag(flags, \"global\")\n break\n case \"i\":\n addFlag(flags, \"ignoreCase\")\n break\n case \"m\":\n addFlag(flags, \"multiLine\")\n break\n case \"u\":\n addFlag(flags, \"unicode\")\n break\n case \"y\":\n addFlag(flags, \"sticky\")\n break\n }\n }\n\n if (this.idx !== this.input.length) {\n throw Error(\n \"Redundant input: \" + this.input.substring(this.idx)\n )\n }\n return { type: \"Pattern\", flags: flags, value: value }\n }\n\n RegExpParser.prototype.disjunction = function() {\n var alts = []\n alts.push(this.alternative())\n\n while (this.peekChar() === \"|\") {\n this.consumeChar(\"|\")\n alts.push(this.alternative())\n }\n\n return { type: \"Disjunction\", value: alts }\n }\n\n RegExpParser.prototype.alternative = function() {\n var terms = []\n\n while (this.isTerm()) {\n terms.push(this.term())\n }\n\n return { type: \"Alternative\", value: terms }\n }\n\n RegExpParser.prototype.term = function() {\n if (this.isAssertion()) {\n return this.assertion()\n } else {\n return this.atom()\n }\n }\n\n RegExpParser.prototype.assertion = function() {\n switch (this.popChar()) {\n case \"^\":\n return { type: \"StartAnchor\" }\n case \"$\":\n return { type: \"EndAnchor\" }\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.popChar()) {\n case \"b\":\n return { type: \"WordBoundary\" }\n case \"B\":\n return { type: \"NonWordBoundary\" }\n }\n // istanbul ignore next\n throw Error(\"Invalid Assertion Escape\")\n // '(?=' or '(?!'\n case \"(\":\n this.consumeChar(\"?\")\n\n var type\n switch (this.popChar()) {\n case \"=\":\n type = \"Lookahead\"\n break\n case \"!\":\n type = \"NegativeLookahead\"\n break\n }\n ASSERT_EXISTS(type)\n\n var disjunction = this.disjunction()\n\n this.consumeChar(\")\")\n\n return { type: type, value: disjunction }\n }\n // istanbul ignore next\n ASSERT_NEVER_REACH_HERE()\n }\n\n RegExpParser.prototype.quantifier = function(isBacktracking) {\n var range\n switch (this.popChar()) {\n case \"*\":\n range = {\n atLeast: 0,\n atMost: Infinity\n }\n break\n case \"+\":\n range = {\n atLeast: 1,\n atMost: Infinity\n }\n break\n case \"?\":\n range = {\n atLeast: 0,\n atMost: 1\n }\n break\n case \"{\":\n var atLeast = this.integerIncludingZero()\n switch (this.popChar()) {\n case \"}\":\n range = {\n atLeast: atLeast,\n atMost: atLeast\n }\n break\n case \",\":\n var atMost\n if (this.isDigit()) {\n atMost = this.integerIncludingZero()\n range = {\n atLeast: atLeast,\n atMost: atMost\n }\n } else {\n range = {\n atLeast: atLeast,\n atMost: Infinity\n }\n }\n this.consumeChar(\"}\")\n break\n }\n // throwing exceptions from \"ASSERT_EXISTS\" during backtracking\n // causes severe performance degradations\n if (isBacktracking === true && range === undefined) {\n return undefined\n }\n ASSERT_EXISTS(range)\n break\n }\n\n // throwing exceptions from \"ASSERT_EXISTS\" during backtracking\n // causes severe performance degradations\n if (isBacktracking === true && range === undefined) {\n return undefined\n }\n\n ASSERT_EXISTS(range)\n\n if (this.peekChar(0) === \"?\") {\n this.consumeChar(\"?\")\n range.greedy = false\n } else {\n range.greedy = true\n }\n\n range.type = \"Quantifier\"\n return range\n }\n\n RegExpParser.prototype.atom = function() {\n var atom\n switch (this.peekChar()) {\n case \".\":\n atom = this.dotAll()\n break\n case \"\\\\\":\n atom = this.atomEscape()\n break\n case \"[\":\n atom = this.characterClass()\n break\n case \"(\":\n atom = this.group()\n break\n }\n\n if (atom === undefined && this.isPatternCharacter()) {\n atom = this.patternCharacter()\n }\n\n ASSERT_EXISTS(atom)\n\n if (this.isQuantifier()) {\n atom.quantifier = this.quantifier()\n }\n\n return atom\n }\n\n RegExpParser.prototype.dotAll = function() {\n this.consumeChar(\".\")\n return {\n type: \"Set\",\n complement: true,\n value: [cc(\"\\n\"), cc(\"\\r\"), cc(\"\\u2028\"), cc(\"\\u2029\")]\n }\n }\n\n RegExpParser.prototype.atomEscape = function() {\n this.consumeChar(\"\\\\\")\n\n switch (this.peekChar()) {\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n return this.decimalEscapeAtom()\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape()\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom()\n case \"c\":\n return this.controlLetterEscapeAtom()\n case \"0\":\n return this.nulCharacterAtom()\n case \"x\":\n return this.hexEscapeSequenceAtom()\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom()\n default:\n return this.identityEscapeAtom()\n }\n }\n\n RegExpParser.prototype.decimalEscapeAtom = function() {\n var value = this.positiveInteger()\n\n return { type: \"GroupBackReference\", value: value }\n }\n\n RegExpParser.prototype.characterClassEscape = function() {\n var set\n var complement = false\n switch (this.popChar()) {\n case \"d\":\n set = digitsCharCodes\n break\n case \"D\":\n set = digitsCharCodes\n complement = true\n break\n case \"s\":\n set = whitespaceCodes\n break\n case \"S\":\n set = whitespaceCodes\n complement = true\n break\n case \"w\":\n set = wordCharCodes\n break\n case \"W\":\n set = wordCharCodes\n complement = true\n break\n }\n\n ASSERT_EXISTS(set)\n\n return { type: \"Set\", value: set, complement: complement }\n }\n\n RegExpParser.prototype.controlEscapeAtom = function() {\n var escapeCode\n switch (this.popChar()) {\n case \"f\":\n escapeCode = cc(\"\\f\")\n break\n case \"n\":\n escapeCode = cc(\"\\n\")\n break\n case \"r\":\n escapeCode = cc(\"\\r\")\n break\n case \"t\":\n escapeCode = cc(\"\\t\")\n break\n case \"v\":\n escapeCode = cc(\"\\v\")\n break\n }\n ASSERT_EXISTS(escapeCode)\n\n return { type: \"Character\", value: escapeCode }\n }\n\n RegExpParser.prototype.controlLetterEscapeAtom = function() {\n this.consumeChar(\"c\")\n var letter = this.popChar()\n if (/[a-zA-Z]/.test(letter) === false) {\n throw Error(\"Invalid \")\n }\n\n var letterCode = letter.toUpperCase().charCodeAt(0) - 64\n return { type: \"Character\", value: letterCode }\n }\n\n RegExpParser.prototype.nulCharacterAtom = function() {\n // TODO implement '[lookahead ∉ DecimalDigit]'\n // TODO: for the deprecated octal escape sequence\n this.consumeChar(\"0\")\n return { type: \"Character\", value: cc(\"\\0\") }\n }\n\n RegExpParser.prototype.hexEscapeSequenceAtom = function() {\n this.consumeChar(\"x\")\n return this.parseHexDigits(2)\n }\n\n RegExpParser.prototype.regExpUnicodeEscapeSequenceAtom = function() {\n this.consumeChar(\"u\")\n return this.parseHexDigits(4)\n }\n\n RegExpParser.prototype.identityEscapeAtom = function() {\n // TODO: implement \"SourceCharacter but not UnicodeIDContinue\"\n // // http://unicode.org/reports/tr31/#Specific_Character_Adjustments\n var escapedChar = this.popChar()\n return { type: \"Character\", value: cc(escapedChar) }\n }\n\n RegExpParser.prototype.classPatternCharacterAtom = function() {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \"]\":\n throw Error(\"TBD\")\n default:\n var nextChar = this.popChar()\n return { type: \"Character\", value: cc(nextChar) }\n }\n }\n\n RegExpParser.prototype.characterClass = function() {\n var set = []\n var complement = false\n this.consumeChar(\"[\")\n if (this.peekChar(0) === \"^\") {\n this.consumeChar(\"^\")\n complement = true\n }\n\n while (this.isClassAtom()) {\n var from = this.classAtom()\n var isFromSingleChar = from.type === \"Character\"\n if (isFromSingleChar && this.isRangeDash()) {\n this.consumeChar(\"-\")\n var to = this.classAtom()\n var isToSingleChar = to.type === \"Character\"\n\n // a range can only be used when both sides are single characters\n if (isToSingleChar) {\n if (to.value < from.value) {\n throw Error(\"Range out of order in character class\")\n }\n set.push({ from: from.value, to: to.value })\n } else {\n // literal dash\n insertToSet(from.value, set)\n set.push(cc(\"-\"))\n insertToSet(to.value, set)\n }\n } else {\n insertToSet(from.value, set)\n }\n }\n\n this.consumeChar(\"]\")\n\n return { type: \"Set\", complement: complement, value: set }\n }\n\n RegExpParser.prototype.classAtom = function() {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"]\":\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n throw Error(\"TBD\")\n case \"\\\\\":\n return this.classEscape()\n default:\n return this.classPatternCharacterAtom()\n }\n }\n\n RegExpParser.prototype.classEscape = function() {\n this.consumeChar(\"\\\\\")\n switch (this.peekChar()) {\n // Matches a backspace.\n // (Not to be confused with \\b word boundary outside characterClass)\n case \"b\":\n this.consumeChar(\"b\")\n return { type: \"Character\", value: cc(\"\\u0008\") }\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape()\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom()\n case \"c\":\n return this.controlLetterEscapeAtom()\n case \"0\":\n return this.nulCharacterAtom()\n case \"x\":\n return this.hexEscapeSequenceAtom()\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom()\n default:\n return this.identityEscapeAtom()\n }\n }\n\n RegExpParser.prototype.group = function() {\n var capturing = true\n this.consumeChar(\"(\")\n switch (this.peekChar(0)) {\n case \"?\":\n this.consumeChar(\"?\")\n this.consumeChar(\":\")\n capturing = false\n break\n default:\n this.groupIdx++\n break\n }\n var value = this.disjunction()\n this.consumeChar(\")\")\n\n var groupAst = {\n type: \"Group\",\n capturing: capturing,\n value: value\n }\n\n if (capturing) {\n groupAst.idx = this.groupIdx\n }\n\n return groupAst\n }\n\n RegExpParser.prototype.positiveInteger = function() {\n var number = this.popChar()\n\n // istanbul ignore next - can't ever get here due to previous lookahead checks\n // still implementing this error checking in case this ever changes.\n if (decimalPatternNoZero.test(number) === false) {\n throw Error(\"Expecting a positive integer\")\n }\n\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar()\n }\n\n return parseInt(number, 10)\n }\n\n RegExpParser.prototype.integerIncludingZero = function() {\n var number = this.popChar()\n if (decimalPattern.test(number) === false) {\n throw Error(\"Expecting an integer\")\n }\n\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar()\n }\n\n return parseInt(number, 10)\n }\n\n RegExpParser.prototype.patternCharacter = function() {\n var nextChar = this.popChar()\n switch (nextChar) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"^\":\n // istanbul ignore next\n case \"$\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \".\":\n // istanbul ignore next\n case \"*\":\n // istanbul ignore next\n case \"+\":\n // istanbul ignore next\n case \"?\":\n // istanbul ignore next\n case \"(\":\n // istanbul ignore next\n case \")\":\n // istanbul ignore next\n case \"[\":\n // istanbul ignore next\n case \"|\":\n // istanbul ignore next\n throw Error(\"TBD\")\n default:\n return { type: \"Character\", value: cc(nextChar) }\n }\n }\n RegExpParser.prototype.isRegExpFlag = function() {\n switch (this.peekChar(0)) {\n case \"g\":\n case \"i\":\n case \"m\":\n case \"u\":\n case \"y\":\n return true\n default:\n return false\n }\n }\n\n RegExpParser.prototype.isRangeDash = function() {\n return this.peekChar() === \"-\" && this.isClassAtom(1)\n }\n\n RegExpParser.prototype.isDigit = function() {\n return decimalPattern.test(this.peekChar(0))\n }\n\n RegExpParser.prototype.isClassAtom = function(howMuch) {\n if (howMuch === undefined) {\n howMuch = 0\n }\n\n switch (this.peekChar(howMuch)) {\n case \"]\":\n case \"\\n\":\n case \"\\r\":\n case \"\\u2028\":\n case \"\\u2029\":\n return false\n default:\n return true\n }\n }\n\n RegExpParser.prototype.isTerm = function() {\n return this.isAtom() || this.isAssertion()\n }\n\n RegExpParser.prototype.isAtom = function() {\n if (this.isPatternCharacter()) {\n return true\n }\n\n switch (this.peekChar(0)) {\n case \".\":\n case \"\\\\\": // atomEscape\n case \"[\": // characterClass\n // TODO: isAtom must be called before isAssertion - disambiguate\n case \"(\": // group\n return true\n default:\n return false\n }\n }\n\n RegExpParser.prototype.isAssertion = function() {\n switch (this.peekChar(0)) {\n case \"^\":\n case \"$\":\n return true\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.peekChar(1)) {\n case \"b\":\n case \"B\":\n return true\n default:\n return false\n }\n // '(?=' or '(?!'\n case \"(\":\n return (\n this.peekChar(1) === \"?\" &&\n (this.peekChar(2) === \"=\" || this.peekChar(2) === \"!\")\n )\n default:\n return false\n }\n }\n\n RegExpParser.prototype.isQuantifier = function() {\n var prevState = this.saveState()\n try {\n return this.quantifier(true) !== undefined\n } catch (e) {\n return false\n } finally {\n this.restoreState(prevState)\n }\n }\n\n RegExpParser.prototype.isPatternCharacter = function() {\n switch (this.peekChar()) {\n case \"^\":\n case \"$\":\n case \"\\\\\":\n case \".\":\n case \"*\":\n case \"+\":\n case \"?\":\n case \"(\":\n case \")\":\n case \"[\":\n case \"|\":\n case \"/\":\n case \"\\n\":\n case \"\\r\":\n case \"\\u2028\":\n case \"\\u2029\":\n return false\n default:\n return true\n }\n }\n\n RegExpParser.prototype.parseHexDigits = function(howMany) {\n var hexString = \"\"\n for (var i = 0; i < howMany; i++) {\n var hexChar = this.popChar()\n if (hexDigitPattern.test(hexChar) === false) {\n throw Error(\"Expecting a HexDecimal digits\")\n }\n hexString += hexChar\n }\n var charCode = parseInt(hexString, 16)\n return { type: \"Character\", value: charCode }\n }\n\n RegExpParser.prototype.peekChar = function(howMuch) {\n if (howMuch === undefined) {\n howMuch = 0\n }\n return this.input[this.idx + howMuch]\n }\n\n RegExpParser.prototype.popChar = function() {\n var nextChar = this.peekChar(0)\n this.consumeChar()\n return nextChar\n }\n\n RegExpParser.prototype.consumeChar = function(char) {\n if (char !== undefined && this.input[this.idx] !== char) {\n throw Error(\n \"Expected: '\" +\n char +\n \"' but found: '\" +\n this.input[this.idx] +\n \"' at offset: \" +\n this.idx\n )\n }\n\n if (this.idx >= this.input.length) {\n throw Error(\"Unexpected end of input\")\n }\n this.idx++\n }\n\n // consts and utilities\n var hexDigitPattern = /[0-9a-fA-F]/\n var decimalPattern = /[0-9]/\n var decimalPatternNoZero = /[1-9]/\n\n function cc(char) {\n return char.charCodeAt(0)\n }\n\n function insertToSet(item, set) {\n if (item.length !== undefined) {\n item.forEach(function(subItem) {\n set.push(subItem)\n })\n } else {\n set.push(item)\n }\n }\n\n function addFlag(flagObj, flagKey) {\n if (flagObj[flagKey] === true) {\n throw \"duplicate flag \" + flagKey\n }\n\n flagObj[flagKey] = true\n }\n\n function ASSERT_EXISTS(obj) {\n // istanbul ignore next\n if (obj === undefined) {\n throw Error(\"Internal Error - Should never get here!\")\n }\n }\n\n // istanbul ignore next\n function ASSERT_NEVER_REACH_HERE() {\n throw Error(\"Internal Error - Should never get here!\")\n }\n\n var i\n var digitsCharCodes = []\n for (i = cc(\"0\"); i <= cc(\"9\"); i++) {\n digitsCharCodes.push(i)\n }\n\n var wordCharCodes = [cc(\"_\")].concat(digitsCharCodes)\n for (i = cc(\"a\"); i <= cc(\"z\"); i++) {\n wordCharCodes.push(i)\n }\n\n for (i = cc(\"A\"); i <= cc(\"Z\"); i++) {\n wordCharCodes.push(i)\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#character-classes\n var whitespaceCodes = [\n cc(\" \"),\n cc(\"\\f\"),\n cc(\"\\n\"),\n cc(\"\\r\"),\n cc(\"\\t\"),\n cc(\"\\v\"),\n cc(\"\\t\"),\n cc(\"\\u00a0\"),\n cc(\"\\u1680\"),\n cc(\"\\u2000\"),\n cc(\"\\u2001\"),\n cc(\"\\u2002\"),\n cc(\"\\u2003\"),\n cc(\"\\u2004\"),\n cc(\"\\u2005\"),\n cc(\"\\u2006\"),\n cc(\"\\u2007\"),\n cc(\"\\u2008\"),\n cc(\"\\u2009\"),\n cc(\"\\u200a\"),\n cc(\"\\u2028\"),\n cc(\"\\u2029\"),\n cc(\"\\u202f\"),\n cc(\"\\u205f\"),\n cc(\"\\u3000\"),\n cc(\"\\ufeff\")\n ]\n\n function BaseRegExpVisitor() {}\n\n BaseRegExpVisitor.prototype.visitChildren = function(node) {\n for (var key in node) {\n var child = node[key]\n /* istanbul ignore else */\n if (node.hasOwnProperty(key)) {\n if (child.type !== undefined) {\n this.visit(child)\n } else if (Array.isArray(child)) {\n child.forEach(function(subChild) {\n this.visit(subChild)\n }, this)\n }\n }\n }\n }\n\n BaseRegExpVisitor.prototype.visit = function(node) {\n switch (node.type) {\n case \"Pattern\":\n this.visitPattern(node)\n break\n case \"Flags\":\n this.visitFlags(node)\n break\n case \"Disjunction\":\n this.visitDisjunction(node)\n break\n case \"Alternative\":\n this.visitAlternative(node)\n break\n case \"StartAnchor\":\n this.visitStartAnchor(node)\n break\n case \"EndAnchor\":\n this.visitEndAnchor(node)\n break\n case \"WordBoundary\":\n this.visitWordBoundary(node)\n break\n case \"NonWordBoundary\":\n this.visitNonWordBoundary(node)\n break\n case \"Lookahead\":\n this.visitLookahead(node)\n break\n case \"NegativeLookahead\":\n this.visitNegativeLookahead(node)\n break\n case \"Character\":\n this.visitCharacter(node)\n break\n case \"Set\":\n this.visitSet(node)\n break\n case \"Group\":\n this.visitGroup(node)\n break\n case \"GroupBackReference\":\n this.visitGroupBackReference(node)\n break\n case \"Quantifier\":\n this.visitQuantifier(node)\n break\n }\n\n this.visitChildren(node)\n }\n\n BaseRegExpVisitor.prototype.visitPattern = function(node) {}\n\n BaseRegExpVisitor.prototype.visitFlags = function(node) {}\n\n BaseRegExpVisitor.prototype.visitDisjunction = function(node) {}\n\n BaseRegExpVisitor.prototype.visitAlternative = function(node) {}\n\n // Assertion\n BaseRegExpVisitor.prototype.visitStartAnchor = function(node) {}\n\n BaseRegExpVisitor.prototype.visitEndAnchor = function(node) {}\n\n BaseRegExpVisitor.prototype.visitWordBoundary = function(node) {}\n\n BaseRegExpVisitor.prototype.visitNonWordBoundary = function(node) {}\n\n BaseRegExpVisitor.prototype.visitLookahead = function(node) {}\n\n BaseRegExpVisitor.prototype.visitNegativeLookahead = function(node) {}\n\n // atoms\n BaseRegExpVisitor.prototype.visitCharacter = function(node) {}\n\n BaseRegExpVisitor.prototype.visitSet = function(node) {}\n\n BaseRegExpVisitor.prototype.visitGroup = function(node) {}\n\n BaseRegExpVisitor.prototype.visitGroupBackReference = function(node) {}\n\n BaseRegExpVisitor.prototype.visitQuantifier = function(node) {}\n\n return {\n RegExpParser: RegExpParser,\n BaseRegExpVisitor: BaseRegExpVisitor,\n VERSION: \"0.4.0\"\n }\n }\n)\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nconst directives = new WeakMap();\n/**\n * Brands a function as a directive factory function so that lit-html will call\n * the function during template rendering, rather than passing as a value.\n *\n * A _directive_ is a function that takes a Part as an argument. It has the\n * signature: `(part: Part) => void`.\n *\n * A directive _factory_ is a function that takes arguments for data and\n * configuration and returns a directive. Users of directive usually refer to\n * the directive factory as the directive. For example, \"The repeat directive\".\n *\n * Usually a template author will invoke a directive factory in their template\n * with relevant arguments, which will then return a directive function.\n *\n * Here's an example of using the `repeat()` directive factory that takes an\n * array and a function to render an item:\n *\n * ```js\n * html`<ul><${repeat(items, (item) => html`<li>${item}</li>`)}</ul>`\n * ```\n *\n * When `repeat` is invoked, it returns a directive function that closes over\n * `items` and the template function. When the outer template is rendered, the\n * return directive function is called with the Part for the expression.\n * `repeat` then performs it's custom logic to render multiple items.\n *\n * @param f The directive factory function. Must be a function that returns a\n * function of the signature `(part: Part) => void`. The returned function will\n * be called with the part object.\n *\n * @example\n *\n * import {directive, html} from 'lit-html';\n *\n * const immutable = directive((v) => (part) => {\n * if (part.value !== v) {\n * part.setValue(v)\n * }\n * });\n */\nexport const directive = (f) => ((...args) => {\n const d = f(...args);\n directives.set(d, true);\n return d;\n});\nexport const isDirective = (o) => {\n return typeof o === 'function' && directives.has(o);\n};\n//# sourceMappingURL=directive.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * True if the custom elements polyfill is in use.\n */\nexport const isCEPolyfill = typeof window !== 'undefined' &&\n window.customElements != null &&\n window.customElements.polyfillWrapFlushCallback !==\n undefined;\n/**\n * Reparents nodes, starting from `start` (inclusive) to `end` (exclusive),\n * into another container (could be the same container), before `before`. If\n * `before` is null, it appends the nodes to the container.\n */\nexport const reparentNodes = (container, start, end = null, before = null) => {\n while (start !== end) {\n const n = start.nextSibling;\n container.insertBefore(start, before);\n start = n;\n }\n};\n/**\n * Removes nodes, starting from `start` (inclusive) to `end` (exclusive), from\n * `container`.\n */\nexport const removeNodes = (container, start, end = null) => {\n while (start !== end) {\n const n = start.nextSibling;\n container.removeChild(start);\n start = n;\n }\n};\n//# sourceMappingURL=dom.js.map","/**\n * @license\n * Copyright (c) 2018 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nexport const noChange = {};\n/**\n * A sentinel value that signals a NodePart to fully clear its content.\n */\nexport const nothing = {};\n//# sourceMappingURL=part.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * An expression marker with embedded unique key to avoid collision with\n * possible text in templates.\n */\nexport const marker = `{{lit-${String(Math.random()).slice(2)}}}`;\n/**\n * An expression marker used text-positions, multi-binding attributes, and\n * attributes with markup-like text values.\n */\nexport const nodeMarker = `<!--${marker}-->`;\nexport const markerRegex = new RegExp(`${marker}|${nodeMarker}`);\n/**\n * Suffix appended to all bound attribute names.\n */\nexport const boundAttributeSuffix = '$lit$';\n/**\n * An updatable Template that tracks the location of dynamic parts.\n */\nexport class Template {\n constructor(result, element) {\n this.parts = [];\n this.element = element;\n const nodesToRemove = [];\n const stack = [];\n // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null\n const walker = document.createTreeWalker(element.content, 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */, null, false);\n // Keeps track of the last index associated with a part. We try to delete\n // unnecessary nodes, but we never want to associate two different parts\n // to the same index. They must have a constant node between.\n let lastPartIndex = 0;\n let index = -1;\n let partIndex = 0;\n const { strings, values: { length } } = result;\n while (partIndex < length) {\n const node = walker.nextNode();\n if (node === null) {\n // We've exhausted the content inside a nested template element.\n // Because we still have parts (the outer for-loop), we know:\n // - There is a template in the stack\n // - The walker will find a nextNode outside the template\n walker.currentNode = stack.pop();\n continue;\n }\n index++;\n if (node.nodeType === 1 /* Node.ELEMENT_NODE */) {\n if (node.hasAttributes()) {\n const attributes = node.attributes;\n const { length } = attributes;\n // Per\n // https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap,\n // attributes are not guaranteed to be returned in document order.\n // In particular, Edge/IE can return them out of order, so we cannot\n // assume a correspondence between part index and attribute index.\n let count = 0;\n for (let i = 0; i < length; i++) {\n if (endsWith(attributes[i].name, boundAttributeSuffix)) {\n count++;\n }\n }\n while (count-- > 0) {\n // Get the template literal section leading up to the first\n // expression in this attribute\n const stringForPart = strings[partIndex];\n // Find the attribute name\n const name = lastAttributeNameRegex.exec(stringForPart)[2];\n // Find the corresponding attribute\n // All bound attributes have had a suffix added in\n // TemplateResult#getHTML to opt out of special attribute\n // handling. To look up the attribute value we also need to add\n // the suffix.\n const attributeLookupName = name.toLowerCase() + boundAttributeSuffix;\n const attributeValue = node.getAttribute(attributeLookupName);\n node.removeAttribute(attributeLookupName);\n const statics = attributeValue.split(markerRegex);\n this.parts.push({ type: 'attribute', index, name, strings: statics });\n partIndex += statics.length - 1;\n }\n }\n if (node.tagName === 'TEMPLATE') {\n stack.push(node);\n walker.currentNode = node.content;\n }\n }\n else if (node.nodeType === 3 /* Node.TEXT_NODE */) {\n const data = node.data;\n if (data.indexOf(marker) >= 0) {\n const parent = node.parentNode;\n const strings = data.split(markerRegex);\n const lastIndex = strings.length - 1;\n // Generate a new text node for each literal section\n // These nodes are also used as the markers for node parts\n for (let i = 0; i < lastIndex; i++) {\n let insert;\n let s = strings[i];\n if (s === '') {\n insert = createMarker();\n }\n else {\n const match = lastAttributeNameRegex.exec(s);\n if (match !== null && endsWith(match[2], boundAttributeSuffix)) {\n s = s.slice(0, match.index) + match[1] +\n match[2].slice(0, -boundAttributeSuffix.length) + match[3];\n }\n insert = document.createTextNode(s);\n }\n parent.insertBefore(insert, node);\n this.parts.push({ type: 'node', index: ++index });\n }\n // If there's no text, we must insert a comment to mark our place.\n // Else, we can trust it will stick around after cloning.\n if (strings[lastIndex] === '') {\n parent.insertBefore(createMarker(), node);\n nodesToRemove.push(node);\n }\n else {\n node.data = strings[lastIndex];\n }\n // We have a part for each match found\n partIndex += lastIndex;\n }\n }\n else if (node.nodeType === 8 /* Node.COMMENT_NODE */) {\n if (node.data === marker) {\n const parent = node.parentNode;\n // Add a new marker node to be the startNode of the Part if any of\n // the following are true:\n // * We don't have a previousSibling\n // * The previousSibling is already the start of a previous part\n if (node.previousSibling === null || index === lastPartIndex) {\n index++;\n parent.insertBefore(createMarker(), node);\n }\n lastPartIndex = index;\n this.parts.push({ type: 'node', index });\n // If we don't have a nextSibling, keep this node so we have an end.\n // Else, we can remove it to save future costs.\n if (node.nextSibling === null) {\n node.data = '';\n }\n else {\n nodesToRemove.push(node);\n index--;\n }\n partIndex++;\n }\n else {\n let i = -1;\n while ((i = node.data.indexOf(marker, i + 1)) !== -1) {\n // Comment node has a binding marker inside, make an inactive part\n // The binding won't work, but subsequent bindings will\n // TODO (justinfagnani): consider whether it's even worth it to\n // make bindings in comments work\n this.parts.push({ type: 'node', index: -1 });\n partIndex++;\n }\n }\n }\n }\n // Remove text binding nodes after the walk to not disturb the TreeWalker\n for (const n of nodesToRemove) {\n n.parentNode.removeChild(n);\n }\n }\n}\nconst endsWith = (str, suffix) => {\n const index = str.length - suffix.length;\n return index >= 0 && str.slice(index) === suffix;\n};\nexport const isTemplatePartActive = (part) => part.index !== -1;\n// Allows `document.createComment('')` to be renamed for a\n// small manual size-savings.\nexport const createMarker = () => document.createComment('');\n/**\n * This regex extracts the attribute name preceding an attribute-position\n * expression. It does this by matching the syntax allowed for attributes\n * against the string literal directly preceding the expression, assuming that\n * the expression is in an attribute-value position.\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\x09\\x0a\\x0c\\x0d\" are HTML space characters:\n * https://www.w3.org/TR/html5/infrastructure.html#space-characters\n *\n * \"\\0-\\x1F\\x7F-\\x9F\" are Unicode control characters, which includes every\n * space character except \" \".\n *\n * So an attribute is:\n * * The name: any character except a control character, space character, ('),\n * (\"), \">\", \"=\", or \"/\"\n * * Followed by zero or more space characters\n * * Followed by \"=\"\n * * Followed by zero or more space characters\n * * Followed by:\n * * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n * * (\") then any non-(\"), or\n * * (') then any non-(')\n */\nexport const lastAttributeNameRegex = \n// eslint-disable-next-line no-control-regex\n/([ \\x09\\x0a\\x0c\\x0d])([^\\0-\\x1F\\x7F-\\x9F \"'>=/]+)([ \\x09\\x0a\\x0c\\x0d]*=[ \\x09\\x0a\\x0c\\x0d]*(?:[^ \\x09\\x0a\\x0c\\x0d\"'`<>=]*|\"[^\"]*|'[^']*))$/;\n//# sourceMappingURL=template.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nimport { isCEPolyfill } from './dom.js';\nimport { isTemplatePartActive } from './template.js';\n/**\n * An instance of a `Template` that can be attached to the DOM and updated\n * with new values.\n */\nexport class TemplateInstance {\n constructor(template, processor, options) {\n this.__parts = [];\n this.template = template;\n this.processor = processor;\n this.options = options;\n }\n update(values) {\n let i = 0;\n for (const part of this.__parts) {\n if (part !== undefined) {\n part.setValue(values[i]);\n }\n i++;\n }\n for (const part of this.__parts) {\n if (part !== undefined) {\n part.commit();\n }\n }\n }\n _clone() {\n // There are a number of steps in the lifecycle of a template instance's\n // DOM fragment:\n // 1. Clone - create the instance fragment\n // 2. Adopt - adopt into the main document\n // 3. Process - find part markers and create parts\n // 4. Upgrade - upgrade custom elements\n // 5. Update - set node, attribute, property, etc., values\n // 6. Connect - connect to the document. Optional and outside of this\n // method.\n //\n // We have a few constraints on the ordering of these steps:\n // * We need to upgrade before updating, so that property values will pass\n // through any property setters.\n // * We would like to process before upgrading so that we're sure that the\n // cloned fragment is inert and not disturbed by self-modifying DOM.\n // * We want custom elements to upgrade even in disconnected fragments.\n //\n // Given these constraints, with full custom elements support we would\n // prefer the order: Clone, Process, Adopt, Upgrade, Update, Connect\n //\n // But Safari does not implement CustomElementRegistry#upgrade, so we\n // can not implement that order and still have upgrade-before-update and\n // upgrade disconnected fragments. So we instead sacrifice the\n // process-before-upgrade constraint, since in Custom Elements v1 elements\n // must not modify their light DOM in the constructor. We still have issues\n // when co-existing with CEv0 elements like Polymer 1, and with polyfills\n // that don't strictly adhere to the no-modification rule because shadow\n // DOM, which may be created in the constructor, is emulated by being placed\n // in the light DOM.\n //\n // The resulting order is on native is: Clone, Adopt, Upgrade, Process,\n // Update, Connect. document.importNode() performs Clone, Adopt, and Upgrade\n // in one step.\n //\n // The Custom Elements v1 polyfill supports upgrade(), so the order when\n // polyfilled is the more ideal: Clone, Process, Adopt, Upgrade, Update,\n // Connect.\n const fragment = isCEPolyfill ?\n this.template.element.content.cloneNode(true) :\n document.importNode(this.template.element.content, true);\n const stack = [];\n const parts = this.template.parts;\n // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null\n const walker = document.createTreeWalker(fragment, 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */, null, false);\n let partIndex = 0;\n let nodeIndex = 0;\n let part;\n let node = walker.nextNode();\n // Loop through all the nodes and parts of a template\n while (partIndex < parts.length) {\n part = parts[partIndex];\n if (!isTemplatePartActive(part)) {\n this.__parts.push(undefined);\n partIndex++;\n continue;\n }\n // Progress the tree walker until we find our next part's node.\n // Note that multiple parts may share the same node (attribute parts\n // on a single element), so this loop may not run at all.\n while (nodeIndex < part.index) {\n nodeIndex++;\n if (node.nodeName === 'TEMPLATE') {\n stack.push(node);\n walker.currentNode = node.content;\n }\n if ((node = walker.nextNode()) === null) {\n // We've exhausted the content inside a nested template element.\n // Because we still have parts (the outer for-loop), we know:\n // - There is a template in the stack\n // - The walker will find a nextNode outside the template\n walker.currentNode = stack.pop();\n node = walker.nextNode();\n }\n }\n // We've arrived at our part's node.\n if (part.type === 'node') {\n const part = this.processor.handleTextExpression(this.options);\n part.insertAfterNode(node.previousSibling);\n this.__parts.push(part);\n }\n else {\n this.__parts.push(...this.processor.handleAttributeExpressions(node, part.name, part.strings, this.options));\n }\n partIndex++;\n }\n if (isCEPolyfill) {\n document.adoptNode(fragment);\n customElements.upgrade(fragment);\n }\n return fragment;\n }\n}\n//# sourceMappingURL=template-instance.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * @module lit-html\n */\nimport { reparentNodes } from './dom.js';\nimport { boundAttributeSuffix, lastAttributeNameRegex, marker, nodeMarker } from './template.js';\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = window.trustedTypes &&\n trustedTypes.createPolicy('lit-html', { createHTML: (s) => s });\nconst commentMarker = ` ${marker} `;\n/**\n * The return type of `html`, which holds a Template and the values from\n * interpolated expressions.\n */\nexport class TemplateResult {\n constructor(strings, values, type, processor) {\n this.strings = strings;\n this.values = values;\n this.type = type;\n this.processor = processor;\n }\n /**\n * Returns a string of HTML used to create a `<template>` element.\n */\n getHTML() {\n const l = this.strings.length - 1;\n let html = '';\n let isCommentBinding = false;\n for (let i = 0; i < l; i++) {\n const s = this.strings[i];\n // For each binding we want to determine the kind of marker to insert\n // into the template source before it's parsed by the browser's HTML\n // parser. The marker type is based on whether the expression is in an\n // attribute, text, or comment position.\n // * For node-position bindings we insert a comment with the marker\n // sentinel as its text content, like <!--{{lit-guid}}-->.\n // * For attribute bindings we insert just the marker sentinel for the\n // first binding, so that we support unquoted attribute bindings.\n // Subsequent bindings can use a comment marker because multi-binding\n // attributes must be quoted.\n // * For comment bindings we insert just the marker sentinel so we don't\n // close the comment.\n //\n // The following code scans the template source, but is *not* an HTML\n // parser. We don't need to track the tree structure of the HTML, only\n // whether a binding is inside a comment, and if not, if it appears to be\n // the first binding in an attribute.\n const commentOpen = s.lastIndexOf('<!--');\n // We're in comment position if we have a comment open with no following\n // comment close. Because <-- can appear in an attribute value there can\n // be false positives.\n isCommentBinding = (commentOpen > -1 || isCommentBinding) &&\n s.indexOf('-->', commentOpen + 1) === -1;\n // Check to see if we have an attribute-like sequence preceding the\n // expression. This can match \"name=value\" like structures in text,\n // comments, and attribute values, so there can be false-positives.\n const attributeMatch = lastAttributeNameRegex.exec(s);\n if (attributeMatch === null) {\n // We're only in this branch if we don't have a attribute-like\n // preceding sequence. For comments, this guards against unusual\n // attribute values like <div foo=\"<!--${'bar'}\">. Cases like\n // <!-- foo=${'bar'}--> are handled correctly in the attribute branch\n // below.\n html += s + (isCommentBinding ? commentMarker : nodeMarker);\n }\n else {\n // For attributes we use just a marker sentinel, and also append a\n // $lit$ suffix to the name to opt-out of attribute-specific parsing\n // that IE and Edge do for style and certain SVG attributes.\n html += s.substr(0, attributeMatch.index) + attributeMatch[1] +\n attributeMatch[2] + boundAttributeSuffix + attributeMatch[3] +\n marker;\n }\n }\n html += this.strings[l];\n return html;\n }\n getTemplateElement() {\n const template = document.createElement('template');\n let value = this.getHTML();\n if (policy !== undefined) {\n // this is secure because `this.strings` is a TemplateStringsArray.\n // TODO: validate this when\n // https://github.com/tc39/proposal-array-is-template-object is\n // implemented.\n value = policy.createHTML(value);\n }\n template.innerHTML = value;\n return template;\n }\n}\n/**\n * A TemplateResult for SVG fragments.\n *\n * This class wraps HTML in an `<svg>` tag in order to parse its contents in the\n * SVG namespace, then modifies the template to remove the `<svg>` tag so that\n * clones only container the original fragment.\n */\nexport class SVGTemplateResult extends TemplateResult {\n getHTML() {\n return `<svg>${super.getHTML()}</svg>`;\n }\n getTemplateElement() {\n const template = super.getTemplateElement();\n const content = template.content;\n const svgElement = content.firstChild;\n content.removeChild(svgElement);\n reparentNodes(content, svgElement.firstChild);\n return template;\n }\n}\n//# sourceMappingURL=template-result.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nimport { isDirective } from './directive.js';\nimport { removeNodes } from './dom.js';\nimport { noChange, nothing } from './part.js';\nimport { TemplateInstance } from './template-instance.js';\nimport { TemplateResult } from './template-result.js';\nimport { createMarker } from './template.js';\nexport const isPrimitive = (value) => {\n return (value === null ||\n !(typeof value === 'object' || typeof value === 'function'));\n};\nexport const isIterable = (value) => {\n return Array.isArray(value) ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !!(value && value[Symbol.iterator]);\n};\n/**\n * Writes attribute values to the DOM for a group of AttributeParts bound to a\n * single attribute. The value is only set once even if there are multiple parts\n * for an attribute.\n */\nexport class AttributeCommitter {\n constructor(element, name, strings) {\n this.dirty = true;\n this.element = element;\n this.name = name;\n this.strings = strings;\n this.parts = [];\n for (let i = 0; i < strings.length - 1; i++) {\n this.parts[i] = this._createPart();\n }\n }\n /**\n * Creates a single part. Override this to create a differnt type of part.\n */\n _createPart() {\n return new AttributePart(this);\n }\n _getValue() {\n const strings = this.strings;\n const l = strings.length - 1;\n const parts = this.parts;\n // If we're assigning an attribute via syntax like:\n // attr=\"${foo}\" or attr=${foo}\n // but not\n // attr=\"${foo} ${bar}\" or attr=\"${foo} baz\"\n // then we don't want to coerce the attribute value into one long\n // string. Instead we want to just return the value itself directly,\n // so that sanitizeDOMValue can get the actual value rather than\n // String(value)\n // The exception is if v is an array, in which case we do want to smash\n // it together into a string without calling String() on the array.\n //\n // This also allows trusted values (when using TrustedTypes) being\n // assigned to DOM sinks without being stringified in the process.\n if (l === 1 && strings[0] === '' && strings[1] === '') {\n const v = parts[0].value;\n if (typeof v === 'symbol') {\n return String(v);\n }\n if (typeof v === 'string' || !isIterable(v)) {\n return v;\n }\n }\n let text = '';\n for (let i = 0; i < l; i++) {\n text += strings[i];\n const part = parts[i];\n if (part !== undefined) {\n const v = part.value;\n if (isPrimitive(v) || !isIterable(v)) {\n text += typeof v === 'string' ? v : String(v);\n }\n else {\n for (const t of v) {\n text += typeof t === 'string' ? t : String(t);\n }\n }\n }\n }\n text += strings[l];\n return text;\n }\n commit() {\n if (this.dirty) {\n this.dirty = false;\n this.element.setAttribute(this.name, this._getValue());\n }\n }\n}\n/**\n * A Part that controls all or part of an attribute value.\n */\nexport class AttributePart {\n constructor(committer) {\n this.value = undefined;\n this.committer = committer;\n }\n setValue(value) {\n if (value !== noChange && (!isPrimitive(value) || value !== this.value)) {\n this.value = value;\n // If the value is a not a directive, dirty the committer so that it'll\n // call setAttribute. If the value is a directive, it'll dirty the\n // committer if it calls setValue().\n if (!isDirective(value)) {\n this.committer.dirty = true;\n }\n }\n }\n commit() {\n while (isDirective(this.value)) {\n const directive = this.value;\n this.value = noChange;\n directive(this);\n }\n if (this.value === noChange) {\n return;\n }\n this.committer.commit();\n }\n}\n/**\n * A Part that controls a location within a Node tree. Like a Range, NodePart\n * has start and end locations and can set and update the Nodes between those\n * locations.\n *\n * NodeParts support several value types: primitives, Nodes, TemplateResults,\n * as well as arrays and iterables of those types.\n */\nexport class NodePart {\n constructor(options) {\n this.value = undefined;\n this.__pendingValue = undefined;\n this.options = options;\n }\n /**\n * Appends this part into a container.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n appendInto(container) {\n this.startNode = container.appendChild(createMarker());\n this.endNode = container.appendChild(createMarker());\n }\n /**\n * Inserts this part after the `ref` node (between `ref` and `ref`'s next\n * sibling). Both `ref` and its next sibling must be static, unchanging nodes\n * such as those that appear in a literal section of a template.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n insertAfterNode(ref) {\n this.startNode = ref;\n this.endNode = ref.nextSibling;\n }\n /**\n * Appends this part into a parent part.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n appendIntoPart(part) {\n part.__insert(this.startNode = createMarker());\n part.__insert(this.endNode = createMarker());\n }\n /**\n * Inserts this part after the `ref` part.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n insertAfterPart(ref) {\n ref.__insert(this.startNode = createMarker());\n this.endNode = ref.endNode;\n ref.endNode = this.startNode;\n }\n setValue(value) {\n this.__pendingValue = value;\n }\n commit() {\n if (this.startNode.parentNode === null) {\n return;\n }\n while (isDirective(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = noChange;\n directive(this);\n }\n const value = this.__pendingValue;\n if (value === noChange) {\n return;\n }\n if (isPrimitive(value)) {\n if (value !== this.value) {\n this.__commitText(value);\n }\n }\n else if (value instanceof TemplateResult) {\n this.__commitTemplateResult(value);\n }\n else if (value instanceof Node) {\n this.__commitNode(value);\n }\n else if (isIterable(value)) {\n this.__commitIterable(value);\n }\n else if (value === nothing) {\n this.value = nothing;\n this.clear();\n }\n else {\n // Fallback, will render the string representation\n this.__commitText(value);\n }\n }\n __insert(node) {\n this.endNode.parentNode.insertBefore(node, this.endNode);\n }\n __commitNode(value) {\n if (this.value === value) {\n return;\n }\n this.clear();\n this.__insert(value);\n this.value = value;\n }\n __commitText(value) {\n const node = this.startNode.nextSibling;\n value = value == null ? '' : value;\n // If `value` isn't already a string, we explicitly convert it here in case\n // it can't be implicitly converted - i.e. it's a symbol.\n const valueAsString = typeof value === 'string' ? value : String(value);\n if (node === this.endNode.previousSibling &&\n node.nodeType === 3 /* Node.TEXT_NODE */) {\n // If we only have a single text node between the markers, we can just\n // set its value, rather than replacing it.\n // TODO(justinfagnani): Can we just check if this.value is primitive?\n node.data = valueAsString;\n }\n else {\n this.__commitNode(document.createTextNode(valueAsString));\n }\n this.value = value;\n }\n __commitTemplateResult(value) {\n const template = this.options.templateFactory(value);\n if (this.value instanceof TemplateInstance &&\n this.value.template === template) {\n this.value.update(value.values);\n }\n else {\n // Make sure we propagate the template processor from the TemplateResult\n // so that we use its syntax extension, etc. The template factory comes\n // from the render function options so that it can control template\n // caching and preprocessing.\n const instance = new TemplateInstance(template, value.processor, this.options);\n const fragment = instance._clone();\n instance.update(value.values);\n this.__commitNode(fragment);\n this.value = instance;\n }\n }\n __commitIterable(value) {\n // For an Iterable, we create a new InstancePart per item, then set its\n // value to the item. This is a little bit of overhead for every item in\n // an Iterable, but it lets us recurse easily and efficiently update Arrays\n // of TemplateResults that will be commonly returned from expressions like:\n // array.map((i) => html`${i}`), by reusing existing TemplateInstances.\n // If _value is an array, then the previous render was of an\n // iterable and _value will contain the NodeParts from the previous\n // render. If _value is not an array, clear this part and make a new\n // array for NodeParts.\n if (!Array.isArray(this.value)) {\n this.value = [];\n this.clear();\n }\n // Lets us keep track of how many items we stamped so we can clear leftover\n // items from a previous render\n const itemParts = this.value;\n let partIndex = 0;\n let itemPart;\n for (const item of value) {\n // Try to reuse an existing part\n itemPart = itemParts[partIndex];\n // If no existing part, create a new one\n if (itemPart === undefined) {\n itemPart = new NodePart(this.options);\n itemParts.push(itemPart);\n if (partIndex === 0) {\n itemPart.appendIntoPart(this);\n }\n else {\n itemPart.insertAfterPart(itemParts[partIndex - 1]);\n }\n }\n itemPart.setValue(item);\n itemPart.commit();\n partIndex++;\n }\n if (partIndex < itemParts.length) {\n // Truncate the parts array so _value reflects the current state\n itemParts.length = partIndex;\n this.clear(itemPart && itemPart.endNode);\n }\n }\n clear(startNode = this.startNode) {\n removeNodes(this.startNode.parentNode, startNode.nextSibling, this.endNode);\n }\n}\n/**\n * Implements a boolean attribute, roughly as defined in the HTML\n * specification.\n *\n * If the value is truthy, then the attribute is present with a value of\n * ''. If the value is falsey, the attribute is removed.\n */\nexport class BooleanAttributePart {\n constructor(element, name, strings) {\n this.value = undefined;\n this.__pendingValue = undefined;\n if (strings.length !== 2 || strings[0] !== '' || strings[1] !== '') {\n throw new Error('Boolean attributes can only contain a single expression');\n }\n this.element = element;\n this.name = name;\n this.strings = strings;\n }\n setValue(value) {\n this.__pendingValue = value;\n }\n commit() {\n while (isDirective(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = noChange;\n directive(this);\n }\n if (this.__pendingValue === noChange) {\n return;\n }\n const value = !!this.__pendingValue;\n if (this.value !== value) {\n if (value) {\n this.element.setAttribute(this.name, '');\n }\n else {\n this.element.removeAttribute(this.name);\n }\n this.value = value;\n }\n this.__pendingValue = noChange;\n }\n}\n/**\n * Sets attribute values for PropertyParts, so that the value is only set once\n * even if there are multiple parts for a property.\n *\n * If an expression controls the whole property value, then the value is simply\n * assigned to the property under control. If there are string literals or\n * multiple expressions, then the strings are expressions are interpolated into\n * a string first.\n */\nexport class PropertyCommitter extends AttributeCommitter {\n constructor(element, name, strings) {\n super(element, name, strings);\n this.single =\n (strings.length === 2 && strings[0] === '' && strings[1] === '');\n }\n _createPart() {\n return new PropertyPart(this);\n }\n _getValue() {\n if (this.single) {\n return this.parts[0].value;\n }\n return super._getValue();\n }\n commit() {\n if (this.dirty) {\n this.dirty = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.element[this.name] = this._getValue();\n }\n }\n}\nexport class PropertyPart extends AttributePart {\n}\n// Detect event listener options support. If the `capture` property is read\n// from the options object, then options are supported. If not, then the third\n// argument to add/removeEventListener is interpreted as the boolean capture\n// value so we should only pass the `capture` property.\nlet eventOptionsSupported = false;\n// Wrap into an IIFE because MS Edge <= v41 does not support having try/catch\n// blocks right into the body of a module\n(() => {\n try {\n const options = {\n get capture() {\n eventOptionsSupported = true;\n return false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n window.addEventListener('test', options, options);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n window.removeEventListener('test', options, options);\n }\n catch (_e) {\n // event options not supported\n }\n})();\nexport class EventPart {\n constructor(element, eventName, eventContext) {\n this.value = undefined;\n this.__pendingValue = undefined;\n this.element = element;\n this.eventName = eventName;\n this.eventContext = eventContext;\n this.__boundHandleEvent = (e) => this.handleEvent(e);\n }\n setValue(value) {\n this.__pendingValue = value;\n }\n commit() {\n while (isDirective(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = noChange;\n directive(this);\n }\n if (this.__pendingValue === noChange) {\n return;\n }\n const newListener = this.__pendingValue;\n const oldListener = this.value;\n const shouldRemoveListener = newListener == null ||\n oldListener != null &&\n (newListener.capture !== oldListener.capture ||\n newListener.once !== oldListener.once ||\n newListener.passive !== oldListener.passive);\n const shouldAddListener = newListener != null && (oldListener == null || shouldRemoveListener);\n if (shouldRemoveListener) {\n this.element.removeEventListener(this.eventName, this.__boundHandleEvent, this.__options);\n }\n if (shouldAddListener) {\n this.__options = getOptions(newListener);\n this.element.addEventListener(this.eventName, this.__boundHandleEvent, this.__options);\n }\n this.value = newListener;\n this.__pendingValue = noChange;\n }\n handleEvent(event) {\n if (typeof this.value === 'function') {\n this.value.call(this.eventContext || this.element, event);\n }\n else {\n this.value.handleEvent(event);\n }\n }\n}\n// We copy options because of the inconsistent behavior of browsers when reading\n// the third argument of add/removeEventListener. IE11 doesn't support options\n// at all. Chrome 41 only reads `capture` if the argument is an object.\nconst getOptions = (o) => o &&\n (eventOptionsSupported ?\n { capture: o.capture, passive: o.passive, once: o.once } :\n o.capture);\n//# sourceMappingURL=parts.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nimport { AttributeCommitter, BooleanAttributePart, EventPart, NodePart, PropertyCommitter } from './parts.js';\n/**\n * Creates Parts when a template is instantiated.\n */\nexport class DefaultTemplateProcessor {\n /**\n * Create parts for an attribute-position binding, given the event, attribute\n * name, and string literals.\n *\n * @param element The element containing the binding\n * @param name The attribute name\n * @param strings The string literals. There are always at least two strings,\n * event for fully-controlled bindings with a single expression.\n */\n handleAttributeExpressions(element, name, strings, options) {\n const prefix = name[0];\n if (prefix === '.') {\n const committer = new PropertyCommitter(element, name.slice(1), strings);\n return committer.parts;\n }\n if (prefix === '@') {\n return [new EventPart(element, name.slice(1), options.eventContext)];\n }\n if (prefix === '?') {\n return [new BooleanAttributePart(element, name.slice(1), strings)];\n }\n const committer = new AttributeCommitter(element, name, strings);\n return committer.parts;\n }\n /**\n * Create parts for a text-position binding.\n * @param templateFactory\n */\n handleTextExpression(options) {\n return new NodePart(options);\n }\n}\nexport const defaultTemplateProcessor = new DefaultTemplateProcessor();\n//# sourceMappingURL=default-template-processor.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nimport { marker, Template } from './template.js';\n/**\n * The default TemplateFactory which caches Templates keyed on\n * result.type and result.strings.\n */\nexport function templateFactory(result) {\n let templateCache = templateCaches.get(result.type);\n if (templateCache === undefined) {\n templateCache = {\n stringsArray: new WeakMap(),\n keyString: new Map()\n };\n templateCaches.set(result.type, templateCache);\n }\n let template = templateCache.stringsArray.get(result.strings);\n if (template !== undefined) {\n return template;\n }\n // If the TemplateStringsArray is new, generate a key from the strings\n // This key is shared between all templates with identical content\n const key = result.strings.join(marker);\n // Check if we already have a Template for this key\n template = templateCache.keyString.get(key);\n if (template === undefined) {\n // If we have not seen this key before, create a new Template\n template = new Template(result, result.getTemplateElement());\n // Cache the Template for this key\n templateCache.keyString.set(key, template);\n }\n // Cache all future queries for this TemplateStringsArray\n templateCache.stringsArray.set(result.strings, template);\n return template;\n}\nexport const templateCaches = new Map();\n//# sourceMappingURL=template-factory.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nimport { removeNodes } from './dom.js';\nimport { NodePart } from './parts.js';\nimport { templateFactory } from './template-factory.js';\nexport const parts = new WeakMap();\n/**\n * Renders a template result or other value to a container.\n *\n * To update a container with new values, reevaluate the template literal and\n * call `render` with the new result.\n *\n * @param result Any value renderable by NodePart - typically a TemplateResult\n * created by evaluating a template tag like `html` or `svg`.\n * @param container A DOM parent to render to. The entire contents are either\n * replaced, or efficiently updated if the same result type was previous\n * rendered there.\n * @param options RenderOptions for the entire render tree rendered to this\n * container. Render options must *not* change between renders to the same\n * container, as those changes will not effect previously rendered DOM.\n */\nexport const render = (result, container, options) => {\n let part = parts.get(container);\n if (part === undefined) {\n removeNodes(container, container.firstChild);\n parts.set(container, part = new NodePart(Object.assign({ templateFactory }, options)));\n part.appendInto(container);\n }\n part.setValue(result);\n part.commit();\n};\n//# sourceMappingURL=render.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n *\n * Main lit-html module.\n *\n * Main exports:\n *\n * - [[html]]\n * - [[svg]]\n * - [[render]]\n *\n * @packageDocumentation\n */\n/**\n * Do not remove this comment; it keeps typedoc from misplacing the module\n * docs.\n */\nimport { defaultTemplateProcessor } from './lib/default-template-processor.js';\nimport { SVGTemplateResult, TemplateResult } from './lib/template-result.js';\nexport { DefaultTemplateProcessor, defaultTemplateProcessor } from './lib/default-template-processor.js';\nexport { directive, isDirective } from './lib/directive.js';\n// TODO(justinfagnani): remove line when we get NodePart moving methods\nexport { removeNodes, reparentNodes } from './lib/dom.js';\nexport { noChange, nothing } from './lib/part.js';\nexport { AttributeCommitter, AttributePart, BooleanAttributePart, EventPart, isIterable, isPrimitive, NodePart, PropertyCommitter, PropertyPart } from './lib/parts.js';\nexport { parts, render } from './lib/render.js';\nexport { templateCaches, templateFactory } from './lib/template-factory.js';\nexport { TemplateInstance } from './lib/template-instance.js';\nexport { SVGTemplateResult, TemplateResult } from './lib/template-result.js';\nexport { createMarker, isTemplatePartActive, Template } from './lib/template.js';\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for lit-html usage.\n// TODO(justinfagnani): inject version number at build time\nif (typeof window !== 'undefined') {\n (window['litHtmlVersions'] || (window['litHtmlVersions'] = [])).push('1.3.0');\n}\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n */\nexport const html = (strings, ...values) => new TemplateResult(strings, values, 'html', defaultTemplateProcessor);\n/**\n * Interprets a template literal as an SVG template that can efficiently\n * render to and update a container.\n */\nexport const svg = (strings, ...values) => new SVGTemplateResult(strings, values, 'svg', defaultTemplateProcessor);\n//# sourceMappingURL=lit-html.js.map","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nexport const CONFIG_ALIASES = {\n row_pivot: \"row_pivots\",\n \"row-pivot\": \"row_pivots\",\n \"row-pivots\": \"row_pivots\",\n col_pivot: \"column_pivots\",\n col_pivots: \"column_pivots\",\n column_pivot: \"column_pivots\",\n \"column-pivot\": \"column_pivots\",\n \"column-pivots\": \"column_pivots\",\n filters: \"filter\",\n sorts: \"sort\"\n};\n\nexport const CONFIG_VALID_KEYS = [\"viewport\", \"row_pivots\", \"column_pivots\", \"aggregates\", \"columns\", \"filter\", \"sort\", \"computed_columns\", \"row_pivot_depth\", \"filter_op\"];\n\nconst NUMBER_AGGREGATES = [\n \"any\",\n \"avg\",\n \"abs sum\",\n \"count\",\n \"distinct count\",\n \"dominant\",\n \"first by index\",\n \"last by index\",\n \"last\",\n \"high\",\n \"low\",\n \"mean\",\n \"median\",\n \"pct sum parent\",\n \"pct sum grand total\",\n \"sum\",\n \"sum abs\",\n \"sum not null\",\n \"unique\"\n];\n\nconst STRING_AGGREGATES = [\"any\", \"count\", \"distinct count\", \"distinct leaf\", \"dominant\", \"first by index\", \"last by index\", \"last\", \"unique\"];\n\nconst BOOLEAN_AGGREGATES = [\"any\", \"count\", \"distinct count\", \"distinct leaf\", \"dominant\", \"first by index\", \"last by index\", \"last\", \"unique\", \"and\", \"or\"];\n\nexport const SORT_ORDERS = [\"none\", \"asc\", \"desc\", \"col asc\", \"col desc\", \"asc abs\", \"desc abs\", \"col asc abs\", \"col desc abs\"];\n\nexport const SORT_ORDER_IDS = [2, 0, 1, 0, 1, 3, 4, 3, 4];\n\nexport const TYPE_AGGREGATES = {\n string: STRING_AGGREGATES,\n float: NUMBER_AGGREGATES,\n integer: NUMBER_AGGREGATES,\n boolean: BOOLEAN_AGGREGATES,\n datetime: STRING_AGGREGATES,\n date: STRING_AGGREGATES\n};\n\nexport const FILTER_OPERATORS = {\n lessThan: \"<\",\n greaterThan: \">\",\n equals: \"==\",\n lessThanOrEquals: \"<=\",\n greaterThanOrEquals: \">=\",\n doesNotEqual: \"!=\",\n isNull: \"is null\",\n isNotNull: \"is not null\",\n isIn: \"in\",\n isNotIn: \"not in\",\n contains: \"contains\",\n bitwiseAnd: \"&\",\n bitwiseOr: \"|\",\n and: \"and\",\n or: \"or\",\n beginsWith: \"begins with\",\n endsWith: \"ends with\"\n};\n\nconst BOOLEAN_FILTERS = [\n FILTER_OPERATORS.bitwiseAnd,\n FILTER_OPERATORS.bitwiseOr,\n FILTER_OPERATORS.equals,\n FILTER_OPERATORS.doesNotEqual,\n FILTER_OPERATORS.or,\n FILTER_OPERATORS.and,\n FILTER_OPERATORS.isNull,\n FILTER_OPERATORS.isNotNull\n];\n\nconst NUMBER_FILTERS = [\n FILTER_OPERATORS.lessThan,\n FILTER_OPERATORS.greaterThan,\n FILTER_OPERATORS.equals,\n FILTER_OPERATORS.lessThanOrEquals,\n FILTER_OPERATORS.greaterThanOrEquals,\n FILTER_OPERATORS.doesNotEqual,\n FILTER_OPERATORS.isNull,\n FILTER_OPERATORS.isNotNull\n];\n\nconst STRING_FILTERS = [\n FILTER_OPERATORS.equals,\n FILTER_OPERATORS.contains,\n FILTER_OPERATORS.doesNotEqual,\n FILTER_OPERATORS.isIn,\n FILTER_OPERATORS.isNotIn,\n FILTER_OPERATORS.beginsWith,\n FILTER_OPERATORS.endsWith,\n FILTER_OPERATORS.isNull,\n FILTER_OPERATORS.isNotNull\n];\n\nconst DATETIME_FILTERS = [\n FILTER_OPERATORS.lessThan,\n FILTER_OPERATORS.greaterThan,\n FILTER_OPERATORS.equals,\n FILTER_OPERATORS.lessThanOrEquals,\n FILTER_OPERATORS.greaterThanOrEquals,\n FILTER_OPERATORS.doesNotEqual,\n FILTER_OPERATORS.isNull,\n FILTER_OPERATORS.isNotNull\n];\n\nexport const COLUMN_SEPARATOR_STRING = \"|\";\n\nexport const TYPE_FILTERS = {\n string: STRING_FILTERS,\n float: NUMBER_FILTERS,\n integer: NUMBER_FILTERS,\n boolean: BOOLEAN_FILTERS,\n datetime: DATETIME_FILTERS,\n date: DATETIME_FILTERS\n};\n","/*\n\nForked from https://github.com/timruffles/mobile-drag-drop/ v2.3.0-rc.2\n\nCopyright (c) 2013 Tim Ruffles\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nconst CLASS_PREFIX = \"dnd-poly-\";\nconst CLASS_DRAG_IMAGE = CLASS_PREFIX + \"drag-image\";\nconst CLASS_DRAG_IMAGE_SNAPBACK = CLASS_PREFIX + \"snapback\";\nconst CLASS_DRAG_OPERATION_ICON = CLASS_PREFIX + \"icon\";\nconst EVENT_PREFIX = \"dnd-poly-\";\nconst EVENT_DRAG_DRAGSTART_PENDING = EVENT_PREFIX + \"dragstart-pending\";\nconst EVENT_DRAG_DRAGSTART_CANCEL = EVENT_PREFIX + \"dragstart-cancel\";\nconst ALLOWED_EFFECTS = [\"none\", \"copy\", \"copyLink\", \"copyMove\", \"link\", \"linkMove\", \"move\", \"all\"];\nconst DROP_EFFECTS = [\"none\", \"copy\", \"move\", \"link\"];\n\nfunction detectFeatures() {\n const features = {\n dragEvents: \"ondragstart\" in document.documentElement,\n draggable: \"draggable\" in document.documentElement,\n userAgentSupportingNativeDnD: undefined\n };\n const isBlinkEngine = !!window.chrome || /chrome/i.test(navigator.userAgent);\n features.userAgentSupportingNativeDnD = !(/iPad|iPhone|iPod|Android/.test(navigator.userAgent) || (isBlinkEngine && \"ontouchstart\" in document.documentElement));\n return features;\n}\nfunction supportsPassiveEventListener() {\n let supportsPassiveEventListeners = false;\n try {\n const opts = Object.defineProperty({}, \"passive\", {\n get: function() {\n supportsPassiveEventListeners = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n } catch (e) {}\n return supportsPassiveEventListeners;\n}\n\nconst supportsPassive = supportsPassiveEventListener();\nfunction isDOMElement(object) {\n return object && object.tagName;\n}\nfunction addDocumentListener(ev, handler, passive) {\n if (passive === void 0) {\n passive = true;\n }\n document.addEventListener(ev, handler, supportsPassive ? {passive: passive} : false);\n}\nfunction removeDocumentListener(ev, handler) {\n document.removeEventListener(ev, handler);\n}\nfunction onEvt(el, event, handler, capture) {\n if (capture === void 0) {\n capture = false;\n }\n const options = supportsPassive ? {passive: true, capture: capture} : capture;\n el.addEventListener(event, handler, options);\n return {\n off: function() {\n el.removeEventListener(event, handler, options);\n }\n };\n}\nfunction prepareNodeCopyAsDragImage(srcNode, dstNode) {\n if (srcNode.nodeType === 1) {\n const cs = getComputedStyle(srcNode);\n for (let i = 0; i < cs.length; i++) {\n const csName = cs[i];\n dstNode.style.setProperty(csName, cs.getPropertyValue(csName), cs.getPropertyPriority(csName));\n }\n dstNode.style.pointerEvents = \"none\";\n dstNode.removeAttribute(\"id\");\n dstNode.removeAttribute(\"class\");\n dstNode.removeAttribute(\"draggable\");\n if (dstNode.nodeName === \"CANVAS\") {\n const canvasSrc = srcNode;\n const canvasDst = dstNode;\n const canvasSrcImgData = canvasSrc.getContext(\"2d\").getImageData(0, 0, canvasSrc.width, canvasSrc.height);\n canvasDst.getContext(\"2d\").putImageData(canvasSrcImgData, 0, 0);\n }\n }\n if (srcNode.hasChildNodes()) {\n for (let i = 0; i < srcNode.childNodes.length; i++) {\n prepareNodeCopyAsDragImage(srcNode.childNodes[i], dstNode.childNodes[i]);\n }\n }\n}\nfunction createDragImage(sourceNode) {\n const dragImage = sourceNode.cloneNode(true);\n prepareNodeCopyAsDragImage(sourceNode, dragImage);\n return dragImage;\n}\nfunction average(array) {\n if (array.length === 0) {\n return 0;\n }\n return (\n array.reduce(function(s, v) {\n return v + s;\n }, 0) / array.length\n );\n}\nfunction isTouchIdentifierContainedInTouchEvent(touchEvent, touchIdentifier) {\n for (let i = 0; i < touchEvent.changedTouches.length; i++) {\n const touch = touchEvent.changedTouches[i];\n if (touch.identifier === touchIdentifier) {\n return true;\n }\n }\n return false;\n}\nfunction updateCentroidCoordinatesOfTouchesIn(coordinateProp, event, outPoint) {\n const pageXs = [],\n pageYs = [];\n for (let i = 0; i < event.touches.length; i++) {\n const touch = event.touches[i];\n pageXs.push(touch[coordinateProp + \"X\"]);\n pageYs.push(touch[coordinateProp + \"Y\"]);\n }\n outPoint.x = average(pageXs);\n outPoint.y = average(pageYs);\n}\nconst TRANSFORM_CSS_VENDOR_PREFIXES = [\"\", \"-webkit-\"];\nfunction extractTransformStyles(sourceNode) {\n return TRANSFORM_CSS_VENDOR_PREFIXES.map(function(prefix) {\n const transform = sourceNode.style[prefix + \"transform\"];\n if (!transform || transform === \"none\") {\n return \"\";\n }\n return transform.replace(/translate\\(\\D*\\d+[^,]*,\\D*\\d+[^,]*\\)\\s*/g, \"\");\n });\n}\nfunction translateElementToPoint(element, pnt, originalTransforms, offset, centerOnCoordinates) {\n if (centerOnCoordinates === void 0) {\n centerOnCoordinates = true;\n }\n let x = pnt.x,\n y = pnt.y;\n if (offset) {\n x += offset.x;\n y += offset.y;\n }\n if (centerOnCoordinates) {\n x -= parseInt(element.offsetWidth, 10) / 2;\n y -= parseInt(element.offsetHeight, 10) / 2;\n }\n const translate = \"translate3d(\" + x + \"px,\" + y + \"px, 0)\";\n for (let i = 0; i < TRANSFORM_CSS_VENDOR_PREFIXES.length; i++) {\n const transformProp = TRANSFORM_CSS_VENDOR_PREFIXES[i] + \"transform\";\n element.style[transformProp] = translate + \" \" + originalTransforms[i];\n }\n}\nfunction applyDragImageSnapback(sourceEl, dragImage, dragImageTransforms, transitionEndCb) {\n const cs = getComputedStyle(sourceEl);\n if (cs.visibility === \"hidden\" || cs.display === \"none\") {\n console.log(\"dnd-poly: source node is not visible. skipping snapback transition.\");\n transitionEndCb();\n return;\n }\n dragImage.classList.add(CLASS_DRAG_IMAGE_SNAPBACK);\n const csDragImage = getComputedStyle(dragImage);\n const durationInS = parseFloat(csDragImage.transitionDuration);\n if (isNaN(durationInS) || durationInS === 0) {\n console.log(\"dnd-poly: no transition used - skipping snapback\");\n transitionEndCb();\n return;\n }\n console.log(\"dnd-poly: starting dragimage snap back\");\n const rect = sourceEl.getBoundingClientRect();\n const pnt = {\n x: rect.left,\n y: rect.top\n };\n pnt.x += document.body.scrollLeft || document.documentElement.scrollLeft;\n pnt.y += document.body.scrollTop || document.documentElement.scrollTop;\n pnt.x -= parseInt(cs.marginLeft, 10);\n pnt.y -= parseInt(cs.marginTop, 10);\n const delayInS = parseFloat(csDragImage.transitionDelay);\n const durationInMs = Math.round((durationInS + delayInS) * 1000);\n translateElementToPoint(dragImage, pnt, dragImageTransforms, undefined, false);\n setTimeout(transitionEndCb, durationInMs);\n}\n\nconst DataTransfer = (function() {\n function DataTransfer(_dataStore, _setDragImageHandler) {\n this._dataStore = _dataStore;\n this._setDragImageHandler = _setDragImageHandler;\n this._dropEffect = DROP_EFFECTS[0];\n }\n Object.defineProperty(DataTransfer.prototype, \"dropEffect\", {\n get: function() {\n return this._dropEffect;\n },\n set: function(value) {\n if (this._dataStore.mode !== 0 && ALLOWED_EFFECTS.indexOf(value) > -1) {\n this._dropEffect = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataTransfer.prototype, \"types\", {\n get: function() {\n if (this._dataStore.mode !== 0) {\n return Object.freeze(this._dataStore.types);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataTransfer.prototype, \"effectAllowed\", {\n get: function() {\n return this._dataStore.effectAllowed;\n },\n set: function(value) {\n if (this._dataStore.mode === 2 && ALLOWED_EFFECTS.indexOf(value) > -1) {\n this._dataStore.effectAllowed = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n DataTransfer.prototype.setData = function(type, data) {\n if (this._dataStore.mode === 2) {\n if (type.indexOf(\" \") > -1) {\n throw new Error(\"illegal arg: type contains space\");\n }\n this._dataStore.data[type] = data;\n if (this._dataStore.types.indexOf(type) === -1) {\n this._dataStore.types.push(type);\n }\n }\n };\n DataTransfer.prototype.getData = function(type) {\n if (this._dataStore.mode === 1 || this._dataStore.mode === 2) {\n return this._dataStore.data[type] || \"\";\n }\n };\n DataTransfer.prototype.clearData = function(format) {\n if (this._dataStore.mode === 2) {\n if (format && this._dataStore.data[format]) {\n delete this._dataStore.data[format];\n const index = this._dataStore.types.indexOf(format);\n if (index > -1) {\n this._dataStore.types.splice(index, 1);\n }\n return;\n }\n this._dataStore.data = {};\n this._dataStore.types = [];\n }\n };\n DataTransfer.prototype.setDragImage = function(image, x, y) {\n if (this._dataStore.mode === 2) {\n this._setDragImageHandler(image, x, y);\n }\n };\n return DataTransfer;\n})();\n\nfunction tryFindDraggableTarget(event) {\n let el = event.target;\n do {\n if (el.draggable === false) {\n continue;\n }\n if (el.draggable === true) {\n return el;\n }\n if (el.getAttribute && el.getAttribute(\"draggable\") === \"true\") {\n return el;\n }\n } while ((el = el.parentNode) && el !== document.body);\n}\nfunction determineDropEffect(effectAllowed, sourceNode) {\n if (!effectAllowed) {\n if (sourceNode.nodeType === 3 && sourceNode.tagName === \"A\") {\n return DROP_EFFECTS[3];\n }\n return DROP_EFFECTS[1];\n }\n if (effectAllowed === ALLOWED_EFFECTS[0]) {\n return DROP_EFFECTS[0];\n }\n if (effectAllowed.indexOf(ALLOWED_EFFECTS[1]) === 0 || effectAllowed === ALLOWED_EFFECTS[7]) {\n return DROP_EFFECTS[1];\n }\n if (effectAllowed.indexOf(ALLOWED_EFFECTS[4]) === 0) {\n return DROP_EFFECTS[3];\n }\n if (effectAllowed === ALLOWED_EFFECTS[6]) {\n return DROP_EFFECTS[2];\n }\n return DROP_EFFECTS[1];\n}\nfunction createDragEventFromTouch(targetElement, e, type, cancelable, window, dataTransfer, relatedTarget) {\n if (relatedTarget === void 0) {\n relatedTarget = null;\n }\n const touch = e.changedTouches[0];\n const dndEvent = new Event(type, {\n bubbles: true,\n cancelable: cancelable\n });\n dndEvent.dataTransfer = dataTransfer;\n dndEvent.relatedTarget = relatedTarget;\n dndEvent.screenX = touch.screenX;\n dndEvent.screenY = touch.screenY;\n dndEvent.clientX = touch.clientX;\n dndEvent.clientY = touch.clientY;\n dndEvent.pageX = touch.pageX;\n dndEvent.pageY = touch.pageY;\n const targetRect = targetElement.getBoundingClientRect();\n dndEvent.offsetX = dndEvent.clientX - targetRect.left;\n dndEvent.offsetY = dndEvent.clientY - targetRect.top;\n return dndEvent;\n}\nfunction dispatchDragEvent(dragEvent, targetElement, touchEvent, dataStore, dataTransfer, cancelable, relatedTarget) {\n if (cancelable === void 0) {\n cancelable = true;\n }\n if (relatedTarget === void 0) {\n relatedTarget = null;\n }\n console.log(\"dnd-poly: dispatching \" + dragEvent);\n const leaveEvt = createDragEventFromTouch(targetElement, touchEvent, dragEvent, cancelable, document.defaultView, dataTransfer, relatedTarget);\n const cancelled = !targetElement.dispatchEvent(leaveEvt);\n dataStore.mode = 0;\n return cancelled;\n}\nfunction determineDragOperation(effectAllowed, dropEffect) {\n if (!effectAllowed || effectAllowed === ALLOWED_EFFECTS[7]) {\n return dropEffect;\n }\n if (dropEffect === DROP_EFFECTS[1]) {\n if (effectAllowed.indexOf(DROP_EFFECTS[1]) === 0) {\n return DROP_EFFECTS[1];\n }\n } else if (dropEffect === DROP_EFFECTS[3]) {\n if (effectAllowed.indexOf(DROP_EFFECTS[3]) === 0 || effectAllowed.indexOf(\"Link\") > -1) {\n return DROP_EFFECTS[3];\n }\n } else if (dropEffect === DROP_EFFECTS[2]) {\n if (effectAllowed.indexOf(DROP_EFFECTS[2]) === 0 || effectAllowed.indexOf(\"Move\") > -1) {\n return DROP_EFFECTS[2];\n }\n }\n return DROP_EFFECTS[0];\n}\n\nconst DragOperationController = (function() {\n function DragOperationController(_initialEvent, _config, _sourceNode, _dragOperationEndedCb) {\n this._initialEvent = _initialEvent;\n this._config = _config;\n this._sourceNode = _sourceNode;\n this._dragOperationEndedCb = _dragOperationEndedCb;\n this._dragOperationState = 0;\n this._immediateUserSelection = null;\n this._currentDropTarget = null;\n console.log(\"dnd-poly: setting up potential drag operation..\");\n this._lastTouchEvent = _initialEvent;\n this._initialTouch = _initialEvent.changedTouches[0];\n this._touchMoveHandler = this._onTouchMove.bind(this);\n this._touchEndOrCancelHandler = this._onTouchEndOrCancel.bind(this);\n addDocumentListener(\"touchmove\", this._touchMoveHandler, false);\n addDocumentListener(\"touchend\", this._touchEndOrCancelHandler, false);\n addDocumentListener(\"touchcancel\", this._touchEndOrCancelHandler, false);\n }\n DragOperationController.prototype._setup = function() {\n const _this = this;\n console.log(\"dnd-poly: starting drag and drop operation\");\n this._dragOperationState = 1;\n this._currentDragOperation = DROP_EFFECTS[0];\n this._dragDataStore = {\n data: {},\n effectAllowed: undefined,\n mode: 3,\n types: []\n };\n this._currentHotspotCoordinates = {\n x: null,\n y: null\n };\n this._dragImagePageCoordinates = {\n x: null,\n y: null\n };\n let dragImageSrc = this._sourceNode;\n this._dataTransfer = new DataTransfer(this._dragDataStore, function(element, x, y) {\n dragImageSrc = element;\n if (typeof x === \"number\" || typeof y === \"number\") {\n _this._dragImageOffset = {\n x: x || 0,\n y: y || 0\n };\n }\n });\n this._dragDataStore.mode = 2;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n if (dispatchDragEvent(\"dragstart\", this._sourceNode, this._lastTouchEvent, this._dragDataStore, this._dataTransfer)) {\n console.log(\"dnd-poly: dragstart cancelled\");\n this._dragOperationState = 3;\n this._cleanup();\n return false;\n }\n updateCentroidCoordinatesOfTouchesIn(\"page\", this._lastTouchEvent, this._dragImagePageCoordinates);\n const dragImage = this._config.dragImageSetup(dragImageSrc);\n this._dragImageTransforms = extractTransformStyles(dragImage);\n dragImage.style.position = \"absolute\";\n dragImage.style.left = \"0px\";\n dragImage.style.top = \"0px\";\n dragImage.style.zIndex = \"999999\";\n dragImage.classList.add(CLASS_DRAG_IMAGE);\n dragImage.classList.add(CLASS_DRAG_OPERATION_ICON);\n this._dragImage = dragImage;\n if (!this._dragImageOffset) {\n if (this._config.dragImageOffset) {\n this._dragImageOffset = {\n x: this._config.dragImageOffset.x,\n y: this._config.dragImageOffset.y\n };\n } else if (this._config.dragImageCenterOnTouch) {\n const cs = getComputedStyle(dragImageSrc);\n this._dragImageOffset = {\n x: 0 - parseInt(cs.marginLeft, 10),\n y: 0 - parseInt(cs.marginTop, 10)\n };\n } else {\n const targetRect = dragImageSrc.getBoundingClientRect();\n const cs = getComputedStyle(dragImageSrc);\n this._dragImageOffset = {\n x: targetRect.left - this._initialTouch.clientX - parseInt(cs.marginLeft, 10) + targetRect.width / 2,\n y: targetRect.top - this._initialTouch.clientY - parseInt(cs.marginTop, 10) + targetRect.height / 2\n };\n }\n }\n translateElementToPoint(this._dragImage, this._dragImagePageCoordinates, this._dragImageTransforms, this._dragImageOffset, this._config.dragImageCenterOnTouch);\n document.body.appendChild(this._dragImage);\n this._iterationIntervalId = window.setInterval(function() {\n if (_this._iterationLock) {\n console.log(\"dnd-poly: iteration skipped because previous iteration hast not yet finished.\");\n return;\n }\n _this._iterationLock = true;\n _this._dragAndDropProcessModelIteration();\n _this._iterationLock = false;\n }, this._config.iterationInterval);\n return true;\n };\n DragOperationController.prototype._cleanup = function() {\n console.log(\"dnd-poly: cleanup\");\n if (this._iterationIntervalId) {\n clearInterval(this._iterationIntervalId);\n this._iterationIntervalId = null;\n }\n removeDocumentListener(\"touchmove\", this._touchMoveHandler);\n removeDocumentListener(\"touchend\", this._touchEndOrCancelHandler);\n removeDocumentListener(\"touchcancel\", this._touchEndOrCancelHandler);\n if (this._dragImage) {\n this._dragImage.parentNode.removeChild(this._dragImage);\n this._dragImage = null;\n }\n this._dragOperationEndedCb(this._config, this._lastTouchEvent, this._dragOperationState);\n };\n DragOperationController.prototype._onTouchMove = function(event) {\n const _this = this;\n if (isTouchIdentifierContainedInTouchEvent(event, this._initialTouch.identifier) === false) {\n return;\n }\n this._lastTouchEvent = event;\n if (this._dragOperationState === 0) {\n let startDrag = void 0;\n if (this._config.dragStartConditionOverride) {\n try {\n startDrag = this._config.dragStartConditionOverride(event);\n } catch (e) {\n console.error(\"dnd-poly: error in dragStartConditionOverride hook: \" + e);\n startDrag = false;\n }\n } else {\n startDrag = event.touches.length === 1;\n }\n if (!startDrag) {\n this._cleanup();\n return;\n }\n if (this._setup() === true) {\n this._initialEvent.preventDefault();\n event.preventDefault();\n }\n return;\n }\n console.log(\"dnd-poly: moving draggable..\");\n event.preventDefault();\n updateCentroidCoordinatesOfTouchesIn(\"client\", event, this._currentHotspotCoordinates);\n updateCentroidCoordinatesOfTouchesIn(\"page\", event, this._dragImagePageCoordinates);\n if (this._config.dragImageTranslateOverride) {\n try {\n let handledDragImageTranslate_1 = false;\n this._config.dragImageTranslateOverride(\n event,\n {\n x: this._currentHotspotCoordinates.x,\n y: this._currentHotspotCoordinates.y\n },\n this._immediateUserSelection,\n function(offsetX, offsetY) {\n if (!_this._dragImage) {\n return;\n }\n handledDragImageTranslate_1 = true;\n _this._currentHotspotCoordinates.x += offsetX;\n _this._currentHotspotCoordinates.y += offsetY;\n _this._dragImagePageCoordinates.x += offsetX;\n _this._dragImagePageCoordinates.y += offsetY;\n translateElementToPoint(_this._dragImage, _this._dragImagePageCoordinates, _this._dragImageTransforms, _this._dragImageOffset, _this._config.dragImageCenterOnTouch);\n }\n );\n if (handledDragImageTranslate_1) {\n return;\n }\n } catch (e) {\n console.log(\"dnd-poly: error in dragImageTranslateOverride hook: \" + e);\n }\n }\n translateElementToPoint(this._dragImage, this._dragImagePageCoordinates, this._dragImageTransforms, this._dragImageOffset, this._config.dragImageCenterOnTouch);\n };\n DragOperationController.prototype._onTouchEndOrCancel = function(event) {\n if (isTouchIdentifierContainedInTouchEvent(event, this._initialTouch.identifier) === false) {\n return;\n }\n if (this._config.dragImageTranslateOverride) {\n try {\n this._config.dragImageTranslateOverride(undefined, undefined, undefined, function() {});\n } catch (e) {\n console.log(\"dnd-poly: error in dragImageTranslateOverride hook: \" + e);\n }\n }\n if (this._dragOperationState === 0) {\n this._cleanup();\n return;\n }\n event.preventDefault();\n this._dragOperationState = event.type === \"touchcancel\" ? 3 : 2;\n };\n DragOperationController.prototype._dragAndDropProcessModelIteration = function() {\n const _this = this;\n const previousDragOperation = this._currentDragOperation;\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n const dragCancelled = dispatchDragEvent(\"drag\", this._sourceNode, this._lastTouchEvent, this._dragDataStore, this._dataTransfer);\n if (dragCancelled) {\n console.log(\"dnd-poly: drag event cancelled.\");\n this._currentDragOperation = DROP_EFFECTS[0];\n }\n if (dragCancelled || this._dragOperationState === 2 || this._dragOperationState === 3) {\n const dragFailed = this._dragOperationEnded(this._dragOperationState);\n if (dragFailed) {\n applyDragImageSnapback(this._sourceNode, this._dragImage, this._dragImageTransforms, function() {\n _this._finishDragOperation();\n });\n return;\n }\n this._finishDragOperation();\n return;\n }\n const newUserSelection = this._config.elementFromPoint(this._currentHotspotCoordinates.x, this._currentHotspotCoordinates.y);\n console.log(\"dnd-poly: new immediate user selection is: \" + newUserSelection);\n const previousTargetElement = this._currentDropTarget;\n if (newUserSelection !== this._immediateUserSelection && newUserSelection !== this._currentDropTarget) {\n this._immediateUserSelection = newUserSelection;\n if (this._currentDropTarget !== null) {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n dispatchDragEvent(\"dragexit\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false);\n }\n if (this._immediateUserSelection === null) {\n this._currentDropTarget = this._immediateUserSelection;\n console.log(\"dnd-poly: current drop target changed to null\");\n } else {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = determineDropEffect(this._dragDataStore.effectAllowed, this._sourceNode);\n if (dispatchDragEvent(\"dragenter\", this._immediateUserSelection, this._lastTouchEvent, this._dragDataStore, this._dataTransfer)) {\n console.log(\"dnd-poly: dragenter default prevented\");\n this._currentDropTarget = this._immediateUserSelection;\n this._currentDragOperation = determineDragOperation(this._dataTransfer.effectAllowed, this._dataTransfer.dropEffect);\n } else {\n if (this._immediateUserSelection !== document.body) {\n this._currentDropTarget = document.body;\n }\n }\n }\n }\n if (previousTargetElement !== this._currentDropTarget && isDOMElement(previousTargetElement)) {\n console.log(\"dnd-poly: current drop target changed.\");\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n dispatchDragEvent(\"dragleave\", previousTargetElement, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false, this._currentDropTarget);\n }\n if (isDOMElement(this._currentDropTarget)) {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = determineDropEffect(this._dragDataStore.effectAllowed, this._sourceNode);\n if (dispatchDragEvent(\"dragover\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer) === false) {\n console.log(\"dnd-poly: dragover not prevented on possible drop-target.\");\n this._currentDragOperation = DROP_EFFECTS[0];\n } else {\n console.log(\"dnd-poly: dragover prevented.\");\n this._currentDragOperation = determineDragOperation(this._dataTransfer.effectAllowed, this._dataTransfer.dropEffect);\n }\n }\n console.log(\"dnd-poly: d'n'd iteration ended. current drag operation: \" + this._currentDragOperation);\n if (previousDragOperation !== this._currentDragOperation) {\n this._dragImage.classList.remove(CLASS_PREFIX + previousDragOperation);\n }\n const currentDragOperationClass = CLASS_PREFIX + this._currentDragOperation;\n this._dragImage.classList.add(currentDragOperationClass);\n };\n DragOperationController.prototype._dragOperationEnded = function(state) {\n console.log(\"dnd-poly: drag operation end detected with \" + this._currentDragOperation);\n const dragFailed = this._currentDragOperation === DROP_EFFECTS[0] || this._currentDropTarget === null || state === 3;\n if (dragFailed) {\n if (isDOMElement(this._currentDropTarget)) {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n dispatchDragEvent(\"dragleave\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false);\n }\n } else {\n if (isDOMElement(this._currentDropTarget)) {\n this._dragDataStore.mode = 1;\n this._dataTransfer.dropEffect = this._currentDragOperation;\n if (dispatchDragEvent(\"drop\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer) === true) {\n this._currentDragOperation = this._dataTransfer.dropEffect;\n } else {\n this._currentDragOperation = DROP_EFFECTS[0];\n }\n }\n }\n return dragFailed;\n };\n DragOperationController.prototype._finishDragOperation = function() {\n console.log(\"dnd-poly: dragimage snap back transition ended\");\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = this._currentDragOperation;\n dispatchDragEvent(\"dragend\", this._sourceNode, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false);\n this._dragOperationState = 2;\n this._cleanup();\n };\n return DragOperationController;\n})();\n\nconst config = {\n iterationInterval: 150,\n tryFindDraggableTarget: tryFindDraggableTarget,\n dragImageSetup: createDragImage,\n elementFromPoint: function(x, y) {\n return document.elementFromPoint(x, y);\n }\n};\nlet activeDragOperation;\nfunction onTouchstart(e, composePath) {\n console.log(\"dnd-poly: global touchstart\");\n if (activeDragOperation) {\n console.log(\"dnd-poly: drag operation already active\");\n return;\n }\n const dragTarget = config.tryFindDraggableTarget(e, composePath);\n if (!dragTarget) {\n console.log(\"dnd-poly: no draggable at touchstart coordinates\");\n return;\n }\n try {\n activeDragOperation = new DragOperationController(e, config, dragTarget, dragOperationEnded);\n } catch (err) {\n dragOperationEnded(config, e, 3);\n throw err;\n }\n}\nfunction onDelayTouchstart(evt) {\n console.log(\"dnd-poly: setup delayed dragstart..\");\n const el = evt.target;\n const composePath = evt.composedPath();\n const heldItem = function() {\n console.log(\"dnd-poly: starting delayed drag..\");\n end.off();\n cancel.off();\n move.off();\n scroll.off();\n onTouchstart(evt, composePath);\n };\n const onReleasedItem = function(event) {\n console.log(\"dnd-poly: aborting delayed drag because of \" + event.type);\n end.off();\n cancel.off();\n move.off();\n scroll.off();\n if (el) {\n el.dispatchEvent(new CustomEvent(EVENT_DRAG_DRAGSTART_CANCEL, {bubbles: true, cancelable: true}));\n }\n clearTimeout(timer);\n };\n if (el) {\n el.dispatchEvent(new CustomEvent(EVENT_DRAG_DRAGSTART_PENDING, {bubbles: true, cancelable: true}));\n }\n const timer = window.setTimeout(heldItem, config.holdToDrag);\n const end = onEvt(el, \"touchend\", onReleasedItem);\n const cancel = onEvt(el, \"touchcancel\", onReleasedItem);\n const move = onEvt(el, \"touchmove\", onReleasedItem);\n const scroll = onEvt(window, \"scroll\", onReleasedItem, true);\n}\n\nfunction dragOperationEnded(_config, event, state) {\n if (state === 0) {\n console.log(\"dnd-poly: Drag never started. Last event was \" + event.type);\n if (_config.defaultActionOverride) {\n try {\n _config.defaultActionOverride(event);\n if (event.defaultPrevented) {\n console.log(\"dnd-poly: defaultActionOverride has taken care of triggering the default action. preventing default on original event\");\n }\n } catch (e) {\n console.log(\"dnd-poly: error in defaultActionOverride: \" + e);\n }\n }\n }\n activeDragOperation = null;\n}\n\nfunction polyfill(override) {\n if (override) {\n Object.keys(override).forEach(function(key) {\n config[key] = override[key];\n });\n }\n if (!config.forceApply) {\n const detectedFeatures = detectFeatures();\n if (detectedFeatures.userAgentSupportingNativeDnD && detectedFeatures.draggable && detectedFeatures.dragEvents) {\n return false;\n }\n }\n console.log(\"dnd-poly: Applying mobile drag and drop polyfill.\");\n if (config.holdToDrag) {\n console.log(\"dnd-poly: holdToDrag set to \" + config.holdToDrag);\n addDocumentListener(\"touchstart\", onDelayTouchstart, false);\n } else {\n addDocumentListener(\"touchstart\", onTouchstart, false);\n }\n return true;\n}\n\nfunction tryFindDraggableTarget_override(event, composePath) {\n const cp = composePath || event.composedPath();\n for (let o of cp) {\n let el = o;\n do {\n if (el.draggable === false) {\n continue;\n }\n if (el.getAttribute && el.getAttribute(\"draggable\") === \"true\") {\n return el;\n }\n } while ((el = el.parentNode) && el !== document.body);\n }\n}\n\nfunction elementFromPoint(x, y) {\n for (let o of this._path) {\n if (o.elementFromPoint) {\n let el = o.elementFromPoint(x, y);\n if (el) {\n while (el.shadowRoot) {\n el = el.shadowRoot.elementFromPoint(x, y);\n }\n return el;\n }\n }\n }\n}\n\nfunction dragStartConditionOverride(event) {\n this._path = event.composedPath();\n return true;\n}\n\npolyfill({\n tryFindDraggableTarget: tryFindDraggableTarget_override,\n elementFromPoint: elementFromPoint,\n dragStartConditionOverride: dragStartConditionOverride,\n holdToDrag: 500\n});\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\n/**\n * Instantiate a Template DOM object from an HTML text string.\n *\n * Params\n * ------\n * template : An HTML string representing a template.\n *\n * Returns\n * -------\n * A Template DOM object.\n */\n\nexport function importTemplate(template) {\n const div = document.createElement(\"div\");\n div.innerHTML = template;\n return Array.prototype.slice.call(div.children)[0];\n}\n\nfunction setTemplateContent(template) {\n // return early in browsers that have template tag support\n if (template.content) {\n return;\n }\n template.content = document.createDocumentFragment();\n let child;\n while ((child = template.firstChild)) {\n Node.prototype.appendChild.call(template.content, child);\n }\n}\n\n/**\n * A simple tool for creating Web Components v0.\n *\n * Params\n * ------\n * template : An HTML string representing a template. Should have an 'id'\n * attribute which will become the new Web Component's tag name.\n * proto : The new Web Component's prototype object, as per spec.\n */\nexport function registerElement(templateString, styleString, proto) {\n const template = importTemplate(templateString);\n setTemplateContent(template);\n if (styleString) {\n template.innerHTML = `<style>${styleString.toString()}</style>` + template.innerHTML;\n }\n template.innerHTML = `<style id=\"psp_styles\" scope=\"${template.getAttribute(\"id\")}\">test{}</style>` + template.innerHTML;\n\n const _perspective_element = class extends proto {\n attributeChangedCallback(name, old, value) {\n if (value === null) {\n value = \"null\";\n }\n if (name[0] !== \"_\" && old != value && !!Object.getOwnPropertyDescriptor(proto.prototype, name).set) {\n this[name] = value;\n }\n }\n\n connectedCallback() {\n if (this._initialized) {\n return;\n }\n this._initializing = true;\n var node = document.importNode(template.content, true);\n this.attachShadow({mode: \"open\"});\n this.shadowRoot.appendChild(node);\n\n if (super.connectedCallback) {\n super.connectedCallback();\n }\n\n // Call all attributes bound to setters on the proto\n for (let key of Object.getOwnPropertyNames(proto.prototype)) {\n if (key !== \"connectedCallback\") {\n if (this.hasAttribute(key) && key[0] !== \"_\" && !!Object.getOwnPropertyDescriptor(proto.prototype, key).set) {\n this[key] = this.getAttribute(key);\n }\n }\n }\n this._initializing = false;\n this._initialized = true;\n }\n\n static get observedAttributes() {\n return Object.getOwnPropertyNames(proto.prototype);\n }\n };\n\n for (let key of Object.getOwnPropertyNames(proto.prototype)) {\n let descriptor = Object.getOwnPropertyDescriptor(proto.prototype, key);\n if (descriptor && descriptor.set) {\n let old = descriptor.set;\n descriptor.set = function(val) {\n if (!this.hasAttribute(key) || this.getAttribute(key) !== val) {\n this.setAttribute(key, val);\n return;\n }\n if (!this._initializing && !this._initialized) {\n return;\n }\n old.call(this, val);\n };\n Object.defineProperty(proto.prototype, key, descriptor);\n }\n }\n\n let name = template.getAttribute(\"id\");\n console.log(`Registered ${name}`);\n\n window.customElements.define(name, _perspective_element);\n}\n\nexport function bindTemplate(template, ...styleStrings) {\n const style = styleStrings.map(x => x.toString()).join(\"\\n\");\n return function(cls) {\n return registerElement(template, {toString: () => style}, cls);\n };\n}\n\n/**\n * A decorator for declaring a setter property of an HTMLElement descendent\n * class as serialized JSON. Handles converting these types before invoking\n * the underlying function/\n *\n * @param {object} _default the default value to supply the setter when\n * undefined, removed or invalid.\n */\nfunction _attribute(_default) {\n return function(cls, name, desc) {\n const old_set = desc.value;\n desc.set = function(x) {\n let attr = this.getAttribute(name);\n try {\n if (x === null || x === undefined || x === \"\") {\n x = _default();\n }\n if (typeof x !== \"string\") {\n x = JSON.stringify(x);\n }\n if (x !== attr) {\n attr = x;\n }\n attr = JSON.parse(attr);\n } catch (e) {\n console.warn(`Invalid value for attribute \"${name}\": ${x}`);\n attr = _default();\n }\n old_set.call(this, attr);\n };\n desc.get = function() {\n if (this.hasAttribute(name)) {\n return JSON.parse(this.getAttribute(name));\n } else {\n return _default();\n }\n };\n delete desc[\"value\"];\n delete desc[\"writable\"];\n return desc;\n };\n}\n\nexport function copy_to_clipboard(csv) {\n let element = document.createElement(\"textarea\");\n document.body.appendChild(element);\n element.value = csv;\n element.select();\n document.execCommand(\"copy\");\n document.body.removeChild(element);\n}\n\n/**\n * Just like `setTimeout` except it returns a promise which resolves after the\n * callback has (also resolved).\n *\n * @param {func} cb\n * @param {*} timeout\n */\nexport async function setPromise(cb = async () => {}, timeout = 0) {\n await new Promise(x => setTimeout(x, timeout));\n return await cb();\n}\n\n/**\n * Returns a promise whose resolve method can be called from elsewhere.\n */\nexport function invertPromise() {\n let resolve;\n let promise = new Promise(_resolve => {\n resolve = _resolve;\n });\n promise.resolve = resolve;\n return promise;\n}\n\nexport function throttlePromise(target, property, descriptor) {\n const lock = Symbol(\"private lock\");\n const f = descriptor.value;\n descriptor.value = async function(...args) {\n if (this[lock]) {\n await this[lock];\n if (this[lock]) {\n await this[lock];\n return;\n }\n }\n this[lock] = invertPromise();\n let result;\n try {\n result = await f.call(this, ...args);\n } catch (e) {\n console.error(e);\n } finally {\n const l = this[lock];\n this[lock] = undefined;\n l.resolve();\n return result;\n }\n };\n return descriptor;\n}\n\n/**\n * Swap 2 HTMLElements in a container.\n * @param {HTMLElement} container\n * @param {HTMLElement} elem1\n * @param {HTMLElement} elem2\n */\nexport function swap(container, ...elems) {\n if (elems[0] === elems[1]) return;\n if (elems.every(x => x.classList.contains(\"null-column\"))) return;\n let [i, j] = elems.map(x => Array.prototype.slice.call(container.children).indexOf(x));\n if (j < i) {\n [i, j] = [j, i];\n elems = elems.reverse();\n }\n container.insertBefore(elems[1], elems[0]);\n if (j + 1 === container.children.length) {\n container.appendChild(elems[0]);\n } else {\n container.insertBefore(elems[0], container.children[j + 1]);\n }\n}\n\nexport const json_attribute = _attribute(() => ({}));\nexport const array_attribute = _attribute(() => []);\n\nexport const registerPlugin = (name, plugin) => {\n if (global.registerPlugin) {\n global.registerPlugin(name, plugin);\n } else {\n global.__perspective_plugins__ = global.__perspective_plugins__ || [];\n global.__perspective_plugins__.push([name, plugin]);\n }\n};\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {html, render} from \"lit-html\";\n\nconst RENDERERS = {};\n\nexport const renderers = new (class {\n /**\n * Register a plugin with the <perspective-viewer> component.\n *\n * @param {string} name The logical unique name of the plugin. This will be\n * used to set the component's `view` attribute.\n * @param {object} plugin An object with this plugin's prototype.\n * Valid keys are:\n * @param {string} plugin.name The display name for this plugin.\n * @param {string} plugin.create (required) The creation function - may\n * return a `Promise`.\n * @param {string} plugin.delete The deletion function.\n * @param {string} plugin.mode The selection mode - may be \"toggle\" or\n * \"select\".\n */\n registerPlugin(name, plugin) {\n if (RENDERERS[name]) {\n throw new Error(`A perspective-viewer plugin \"${name}\" has already been registered`);\n }\n for (const id in RENDERERS) {\n const old_plugin = RENDERERS[id];\n if (old_plugin && old_plugin.name === plugin.name) {\n console.warn(`Conflicting plugin name \"${plugin.name}\", qualifying with id`);\n old_plugin.name = `${old_plugin.name} [${id}]`;\n plugin.name = `${plugin.name} [${name}]`;\n }\n }\n RENDERERS[name] = plugin;\n }\n\n getPlugin(name) {\n return RENDERERS[name];\n }\n\n getInstance() {\n return RENDERERS;\n }\n})();\n\nglobal.registerPlugin = renderers.registerPlugin;\n\nglobal.getPlugin = renderers.getPlugin;\n\nif (global.__perspective_plugins__) {\n global.__perspective_plugins__.forEach(([name, plugin]) => global.registerPlugin(name, plugin));\n}\n\nconst template = csv =>\n html`\n <pre style=\"margin:0;overflow:scroll;position:absolute;width:100%;height:100%\">${csv}</pre>\n `;\n\nexport function register_debug_plugin() {\n global.registerPlugin(\"debug\", {\n name: \"Debug\",\n create: async function(div) {\n const csv = await this._view.to_csv({config: {delimiter: \"|\"}});\n const timer = this._render_time();\n render(template(csv), div);\n timer();\n },\n selectMode: \"toggle\",\n resize: function() {},\n delete: function() {}\n });\n}\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport debounce from \"lodash/debounce\";\n\nimport Awesomplete from \"awesomplete\";\nimport awesomplete_style from \"awesomplete/awesomplete.css\";\n\nimport {bindTemplate} from \"./utils.js\";\n\nimport * as perspective from \"@finos/perspective/dist/esm/config/constants.js\";\nimport {get_type_config} from \"@finos/perspective/dist/esm/config\";\nimport template from \"../html/row.html\";\n\nimport style from \"../less/row.less\";\nimport {html, render, nothing} from \"lit-html\";\n\nconst SPAN = document.createElement(\"span\");\nSPAN.style.visibility = \"hidden\";\nSPAN.style.fontFamily = \"monospace\";\nSPAN.style.fontSize = \"12px\";\nSPAN.style.position = \"absolute\";\n\nfunction get_text_width(text, max = 0) {\n // FIXME get these values form the stylesheet\n SPAN.innerHTML = text;\n document.body.appendChild(SPAN);\n const width = `${Math.max(max, SPAN.offsetWidth) + 20}px`;\n document.body.removeChild(SPAN);\n return width;\n}\n\n// Eslint complains here because we don't do anything, but actually we globally\n// register this class as a CustomElement\n@bindTemplate(template, {toString: () => style + \"\\n\" + awesomplete_style}) // eslint-disable-next-line no-unused-vars\nclass Row extends HTMLElement {\n set name(n) {\n const elem = this.shadowRoot.querySelector(\"#name\");\n elem.innerHTML = this.getAttribute(\"name\");\n }\n\n _option_template(agg, name) {\n return html`\n <option value=\"${agg}\" data-desc=\"${name}\">${name || agg}</option>\n `;\n }\n\n _select_template(category, type) {\n const items = perspective[category][type] || [];\n const weighted_options = html`\n <optgroup label=\"weighted mean\">\n ${this._weights.map(x => this._option_template(JSON.stringify([\"weighted mean\", x]), x))}\n </optgroup>\n `;\n const has_weighted_mean = category === \"TYPE_AGGREGATES\" && (type === \"integer\" || type === \"float\");\n return html`\n ${items.map(x => this._option_template(x))} ${has_weighted_mean ? weighted_options : nothing}\n `;\n }\n\n set_weights(xs) {\n this._weights = xs;\n }\n\n set type(t) {\n const elem = this.shadowRoot.querySelector(\"#name\");\n const type = this.getAttribute(\"type\");\n if (!type) return;\n const type_config = get_type_config(type);\n if (type_config.type) {\n elem.classList.add(type_config.type);\n }\n elem.classList.add(type);\n const agg_dropdown = this.shadowRoot.querySelector(\"#column_aggregate\");\n const filter_dropdown = this.shadowRoot.querySelector(\"#filter_operator\");\n\n render(this._select_template(\"TYPE_AGGREGATES\", type_config.type || type), agg_dropdown);\n render(this._select_template(\"TYPE_FILTERS\", type_config.type || type), filter_dropdown);\n\n if (!this.hasAttribute(\"aggregate\")) {\n this.aggregate = type_config.aggregate;\n } else {\n this.aggregate = this.getAttribute(\"aggregate\");\n }\n if (this.hasAttribute(\"filter\")) {\n this.filter = this.getAttribute(\"filter\");\n }\n\n const filter_operand = this.shadowRoot.querySelector(\"#filter_operand\");\n this._callback = event => this._update_filter(event);\n filter_operand.addEventListener(\"keyup\", this._callback.bind(this));\n }\n\n choices(choices) {\n const filter_operand = this.shadowRoot.querySelector(\"#filter_operand\");\n const filter_operator = this.shadowRoot.querySelector(\"#filter_operator\");\n const selector = new Awesomplete(filter_operand, {\n label: this.getAttribute(\"name\"),\n list: choices,\n minChars: 0,\n autoFirst: true,\n filter: function(text, input) {\n return Awesomplete.FILTER_CONTAINS(text, input.match(/[^,]*$/)[0]);\n },\n item: function(text, input) {\n return Awesomplete.ITEM(text, input.match(/[^,]*$/)[0]);\n },\n replace: function(text) {\n const before = this.input.value.match(/^.+,\\s*|/)[0];\n if (filter_operator.value === \"in\" || filter_operator.value === \"not in\") {\n this.input.value = before + text + \", \";\n } else {\n this.input.value = before + text;\n }\n }\n });\n if (filter_operand.value === \"\") {\n selector.evaluate();\n }\n filter_operand.focus();\n this._filter_operand.addEventListener(\"focus\", () => {\n if (filter_operand.value.trim().length === 0) {\n selector.evaluate();\n }\n });\n filter_operand.addEventListener(\"awesomplete-selectcomplete\", this._callback);\n }\n\n set filter(f) {\n const filter_dropdown = this.shadowRoot.querySelector(\"#filter_operator\");\n const filter = JSON.parse(this.getAttribute(\"filter\"));\n if (filter_dropdown.value !== filter.operator) {\n filter_dropdown.value = filter.operator || get_type_config(this.getAttribute(\"type\")).filter_operator;\n }\n filter_dropdown.style.width = get_text_width(filter_dropdown.value);\n const filter_input = this.shadowRoot.querySelector(\"#filter_operand\");\n const operand = filter.operand ? filter.operand.toString() : \"\";\n if (!this._initialized) {\n filter_input.value = operand;\n }\n if (filter_dropdown.value === perspective.FILTER_OPERATORS.isNull || filter_dropdown.value === perspective.FILTER_OPERATORS.isNotNull) {\n filter_input.style.display = \"none\";\n } else {\n filter_input.style.display = \"inline-block\";\n filter_input.style.width = get_text_width(operand, 30);\n }\n }\n\n set aggregate(a) {\n const agg_dropdown = this.shadowRoot.querySelector(\"#column_aggregate\");\n const aggregate = this.getAttribute(\"aggregate\");\n if (agg_dropdown.value !== aggregate && this.hasAttribute(\"type\")) {\n const type = this.getAttribute(\"type\");\n agg_dropdown.value = aggregate || get_type_config(type).aggregate;\n }\n this._blur_agg_dropdown();\n }\n\n set computed_column(c) {\n // const data = this._get_computed_data();\n // const computed_input_column =\n // this.shadowRoot.querySelector('#computed_input_column');\n // const computation_name =\n // this.shadowRoot.querySelector('#computation_name');\n // computation_name.textContent = data.computation.name;\n // computed_input_column.textContent = data.input_column;\n }\n\n _get_computed_data() {\n const data = JSON.parse(this.getAttribute(\"computed_column\"));\n return {\n column_name: data.column_name,\n input_columns: data.input_columns,\n input_type: data.input_type,\n computation: data.computation,\n type: data.type\n };\n }\n\n _update_filter(event) {\n const filter_operand = this.shadowRoot.querySelector(\"#filter_operand\");\n const filter_operator = this.shadowRoot.querySelector(\"#filter_operator\");\n let val = filter_operand.value;\n const type = this.getAttribute(\"type\");\n switch (type) {\n case \"float\":\n val = parseFloat(val);\n break;\n case \"integer\":\n val = parseInt(val);\n break;\n case \"boolean\":\n val = val.toLowerCase().indexOf(\"true\") > -1;\n break;\n case \"string\":\n default:\n }\n if (filter_operator.value === perspective.FILTER_OPERATORS.isIn || filter_operator.value === perspective.FILTER_OPERATORS.isNotIn) {\n val = val.split(\",\").map(x => x.trim());\n }\n this.setAttribute(\"filter\", JSON.stringify({operator: filter_operator.value, operand: val}));\n this.dispatchEvent(new CustomEvent(\"filter-selected\", {detail: event}));\n }\n\n _set_data_transfer(event) {\n if (this.hasAttribute(\"filter\")) {\n const {operator, operand} = JSON.parse(this.getAttribute(\"filter\"));\n event.dataTransfer.setData(\"text/plain\", JSON.stringify([this.getAttribute(\"name\"), operator, operand, this.getAttribute(\"type\"), this.getAttribute(\"aggregate\")]));\n } else {\n event.dataTransfer.setData(\n \"text/plain\",\n JSON.stringify([this.getAttribute(\"name\"), get_type_config(this.getAttribute(\"type\")).filter_operator, undefined, this.getAttribute(\"type\"), this.getAttribute(\"aggregate\")])\n );\n }\n this.dispatchEvent(new CustomEvent(\"row-drag\"));\n }\n\n _register_ids() {\n this._li = this.shadowRoot.querySelector(\".row_draggable\");\n this._visible = this.shadowRoot.querySelector(\".is_visible\");\n this._row_close = this.shadowRoot.querySelector(\"#row_close\");\n this._agg_dropdown = this.shadowRoot.querySelector(\"#column_aggregate\");\n this._sort_order = this.shadowRoot.querySelector(\"#sort_order\");\n this._filter_operand = this.shadowRoot.querySelector(\"#filter_operand\");\n this._filter_operator = this.shadowRoot.querySelector(\"#filter_operator\");\n this._edit_computed_column_button = this.shadowRoot.querySelector(\"#row_edit\");\n this._column_aggregate_category = this.shadowRoot.querySelector(\"#column_aggregate_category\");\n }\n\n _blur_agg_dropdown() {\n this._agg_dropdown.blur();\n if (this._agg_dropdown.value[0] === \"[\") {\n for (const option of this._agg_dropdown.querySelectorAll(\"optgroup option\")) {\n const name = option.getAttribute(\"data-desc\");\n option.innerHTML = `mean by ${name}`;\n }\n }\n }\n\n _focus_agg_dropdown() {\n for (const option of this._agg_dropdown.querySelectorAll(\"optgroup option\")) {\n const name = option.getAttribute(\"data-desc\");\n option.innerHTML = `by ${name}`;\n }\n }\n\n _register_callbacks() {\n this._li.addEventListener(\"dragstart\", this._set_data_transfer.bind(this));\n this._li.addEventListener(\"dragend\", () => {\n this.dispatchEvent(new CustomEvent(\"row-dragend\"));\n });\n this._visible.addEventListener(\"mousedown\", event => this.dispatchEvent(new CustomEvent(\"visibility-clicked\", {detail: event})));\n this._row_close.addEventListener(\"mousedown\", event => this.dispatchEvent(new CustomEvent(\"close-clicked\", {detail: event})));\n this._agg_dropdown.addEventListener(\"focus\", this._focus_agg_dropdown.bind(this));\n\n this._agg_dropdown.addEventListener(\"change\", event => {\n this._blur_agg_dropdown();\n const value = this._agg_dropdown.value;\n this.setAttribute(\"aggregate\", value);\n this.dispatchEvent(new CustomEvent(\"aggregate-selected\", {detail: event}));\n });\n this._sort_order.addEventListener(\"click\", event => {\n this.dispatchEvent(new CustomEvent(\"sort-order\", {detail: event}));\n });\n\n const debounced_filter = debounce(event => this._update_filter(event), 50);\n this._filter_operator.addEventListener(\"change\", () => {\n this._filter_operand.focus();\n this._filter_operator.style.width = get_text_width(this._filter_operator.value);\n const filter_input = this.shadowRoot.querySelector(\"#filter_operand\");\n filter_input.style.width = get_text_width(\"\" + this._filter_operand.value, 30);\n debounced_filter();\n });\n this._edit_computed_column_button.addEventListener(\"click\", () => {\n this.dispatchEvent(\n new CustomEvent(\"perspective-computed-column-edit\", {\n bubbles: true,\n detail: this._get_computed_data()\n })\n );\n });\n }\n\n connectedCallback() {\n this._register_ids();\n this._register_callbacks();\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\nimport {html, nothing, render} from \"lit-html\";\n\nimport {bindTemplate, throttlePromise} from \"./utils.js\";\n\nimport template from \"../html/autocomplete_widget.html\";\n\nimport style from \"../less/autocomplete_widget.less\";\n\n/**\n * A single suggestion object for the autocomplete, containing `label`, which\n * is the text displayed to the user, and `value`, which is the text that goes\n * into the input when a selection is chosen.\n */\nexport class AutocompleteSuggestion {\n /**\n * Construct a new autocomplete suggestion.\n *\n * @param {String} label the text shown to the user\n * @param {String} value the text used to replace inside the input\n */\n constructor(label, value) {\n this.label = label;\n this.value = value;\n }\n}\n\n// Eslint complains here because we don't do anything, but actually we globally\n// register this class as a CustomElement\n@bindTemplate(template, style) // eslint-disable-next-line no-unused-vars\nclass PerspectiveAutocompleteWidget extends HTMLElement {\n constructor() {\n super();\n this.displayed = false;\n this._selection_index = -1;\n }\n\n connectedCallback() {\n this._register_ids();\n this._register_callbacks();\n }\n\n /**\n * Render an array of suggestions inside the autocomplete. Calling this\n * method will overwrite the existing suggestions inside the\n * autocomplete container.\n *\n * @param {Array<Template>} markup An array of `lit-html` template objects\n * that will be rendered. If the length of `markup` is 0, the autocomplete\n * is cleared and hidden.\n * @param {Boolean} is_column_name if true, suggestions will be rendered\n * with additional CSS classes denoting that they are column names.\n *\n * TODO: do we want throttlePromise on all render functions?\n */\n @throttlePromise\n render(markup) {\n this._details.style.display = \"none\";\n this._container.classList.remove(\"show-details\");\n this._list.classList.remove(\"small\");\n\n if (this._selection_index > -1) {\n const children = this._list.children;\n children[this._selection_index].setAttribute(\"aria-selected\", false);\n }\n\n if (markup.length === 0) {\n this.clear();\n return;\n }\n\n this.reposition();\n\n // Reset selection state\n this._selection_index = -1;\n\n // Show autocomplete container\n this.display();\n\n // Reset scroll inside container to be at the top\n this._list.scrollTop = 0;\n\n // Special classes for smaller selections\n if (markup.length < 4) {\n this._list.classList.add(\"small\");\n }\n\n render(markup, this._list);\n }\n\n /**\n * Repositions the widget within the textarea - must be implemented by the\n * user. Defaults to a no-op;\n */\n reposition() {\n console.warning(\"PerspectiveAutocompleteWidget.reposition has not been implemented.\");\n return;\n }\n\n /**\n * If an item is clicked inside the autocomplete, dispatch a\n * `perspective-autocomplete-item-clicked` event, containing the original\n * click event in the new event's `detail` attribute.\n *\n * @param {*} ev\n */\n item_clicked(ev) {\n if (ev.target && (ev.target.matches(\".psp-autocomplete__item\") || ev.target.matches(\".psp-autocomplete-item__label\"))) {\n const event = new CustomEvent(\"perspective-autocomplete-item-clicked\", {\n detail: ev,\n bubbles: true\n });\n this.dispatchEvent(event);\n }\n }\n\n /**\n * When an item is hovered over, render the details panel if necessary.\n *\n * @param {*} ev\n */\n item_mouseover(ev) {\n if (ev.target && ev.target.matches(\".psp-autocomplete__item\")) {\n this._render_details_panel(ev.target);\n }\n }\n\n /**\n * When hover exits, clear the details panel.\n *\n * @param {*} ev\n */\n item_mouseleave(ev) {\n if (ev.target && ev.target.matches(\".psp-autocomplete__item\")) {\n this._render_details_panel(ev.target);\n }\n }\n\n /**\n * Returns the `data-value` attribute of the currently selected item, or\n * `undefined` if there is no selection.\n */\n get_selected_value() {\n if (this._selection_index !== -1) {\n return this._list.children[this._selection_index].getAttribute(\"data-value\");\n }\n }\n\n /**\n * Clears the autocomplete widget and sets the widget's `display`\n * style to `none`.\n */\n clear() {\n this.hide();\n this._selection_index = -1;\n this._container.removeAttribute(\"style\");\n this._container.classList.add(\"undocked\");\n render(nothing, this._list);\n }\n\n /**\n * Displays the autocomplete and sets `this.displayed` to true.\n */\n display() {\n this._container.style.display = \"flex\";\n this.displayed = true;\n }\n\n /**\n * Hides the autocomplete, and sets `this.displayed` to false.\n */\n hide() {\n this._container.style.display = \"none\";\n this.displayed = false;\n }\n\n /**\n * Navigate to the next element inside the container.\n */\n _next() {\n const count = this._list.children.length;\n const idx = this._selection_index < count - 1 ? this._selection_index + 1 : count ? 0 : -1;\n this._go_to(idx);\n }\n\n /**\n * Go back one element inside the container.\n */\n _prev() {\n const count = this._list.children.length;\n const position = this._selection_index - 1;\n const idx = this._selection_index > -1 && position !== -1 ? position : count - 1;\n this._go_to(idx);\n }\n\n /**\n * Navigate to element `idx` inside the container.\n *\n * @param {Number} idx\n */\n _go_to(idx) {\n // liberally borrowed from awesomplete\n const children = this._list.children;\n\n if (this._selection_index > -1) {\n children[this._selection_index].setAttribute(\"aria-selected\", false);\n }\n\n // reset selection\n this._selection_index = idx;\n\n if (idx > -1 && children.length > 0) {\n children[idx].setAttribute(\"aria-selected\", \"true\");\n children[idx].scrollIntoView({\n block: \"nearest\"\n });\n\n this._render_details_panel(children[idx]);\n }\n }\n\n _render_details_panel(item) {\n // Because hover and keyboard events can interact, always clear before\n // re-rendering the details panel.\n this._clear_details_panel();\n\n if (item.hasAttribute(\"data-help\") && item.getAttribute(\"data-help\")) {\n this._container.classList.add(\"show-details\");\n const label = item.getAttribute(\"data-label\");\n const help = item.getAttribute(\"data-help\");\n const signature = item.getAttribute(\"data-signature\");\n\n const template = html`\n <span class=\"psp-autocomplete-item-detail__item--label\">${label}</span>\n <span class=\"psp-autocomplete-item-detail__item--signature\">${signature}</span>\n <span class=\"psp-autocomplete-item-detail__item--help\">${help}</span>\n `;\n\n render(template, this._details);\n\n this._details.scrollTop = 0;\n this._details.style.display = \"block\";\n }\n }\n\n /**\n * Remove and hide the details panel.\n */\n _clear_details_panel() {\n render(nothing, this._details);\n this._details.style.display = \"none\";\n this._container.classList.remove(\"show-details\");\n }\n\n /**\n * Map DOM IDs to class properties.\n */\n _register_ids() {\n this._container = this.shadowRoot.querySelector(\".psp-autocomplete-widget\");\n this._list = this.shadowRoot.querySelector(\".psp-autocomplete-widget__list\");\n this._details = this.shadowRoot.querySelector(\".psp-autocomplete-widget__details\");\n }\n\n /**\n * Map callback functions to class properties.\n */\n _register_callbacks() {\n // Dispatch a custom event on click & disable the `mousedown` handler\n this._list.addEventListener(\"click\", this.item_clicked.bind(this));\n this._list.addEventListener(\"mousedown\", ev => ev.preventDefault());\n this._list.addEventListener(\"mouseover\", this.item_mouseover.bind(this));\n this._list.addEventListener(\"mouseleave\", this.item_mouseleave.bind(this));\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {bindTemplate, throttlePromise} from \"./utils.js\";\n\nimport template from \"../html/expression_editor.html\";\n\nimport style from \"../less/expression_editor.less\";\n\n// Eslint complains here because we don't do anything, but actually we globally\n// register this class as a CustomElement\n@bindTemplate(template, style) // eslint-disable-next-line no-unused-vars\nclass PerspectiveExpressionEditor extends HTMLElement {\n constructor() {\n super();\n this._value = \"\";\n this._ignored_nodes = [\"BR\", \"DIV\"];\n }\n\n connectedCallback() {\n this._register_ids();\n this._register_callbacks();\n\n // `renderer` is a function that takes a string of content and\n // returns a string of valid HTML. The default renderer\n // splits the string by space and returns `span` elements.\n this.renderer = this._render_content;\n }\n\n /**\n * Replace the render function of the editor instance with a custom\n * renderer, which allows for full manipulation of the final rendered\n * output of the editor.\n *\n * @param {Function} render_function a function that takes a string and\n * returns a string of valid HTML.\n */\n set_renderer(render_function) {\n this.renderer = render_function;\n }\n\n /**\n * Analyze the content in the editor and redraw the selection caret every\n * time an `input` event is fired.\n */\n @throttlePromise\n update_content() {\n const selection = this.shadowRoot.getSelection();\n const tokens = this.get_tokens(this._edit_area);\n\n // Dispatch a `perspective-expression-editor-input` event,\n // signifying that the input has reached the editor but has not\n // been rendered into HTML yet\n const input_event = new CustomEvent(\"perspective-expression-editor-input\", {\n detail: {\n nodes: tokens.map(t => t.node),\n text: this._edit_area.textContent\n }\n });\n this.dispatchEvent(input_event);\n\n let anchor_idx = null;\n let focus_idx = null;\n let current_idx = 0;\n\n for (const token of tokens) {\n if (token.node === selection.anchorNode) {\n anchor_idx = current_idx + selection.anchorOffset;\n }\n\n if (token.node === selection.focusNode) {\n focus_idx = current_idx + selection.focusOffset;\n }\n\n current_idx += token.text.length;\n }\n\n this._value = tokens.map(t => t.text).join(\"\");\n\n if (this._value.length === 0) {\n // Clear input from the editor\n this.clear_content();\n } else {\n // Calls the `renderer` to transform a text string to DOM tokens,\n // but only when string.length > 0\n const markup = this.renderer(this._value, tokens);\n this._edit_area.innerHTML = markup;\n }\n\n this.restore_selection(anchor_idx, focus_idx);\n\n // Dispatch `perspective-expression-editor-rendered`, which signifies\n // that the editor UI has updated to its final state.\n const rendered_event = new CustomEvent(\"perspective-expression-editor-rendered\", {\n detail: {\n nodes: tokens.map(t => t.node),\n text: this._value\n }\n });\n\n this.dispatchEvent(rendered_event);\n }\n\n clear_content() {\n this._edit_area.innerHTML = \"\";\n }\n\n _render_content(content) {\n return `<span class=\"psp-expression__fragment\">${content}</span>`;\n }\n\n /**\n * After editor content has been rendered, \"un-reset\" the caret position\n * by returning it to where the user selected.\n *\n * @param {Number} absolute_anchor_idx\n * @param {Number} absolute_focus_idx\n */\n restore_selection(absolute_anchor_idx, absolute_focus_idx) {\n const selection = this.shadowRoot.getSelection();\n const tokens = this.get_tokens(this._edit_area);\n let anchor_node = this._edit_area;\n let anchor_idx = 0;\n let focus_node = this._edit_area;\n let focus_idx = 0;\n let current_idx = 0;\n\n for (const token of tokens) {\n const start_idx = current_idx;\n const end_idx = start_idx + token.text.length;\n\n if (start_idx <= absolute_anchor_idx && absolute_anchor_idx <= end_idx) {\n anchor_node = token.node;\n anchor_idx = absolute_anchor_idx - start_idx;\n }\n\n if (start_idx <= absolute_focus_idx && absolute_focus_idx <= end_idx) {\n focus_node = token.node;\n focus_idx = absolute_focus_idx - start_idx;\n }\n\n current_idx += token.text.length;\n }\n\n selection.setBaseAndExtent(anchor_node, anchor_idx, focus_node, focus_idx);\n }\n\n get_text() {\n return this._edit_area.textContent;\n }\n\n get_tokens(element) {\n const tokens = [];\n for (const node of element.childNodes) {\n if (this._ignored_nodes.includes(node.nodeName)) continue;\n switch (node.nodeType) {\n case Node.TEXT_NODE:\n tokens.push({text: node.nodeValue, node});\n break;\n case Node.ELEMENT_NODE:\n tokens.splice(tokens.length, 0, ...this.get_tokens(node));\n break;\n default:\n continue;\n }\n }\n return tokens;\n }\n\n focus() {\n this._edit_area.focus();\n }\n\n /**\n * Dispatch a `perspective-expression-editor-keyup` event containing\n * the original `keyup` event in `event.details`.\n *\n * @param {*} ev a `keyup` event.\n */\n keyup(ev) {\n const event = new CustomEvent(\"perspective-expression-editor-keyup\", {\n detail: ev\n });\n this.dispatchEvent(event);\n }\n\n /**\n * Dispatch a `perspective-expression-editor-keydown` event containing\n * the original `keyup` event in `event.details`.\n *\n * @param {*} ev a `keydown` event.\n */\n keydown(ev) {\n const event = new CustomEvent(\"perspective-expression-editor-keydown\", {\n detail: ev\n });\n this.dispatchEvent(event);\n }\n\n /**\n * When a column/text is dragged and dropped into the textbox, read it\n * properly and set selection state on the editor.\n *\n * @param {*} event\n */\n _capture_drop_data(event) {\n this._edit_area.focus();\n const data = event.dataTransfer.getData(\"text\");\n if (data !== \"\") {\n try {\n const parsed = JSON.parse(data);\n if (Array.isArray(parsed) && parsed.length > 4) {\n event.preventDefault();\n this._edit_area.textContent += `\"${parsed[0]}\"`;\n }\n } catch (e) {\n // regular text, don't do anything as browser will handle\n // the `drop` event.\n } finally {\n // When text is dropped into the editor, set the caret\n // at the end of the editor's text content as the default\n // selection fires with the caret at the beginning.\n this._reset_selection();\n this.update_content();\n }\n }\n }\n\n _reset_selection() {\n const selection = this.shadowRoot.getSelection();\n selection.setBaseAndExtent(selection.anchorNode, this._edit_area.textContent.length, selection.focusNode, this._edit_area.textContent.length);\n }\n\n /**\n * Map DOM IDs to class properties.\n */\n _register_ids() {\n this._edit_area = this.shadowRoot.querySelector(\".perspective-expression-editor__edit_area\");\n }\n\n /**\n * Map callback functions to class properties.\n */\n _register_callbacks() {\n this._edit_area.addEventListener(\"drop\", this._capture_drop_data.bind(this));\n this._edit_area.addEventListener(\"input\", this.update_content.bind(this));\n this._edit_area.addEventListener(\"keyup\", this.keyup.bind(this));\n this._edit_area.addEventListener(\"keydown\", this.keydown.bind(this));\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\nconst token_name_to_display_name = {\n columnName: \"column name\",\n leftParen: \"(\",\n rightParen: \")\",\n add: \"+\",\n subtract: \"-\",\n multiply: \"*\",\n divide: \"/\",\n percent_of: \"%\"\n};\n\nconst actual_token_to_string = token => {\n let actual;\n if (Array.isArray(token)) {\n actual = token\n .filter(x => x.tokenType.name !== \"EOF\")\n .map(x => {\n if (x.payload) {\n return x.payload;\n } else {\n return x.image;\n }\n });\n } else {\n actual = token.payload ? token.payload : token.image;\n }\n\n if (!actual || actual.length === 0) {\n actual = \"EOF\";\n }\n\n return actual;\n};\n\n/**\n * A custom error message provider for the Lexer.\n */\nexport const PerspectiveLexerErrorMessage = {\n /**\n * Builds an error message to be displayed when the Lexer finds an\n * unexpected character that cannot be matched.\n *\n * @param {*} fullText\n * @param {*} startOffset\n * @param {*} length\n * @param {*} line\n * @param {*} column\n */\n buildUnexpectedCharactersMessage: (fullText, startOffset, length, line, column) => {\n return `Ln ${line}, Col ${column}: Unexpected input \\`${fullText}\\` at character ${startOffset}`;\n }\n};\n\nexport const PerspectiveParserErrorMessage = {\n /**\n * Build an error message for when the parser is missing a mandatory token\n * in a repetition, i.e. `pow2` is a function name, but it requires a `(`\n * or column name to be syntactically correct.\n */\n buildEarlyExitMessage: options => {\n let actual = actual_token_to_string(options.actual);\n\n // A 2-dimensional array of expected paths\n const expected_path_names = options.expectedIterationPaths.map(expected => {\n let path = [];\n expected.map(x => {\n const name = \" - \" + token_name_to_display_name[x.name] ? token_name_to_display_name[x.name] : x.name;\n path.push(name);\n });\n return path.join(\", \");\n });\n return `Unexpected token: \\`${actual}\\`\\n\\nExpected one of the following tokens: \\n ${expected_path_names.join(\"\\n\")}`;\n },\n\n /**\n * Build an error message for when a token is mismatched, i.e. an opening\n * parenthesis without a matching closing parenthesis.\n */\n buildMismatchTokenMessage: options => {\n let actual = actual_token_to_string(options.actual);\n\n let expected = options.expected.name;\n\n if (token_name_to_display_name[expected]) {\n expected = token_name_to_display_name[expected];\n }\n\n let message = `Expecting token \\`${expected}\\`, but found \\`${actual}\\`.`;\n\n if (expected === \")\" || expected === \"rightParen\") {\n message += \"\\n\\nMake sure all left parentheses are matched\\nwith right parentheses.\";\n }\n\n return message;\n },\n\n /**\n * Build an error message for when a token does not fit into the grammar,\n * i.e. if the expression does not begin with a column name, `(`, or\n * any of the functional operators.\n */\n buildNoViableAltMessage: options => {\n let actual = actual_token_to_string(options.actual);\n let message = `Unexpected token: \\`${actual}\\`.`;\n\n if (options.ruleName === \"Expression\") {\n message += `\\n\\nExpected a column name, \\`(\\`,\\nor functional operator such as:\\n- \\`sqrt\\`\\n- \\`uppercase\\`\\n- \\`day_of_week\\``;\n } else if (options.ruleName === \"ColumnName\") {\n message += `\\n\\nExpected a column name or \\`(\\``;\n } else if (options.ruleName === \"TerminalColumnName\") {\n message += `\\n\\nExpected a column name after 'AS'`;\n }\n\n return message;\n }\n};\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\nimport {Lexer, createToken, tokenMatcher} from \"chevrotain\";\nimport {PerspectiveLexerErrorMessage} from \"./error\";\n\nexport const vocabulary = {};\n\n/**\n * Create token types to categorize computations:\n * - OperatorTokenType: operators that require left and right-hand side operands\n * - FunctionTokenType: operators that have 1...n comma separated parameters.\n */\nexport const OperatorTokenType = createToken({\n name: \"OperatorTokenType\",\n pattern: Lexer.NA\n});\n\nexport const FunctionTokenType = createToken({\n name: \"FunctionTokenType\",\n pattern: Lexer.NA\n});\n\nexport const ColumnNameTokenType = createToken({\n name: \"ColumnNameTokenType\",\n pattern: Lexer.NA\n});\n\nexport const UpperLowerCaseTokenType = createToken({\n name: \"UpperLowerTokenType\",\n pattern: /(uppercase|lowercase)/\n});\n\n// Create tokens for column names and computed function names\nexport const COLUMN_NAME_REGEX_PATTERN = /([\"'])(.*?[^\\\\])\\1/y;\n\n/**\n * Given a string from which to extract a column name, extract the column name\n * in-between the quotation marks and set it as the `payload` property. In the\n * CST visitor, use `.payload` to access the true column name value.\n *\n * @param {String} string\n * @param {Number} start_offset\n */\nconst match_column_name = function(string, start_offset) {\n COLUMN_NAME_REGEX_PATTERN.lastIndex = start_offset;\n const result = COLUMN_NAME_REGEX_PATTERN.exec(string);\n\n if (result !== null && result.length === 3) {\n result.payload = result[2]; // 2nd capture group is in-between quotes\n }\n\n return result;\n};\n\n// Column names are always encased inside quotes.\nexport const ColumnName = createToken({\n name: \"columnName\",\n pattern: {exec: match_column_name},\n line_breaks: false,\n categories: [ColumnNameTokenType]\n});\n\n// Allow users to specify custom names using `AS`\nexport const As = createToken({\n name: \"as\",\n label: \"Name new column as\",\n pattern: /(AS|As|as)/,\n longer_alt: UpperLowerCaseTokenType\n});\n\n// Mathematical operators, in the format \"x\" + \"y\"\n\nexport const Add = createToken({\n name: \"add\",\n label: \"+\",\n pattern: /\\+/,\n categories: [OperatorTokenType]\n});\n\nexport const Subtract = createToken({\n name: \"subtract\",\n label: \"-\",\n pattern: /\\-/,\n categories: [OperatorTokenType]\n});\n\nexport const Multiply = createToken({\n name: \"multiply\",\n label: \"*\",\n pattern: /\\*/,\n categories: [OperatorTokenType]\n});\n\nexport const Divide = createToken({\n name: \"divide\",\n label: \"/\",\n pattern: /\\//,\n categories: [OperatorTokenType]\n});\n\nexport const Pow = createToken({\n name: \"pow\",\n label: \"x ^ y\",\n pattern: /\\^/,\n categories: [OperatorTokenType]\n});\n\nexport const PercentOf = createToken({\n name: \"percent_of\",\n label: \"x % y\",\n pattern: /\\%/,\n categories: [OperatorTokenType]\n});\n\nexport const Equals = createToken({\n name: \"equals\",\n label: \"x == y\",\n pattern: /\\==/,\n categories: [OperatorTokenType]\n});\n\nexport const NotEquals = createToken({\n name: \"not_equals\",\n label: \"x != y\",\n pattern: /\\!=/,\n categories: [OperatorTokenType]\n});\n\nexport const GreaterThan = createToken({\n name: \"greater_than\",\n label: \"x > y\",\n pattern: /\\>/,\n categories: [OperatorTokenType]\n});\n\nexport const LessThan = createToken({\n name: \"less_than\",\n label: \"x < y\",\n pattern: /\\</,\n categories: [OperatorTokenType]\n});\n\nexport const Is = createToken({\n name: \"is\",\n label: \"x is y\",\n pattern: /is/,\n categories: [OperatorTokenType]\n});\n\n// Function operators, in the format func(\"x\")\nexport const Sqrt = createToken({\n name: \"sqrt\",\n label: \"sqrt(x)\",\n pattern: /sqrt/,\n categories: [FunctionTokenType]\n});\n\nexport const Pow2 = createToken({\n name: \"pow2\",\n label: \"x ^ 2\",\n pattern: /pow2/,\n categories: [FunctionTokenType]\n});\n\nexport const Abs = createToken({\n name: \"abs\",\n label: \"abs(x)\",\n pattern: /abs/,\n categories: [FunctionTokenType]\n});\n\nexport const Invert = createToken({\n name: \"invert\",\n label: \"1 / x\",\n pattern: /invert/,\n categories: [FunctionTokenType]\n});\n\nexport const Log = createToken({\n name: \"log\",\n label: \"log(x)\",\n pattern: /log/,\n categories: [FunctionTokenType]\n});\n\nexport const Exp = createToken({\n name: \"exp\",\n label: \"exp(x)\",\n pattern: /exp/,\n categories: [FunctionTokenType]\n});\n\n// Bucketing functions\n\nexport const Bin10 = createToken({\n name: \"bin10\",\n label: \"Bucket x by 10\",\n pattern: /bin10/,\n categories: [FunctionTokenType]\n});\n\nexport const Bin100 = createToken({\n name: \"bin100\",\n label: \"Bucket x by 100\",\n pattern: /bin100/,\n categories: [FunctionTokenType]\n});\n\nexport const Bin1000 = createToken({\n name: \"bin1000\",\n label: \"Bucket x by 1000\",\n pattern: /bin1000/,\n categories: [FunctionTokenType]\n});\n\nexport const Bin10th = createToken({\n name: \"bin10th\",\n label: \"Bucket x by 1/10\",\n pattern: /bin10th/,\n categories: [FunctionTokenType]\n});\n\nexport const Bin100th = createToken({\n name: \"bin100th\",\n label: \"Bucket x by 1/100\",\n pattern: /bin100th/,\n categories: [FunctionTokenType]\n});\n\nexport const Bin1000th = createToken({\n name: \"bin1000th\",\n label: \"Bucket x by 1/1000\",\n pattern: /bin1000th/,\n categories: [FunctionTokenType]\n});\n\n// String functions\n\nexport const Length = createToken({\n name: \"length\",\n label: \"length(x)\",\n pattern: /length/,\n categories: [FunctionTokenType]\n});\n\nexport const Lowercase = createToken({\n name: \"lowercase\",\n label: \"lowercase(x)\",\n pattern: /lowercase/,\n categories: [FunctionTokenType]\n});\n\nexport const Uppercase = createToken({\n name: \"uppercase\",\n label: \"uppercase(x)\",\n pattern: /uppercase/,\n categories: [FunctionTokenType]\n});\n\nexport const ConcatComma = createToken({\n name: \"concat_comma\",\n label: \"Concat(x, y) with comma\",\n pattern: /concat_comma/,\n categories: [FunctionTokenType]\n});\n\nexport const ConcatSpace = createToken({\n name: \"concat_space\",\n label: \"Concat(x, y) with space\",\n pattern: /concat_space/,\n categories: [FunctionTokenType]\n});\n\n// Date functions\n\nexport const HourOfDay = createToken({\n name: \"hour_of_day\",\n label: \"Hour of day\",\n pattern: /hour_of_day/,\n categories: [FunctionTokenType]\n});\n\nexport const DayOfWeek = createToken({\n name: \"day_of_week\",\n label: \"Day of week\",\n pattern: /day_of_week/,\n categories: [FunctionTokenType]\n});\n\nexport const MonthOfYear = createToken({\n name: \"month_of_year\",\n label: \"Month of year\",\n pattern: /month_of_year/,\n categories: [FunctionTokenType]\n});\n\nexport const SecondBucket = createToken({\n name: \"second_bucket\",\n label: \"Bucket(x) by seconds\",\n pattern: /second_bucket/,\n categories: [FunctionTokenType]\n});\n\nexport const MinuteBucket = createToken({\n name: \"minute_bucket\",\n label: \"Bucket(x) by minutes\",\n pattern: /minute_bucket/,\n categories: [FunctionTokenType]\n});\n\nexport const HourBucket = createToken({\n name: \"hour_bucket\",\n label: \"Bucket(x) by hours\",\n pattern: /hour_bucket/,\n categories: [FunctionTokenType]\n});\n\nexport const DayBucket = createToken({\n name: \"day_bucket\",\n pattern: /day_bucket/,\n label: \"Bucket(x) by day\",\n categories: [FunctionTokenType]\n});\n\nexport const WeekBucket = createToken({\n name: \"week_bucket\",\n pattern: /week_bucket/,\n label: \"Bucket(x) by week\",\n categories: [FunctionTokenType]\n});\n\nexport const MonthBucket = createToken({\n name: \"month_bucket\",\n pattern: /month_bucket/,\n label: \"Bucket(x) by month\",\n categories: [FunctionTokenType]\n});\n\nexport const YearBucket = createToken({\n name: \"year_bucket\",\n pattern: /year_bucket/,\n label: \"Bucket(x) by year\",\n categories: [FunctionTokenType]\n});\n\n// Parenthesis\nexport const LeftParen = createToken({\n name: \"leftParen\",\n label: \"(\",\n pattern: /\\(/\n});\n\nexport const RightParen = createToken({\n name: \"rightParen\",\n label: \")\",\n pattern: /\\)/\n});\n\n// Comma\nexport const Comma = createToken({\n name: \"comma\",\n label: \",\",\n pattern: /,/\n});\n\n// Whitespace\nexport const Whitespace = createToken({\n name: \"whitespace\",\n pattern: /\\s+/\n});\n\n// Order of tokens is important\nconst tokens = [\n Whitespace,\n Comma,\n As,\n ColumnName,\n LeftParen,\n RightParen,\n Add,\n Subtract,\n Multiply,\n Divide,\n Pow,\n PercentOf,\n Equals,\n NotEquals,\n GreaterThan,\n LessThan,\n Sqrt,\n Pow2,\n Abs,\n Invert,\n Log,\n Exp,\n Bin1000th,\n Bin1000,\n Bin100th,\n Bin100,\n Bin10th,\n Bin10,\n Length,\n Is,\n ConcatComma,\n ConcatSpace,\n Uppercase,\n Lowercase,\n HourOfDay,\n DayOfWeek,\n MonthOfYear,\n SecondBucket,\n MinuteBucket,\n HourBucket,\n DayBucket,\n WeekBucket,\n MonthBucket,\n YearBucket,\n UpperLowerCaseTokenType\n];\n\nexport const function_tokens = [];\nexport const operator_tokens = [];\n\n// Add each token to the vocabulary exported for the Parser\ntokens.forEach(t => {\n vocabulary[t.name] = t;\n let raw = t.PATTERN.source;\n if (raw) {\n if (raw.indexOf(\"\\\\\") == 0) {\n raw = raw.substring(1);\n }\n }\n\n if (tokenMatcher(t, FunctionTokenType)) {\n function_tokens.push(raw);\n } else if (tokenMatcher(t, OperatorTokenType)) {\n operator_tokens.push(raw);\n }\n});\n\nexport const ComputedExpressionColumnLexer = new Lexer(tokens, {\n errorMessageProvider: PerspectiveLexerErrorMessage\n});\n\n/**\n * Return a list of tokens with whitespace tokens removed, as the parser and\n * visitor do not support whitespace tokens (but they are needed for the\n * expression editor to function correctly).\n *\n * @param {Array{IToken}} tokens\n */\nexport const clean_tokens = function(tokens) {\n const cleaned_tokens = [];\n\n for (const token of tokens) {\n if (!tokenMatcher(token, Whitespace)) {\n cleaned_tokens.push(token);\n }\n }\n\n return cleaned_tokens;\n};\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\nimport {CstParser} from \"chevrotain\";\nimport {PerspectiveParserErrorMessage} from \"./error\";\n\n/**\n * A Chevrotain expression parser that produces a concrete syntax tree\n * representing every single parsed token.\n */\nexport class ComputedExpressionColumnParser extends CstParser {\n constructor(vocabulary) {\n super(vocabulary, {\n errorMessageProvider: PerspectiveParserErrorMessage\n });\n\n /**\n * The overarching rule - required so that one single array of\n * parsed computed columns can be maintained across multiple operator,\n * functional, and parenthetical expressions.\n */\n this.RULE(\"SuperExpression\", () => {\n this.SUBRULE(this.Expression);\n });\n\n /**\n * The `base rule` for all expressions, except that the state of the\n * computed column array can be changed between each invocation of\n * this rule.\n */\n this.RULE(\"Expression\", () => {\n this.SUBRULE(this.OperatorComputedColumn);\n });\n\n /**\n * A computed column in `x + y` notation. Because it appears earlier,\n * it has lower precedence compared to the rules that are to follow.\n */\n this.RULE(\"OperatorComputedColumn\", () => {\n this.SUBRULE(this.AdditionOperatorComputedColumn, {LABEL: \"left\"});\n\n // 0...n operators and right-hand expressions are available here.\n // Though a single column name is syntactically valid, it does\n // not actually generate any computed columns. However, this\n // rule must allow for 0...n and not 1...n as it allows for\n // a function-only expression (`sqrt(\"a\")`) without a right\n // hand side of the expression.\n this.MANY(() => {\n this.SUBRULE(this.Operator);\n this.SUBRULE2(this.AdditionOperatorComputedColumn, {LABEL: \"right\"});\n this.OPTION(() => {\n this.SUBRULE(this.As, {LABEL: \"as\"});\n });\n });\n });\n\n /**\n * A computed column in `x + y` or `x - y` notation. To maintain a\n * notion of operator precedence, different rules must be created for\n * add/subtract and multiply/divide operators, even if the actual\n * evaluator logic is the same.\n */\n this.RULE(\"AdditionOperatorComputedColumn\", () => {\n this.SUBRULE(this.MultiplicationOperatorComputedColumn, {LABEL: \"left\"});\n this.MANY(() => {\n this.SUBRULE(this.AdditionOperator);\n this.SUBRULE2(this.MultiplicationOperatorComputedColumn, {LABEL: \"right\"});\n this.OPTION(() => {\n this.SUBRULE(this.As, {LABEL: \"as\"});\n });\n });\n });\n\n /**\n * A computed column in `x * y` or `x / y` notation. Because it is\n * defined after the addition and generic operators, it is evaluated\n * before the addition/generic operators - hence satisfying precedence.\n */\n this.RULE(\"MultiplicationOperatorComputedColumn\", () => {\n this.SUBRULE(this.ExponentOperatorComputedColumn, {LABEL: \"left\"});\n this.MANY(() => {\n this.SUBRULE(this.MultiplicationOperator);\n this.SUBRULE2(this.ExponentOperatorComputedColumn, {LABEL: \"right\"});\n this.OPTION(() => {\n this.SUBRULE(this.As, {LABEL: \"as\"});\n });\n });\n });\n\n /**\n * A computed column in `x ^ y` notation. Exponents are evaluated before\n * multiplication/division and addition/subtraction, so it is defined\n * after those rules to give itself precedence.\n */\n this.RULE(\"ExponentOperatorComputedColumn\", () => {\n this.SUBRULE(this.ColumnName, {LABEL: \"left\"});\n this.MANY(() => {\n this.SUBRULE(this.ExponentOperator);\n this.SUBRULE2(this.ColumnName, {LABEL: \"right\"});\n this.OPTION(() => {\n this.SUBRULE(this.As, {LABEL: \"as\"});\n });\n });\n });\n\n /**\n * A computed column in `f(x)` notation. It is evaluated before all\n * operator computed columns.\n */\n this.RULE(\"FunctionComputedColumn\", () => {\n this.SUBRULE(this.Function);\n this.CONSUME(vocabulary[\"leftParen\"]);\n\n this.AT_LEAST_ONE_SEP({\n SEP: vocabulary[\"comma\"],\n DEF: () => {\n // Allow for arbitary expressions inside functions without\n // use of parentheses.\n this.SUBRULE(this.Expression, {LABEL: \"param\"});\n }\n });\n this.CONSUME(vocabulary[\"rightParen\"]);\n this.OPTION(() => {\n this.SUBRULE(this.As, {LABEL: \"as\"});\n });\n });\n\n this.RULE(\"Function\", () => {\n this.OR([\n {ALT: () => this.CONSUME(vocabulary[\"sqrt\"])},\n {ALT: () => this.CONSUME(vocabulary[\"pow2\"])},\n {ALT: () => this.CONSUME(vocabulary[\"abs\"])},\n {ALT: () => this.CONSUME(vocabulary[\"invert\"])},\n {ALT: () => this.CONSUME(vocabulary[\"log\"])},\n {ALT: () => this.CONSUME(vocabulary[\"exp\"])},\n {ALT: () => this.CONSUME(vocabulary[\"bin1000th\"])},\n {ALT: () => this.CONSUME(vocabulary[\"bin1000\"])},\n {ALT: () => this.CONSUME(vocabulary[\"bin100th\"])},\n {ALT: () => this.CONSUME(vocabulary[\"bin100\"])},\n {ALT: () => this.CONSUME(vocabulary[\"bin10th\"])},\n {ALT: () => this.CONSUME(vocabulary[\"bin10\"])},\n {ALT: () => this.CONSUME(vocabulary[\"length\"])},\n {ALT: () => this.CONSUME(vocabulary[\"uppercase\"])},\n {ALT: () => this.CONSUME(vocabulary[\"lowercase\"])},\n {ALT: () => this.CONSUME(vocabulary[\"concat_comma\"])},\n {ALT: () => this.CONSUME(vocabulary[\"concat_space\"])},\n {ALT: () => this.CONSUME(vocabulary[\"hour_of_day\"])},\n {ALT: () => this.CONSUME(vocabulary[\"day_of_week\"])},\n {ALT: () => this.CONSUME(vocabulary[\"month_of_year\"])},\n {ALT: () => this.CONSUME(vocabulary[\"second_bucket\"])},\n {ALT: () => this.CONSUME(vocabulary[\"minute_bucket\"])},\n {ALT: () => this.CONSUME(vocabulary[\"hour_bucket\"])},\n {ALT: () => this.CONSUME(vocabulary[\"day_bucket\"])},\n {ALT: () => this.CONSUME(vocabulary[\"week_bucket\"])},\n {ALT: () => this.CONSUME(vocabulary[\"month_bucket\"])},\n {ALT: () => this.CONSUME(vocabulary[\"year_bucket\"])}\n ]);\n });\n\n /**\n * Consume an addition or subtraction symbol. Rules for operators with\n * defined precedence rules are separated from the general\n * `Operator` rule.\n */\n this.RULE(\"AdditionOperator\", () => {\n this.OR([{ALT: () => this.CONSUME(vocabulary[\"add\"])}, {ALT: () => this.CONSUME(vocabulary[\"subtract\"])}]);\n });\n\n this.RULE(\"MultiplicationOperator\", () => {\n this.OR([{ALT: () => this.CONSUME(vocabulary[\"multiply\"])}, {ALT: () => this.CONSUME(vocabulary[\"divide\"])}]);\n });\n\n this.RULE(\"ExponentOperator\", () => {\n this.CONSUME(vocabulary[\"pow\"]);\n });\n\n this.RULE(\"Operator\", () => {\n this.OR([\n {ALT: () => this.CONSUME(vocabulary[\"percent_of\"])},\n {ALT: () => this.CONSUME(vocabulary[\"equals\"])},\n {ALT: () => this.CONSUME(vocabulary[\"not_equals\"])},\n {ALT: () => this.CONSUME(vocabulary[\"greater_than\"])},\n {ALT: () => this.CONSUME(vocabulary[\"less_than\"])},\n {ALT: () => this.CONSUME(vocabulary[\"is\"])}\n ]);\n });\n\n /**\n * A special rule for column names used as alias after `as` to prevent\n * further evaluation of possible expressions.\n */\n this.RULE(\"TerminalColumnName\", () => {\n this.CONSUME(vocabulary[\"columnName\"]);\n });\n\n /**\n * A rule for aliasing computed columns - placed at the top so that it\n * is evaluated after everything else.\n *\n * TODO: make AS left evaluative by default: an expression like\n * x + y + z as \"abc\" currently breaks to abc + z, when it should be\n * x + abc.\n */\n this.RULE(\"As\", () => {\n this.CONSUME(vocabulary[\"as\"]);\n this.SUBRULE(this.TerminalColumnName);\n });\n\n /**\n * A column name, which can evaluate to a parenthetical expression,\n * a functional column, or a literal column name - a string\n * wrapped in double or single quotes.\n */\n this.RULE(\"ColumnName\", () => {\n this.OR([{ALT: () => this.SUBRULE(this.ParentheticalExpression)}, {ALT: () => this.SUBRULE(this.FunctionComputedColumn)}, {ALT: () => this.CONSUME(vocabulary[\"columnName\"])}], {\n ERR_MSG: \"Expected a column name (wrapped in double quotes) or a parenthesis-wrapped expression.\"\n });\n });\n\n /**\n * The rule for parenthetical expressions, which consume parentheses\n * and resolve to this.Expression. Because it is lowest in the\n * tree, it is evaluated before everything else.\n */\n this.RULE(\"ParentheticalExpression\", () => {\n this.CONSUME(vocabulary[\"leftParen\"]);\n this.SUBRULE(this.Expression);\n this.CONSUME(vocabulary[\"rightParen\"]);\n });\n\n this.performSelfAnalysis();\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\n// TODO: these have been renamed compared to old computed columns, make sure\n// names are consistent throughout.\nexport const COMPUTED_FUNCTION_FORMATTERS = {\n \"+\": (x, y) => `(${x} + ${y})`,\n \"-\": (x, y) => `(${x} - ${y})`,\n \"*\": (x, y) => `(${x} * ${y})`,\n \"/\": (x, y) => `(${x} / ${y})`,\n \"%\": (x, y) => `(${x} %% ${y})`,\n \"==\": (x, y) => `(${x} == ${y})`,\n \"!=\": (x, y) => `(${x} != ${y})`,\n \">\": (x, y) => `(${x} > ${y})`,\n \"<\": (x, y) => `(${x} < ${y})`,\n \"^\": (x, y) => `(${x} ^ ${y})`,\n invert: x => `(1 / ${x})`,\n log: x => `log(${x})`,\n exp: x => `exp(${x})`,\n pow2: x => `(${x} ^ 2)`,\n sqrt: x => `sqrt(${x})`,\n abs: x => `abs(${x})`,\n bin10: x => `bin10(${x})`,\n bin100: x => `bin100(${x})`,\n bin1000: x => `bin1000(${x})`,\n bin10th: x => `bin10th(${x})`,\n bin100th: x => `bin100th(${x})`,\n bin1000th: x => `bin1000th(${x})`,\n uppercase: x => `uppercase(${x})`,\n lowercase: x => `lowercase(${x})`,\n length: x => `length(${x})`,\n is: (x, y) => `(${x} is ${y})`,\n concat_space: (x, y) => `concat_space(${x}, ${y})`,\n concat_comma: (x, y) => `concat_comma(${x}, ${y})`,\n hour_of_day: x => `hour_of_day(${x})`,\n day_of_week: x => `day_of_week(${x})`,\n month_of_year: x => `month_of_year(${x})`,\n second_bucket: x => `second_bucket(${x})`,\n minute_bucket: x => `minute_bucket(${x})`,\n hour_bucket: x => `hour_bucket(${x})`,\n day_bucket: x => `day_bucket(${x})`,\n week_bucket: x => `week_bucket(${x})`,\n month_bucket: x => `month_bucket(${x})`,\n year_bucket: x => `year_bucket(${x})`\n};\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\nimport {Lexer, createToken, tokenMatcher} from \"chevrotain\";\nimport {PerspectiveLexerErrorMessage} from \"./error\";\nimport {clean_tokens, Comma, ColumnName, As, Whitespace, LeftParen, RightParen, OperatorTokenType, FunctionTokenType, UpperLowerCaseTokenType} from \"./lexer\";\nimport {ComputedExpressionColumnParser} from \"./parser\";\nimport {COMPUTED_FUNCTION_FORMATTERS} from \"./formatter\";\n\nconst token_types = {FunctionTokenType, OperatorTokenType};\n\n/**\n * A more complex suggestion object for computed expressions, which may suggest\n * functions, operators, and column names, each with their own metadata.\n */\nexport class ComputedExpressionAutocompleteSuggestion {\n /**\n * Construct a new autocomplete suggestion.\n *\n * @param {String} label the text shown to the user\n * @param {String} value the text used to replace inside the input\n * @param {String} pattern the actual string that makes up the token\n * @param {String} signature a Typescript-style signature for the function\n * @param {String} help a help string displayed in the UI\n * @param {Array<String>} input_types input data types for the suggestion\n * function or operator.\n * @param {String} return_type the return type of the computed column\n * @param {Number} num_params the number of input columns required by the\n * function or operator.\n * @param {Boolean} is_column_name whether the item is a column name or not,\n * as additional styling will be applied to column names.\n */\n constructor({label, value, pattern, signature, help, input_types, return_type, num_params, is_column_name} = {}) {\n this.label = label;\n this.value = value;\n this.pattern = pattern;\n this.input_types = input_types;\n this.return_type = return_type;\n this.num_params = num_params;\n this.signature = signature;\n this.help = help;\n this.is_column_name = is_column_name || false;\n }\n}\n\nclass PerspectiveComputedExpressionParser {\n constructor() {\n this.is_initialized = false;\n this._vocabulary = {};\n this._tokens = [Whitespace, Comma, As, ColumnName, LeftParen, RightParen];\n this._metadata;\n this._lexer;\n this._parser;\n this._visitor;\n }\n\n init(metadata) {\n if (this.is_initialized) {\n return;\n }\n\n // Add base tokens to the vocabulary\n for (const token of this._tokens) {\n this._vocabulary[token.name] = token;\n }\n\n // Computed function metadata from the Perspective table\n this._metadata = metadata;\n\n // Initialize lexer, parser, and visitor\n this._lexer = this._construct_lexer();\n this._parser = this._construct_parser();\n this._visitor = this._construct_visitor();\n\n this.is_initialized = true;\n }\n\n /**\n * Given an expression, transform it into a list of tokens.\n *\n * @param {String} expression\n */\n lex(expression) {\n this._check_initialized();\n const result = this._lexer.tokenize(expression);\n\n // Remove whitespace tokens\n result.tokens = clean_tokens(result.tokens);\n\n return result;\n }\n\n /**\n * Given a string expression of the form '\"column\" +, -, *, / \"column\",\n * parse it and return a computed column configuration object.\n *\n * @param {String} expression\n */\n parse(expression) {\n this._check_initialized();\n const lex_result = this.lex(expression);\n\n if (lex_result.errors.length > 0) {\n let message = lex_result.errors[0].message;\n throw new Error(message);\n }\n\n // calling `parser.input` resets state.\n this._parser.input = lex_result.tokens;\n\n const cst = this._parser.SuperExpression();\n\n if (this._parser.errors.length > 0) {\n let message = this._parser.errors[0].message;\n throw new Error(message);\n }\n\n return this._visitor.visit(cst);\n }\n\n /**\n * Given a lexer result and the raw expression that was lexed,\n * suggest syntactically possible tokens. If the last non-whitespace/comma\n * token is a column name, only show operators that take the correct type.\n *\n * @param {ILexingResult} lexer_result\n * @param {String} expression\n * @param {Array[String]} input_types an array of data types by which to\n * filter down the suggestions.\n * @param {Boolean} match_types whether suggestions should have matching\n * input and return types.\n * @returns {Array}\n */\n get_autocomplete_suggestions(expression, lexer_result, input_types, match_types) {\n this._check_initialized();\n let initial_suggestions = this._parser.computeContentAssist(\"SuperExpression\", []);\n\n if (!lexer_result) {\n return this._apply_suggestion_metadata(initial_suggestions);\n }\n\n if (lexer_result.errors.length > 0) {\n // Check if the last string fragment is partial AND not a\n // column name (not in quotes). If true, the suggest function\n // names that match.\n const partial_function = this.extract_partial_function(expression);\n\n // If the last fragment is partial, check if the last parsed\n // token is a column name, as we should not be sending suggestions\n // for a partial function that immediately follows a column name,\n // i.e. `\"Sales\" a`.\n const last_token = this.get_last_token(lexer_result);\n const is_column_name = last_token && tokenMatcher(last_token, ColumnName);\n\n if (partial_function && partial_function.search(/[\"']$/) === -1 && !is_column_name) {\n // Remove open parenthesis\n const suggestions = this._apply_suggestion_metadata(initial_suggestions.slice(1), input_types);\n const exact_matches = [];\n const fuzzy_matches = [];\n\n for (const suggestion of suggestions) {\n const lower_value = suggestion.value.toLowerCase().trim();\n const lower_input = partial_function.toLowerCase().trim();\n\n if (lower_value.startsWith(lower_input)) {\n exact_matches.push(suggestion);\n } else if (lower_value.includes(lower_input)) {\n fuzzy_matches.push(suggestion);\n }\n }\n return exact_matches.concat(fuzzy_matches);\n } else {\n // Expression has unrecoverable errors\n return [];\n }\n }\n\n // Remove whitespace tokens\n lexer_result.tokens = clean_tokens(lexer_result.tokens);\n const suggestions = this._parser.computeContentAssist(\"SuperExpression\", lexer_result.tokens);\n return this._apply_suggestion_metadata(suggestions, input_types, match_types);\n }\n\n /**\n * Try to extract a partial function name, i.e. a string not within quotes\n * and not ending with a parenthesis.\n *\n * - \"Sales\" + (s => \"s\"\n * - \"(ab\" => \"ab\"\n *\n * @param {String} expression\n */\n extract_partial_function(expression) {\n this._check_initialized();\n const matches = expression.match(/([^(,\\s]+$)/);\n\n if (matches && matches.length > 0) {\n const partial = matches[0];\n\n // Ignore if match is a partial column name, i.e. has quotes\n if (!/['\"]/.test(partial)) {\n return matches[0];\n }\n }\n }\n\n /**\n * Return the last token from a lexer result, or undefined if there are no\n * tokens at all. Whitespace tokens are NOT removed before search.\n *\n * @param {ILexingResult} lexer_result\n */\n get_last_token(lexer_result) {\n const tokens = lexer_result.tokens;\n const last_idx = tokens.length - 1;\n if (last_idx >= 0) {\n return tokens[last_idx];\n }\n }\n\n /**\n * Look backwards through a list of tokens, checking whether each token is\n * of a type in the `types` array, stopping after `limit` tokens.\n * Whitespace tokens are NOT removed before search.\n *\n * @param {Array{TokenType}} types An array of token types to look through.\n * @param {ILexingResult} lexer_result A result from the lexer, containing\n * valid tokens and errors.\n * @param {Number} limit the number of tokens to search through before\n * exiting or returning a valid result. If limit > tokens.length or is\n * undefined, search all tokens.\n */\n get_last_token_with_types(types, lexer_result, limit) {\n const tokens = lexer_result.tokens;\n if (!limit || limit <= 0 || limit >= tokens.length) {\n limit = tokens.length;\n }\n for (let i = tokens.length - 1; i >= tokens.length - limit; i--) {\n for (const type of types) {\n if (tokenMatcher(tokens[i], type)) {\n return tokens[i];\n }\n }\n }\n }\n\n /**\n * Given a metadata object containing information about computed\n * functions, construct tokens and a vocabulary object for the parser.\n */\n _construct_lexer() {\n const bin_functions = [\"bin1000th\", \"bin1000\", \"bin100th\", \"bin100\", \"bin10th\", \"bin10\"];\n\n for (const key in this._metadata) {\n const meta = this._metadata[key];\n\n if (bin_functions.includes(meta.name)) {\n continue;\n }\n\n const token = this._make_token(meta);\n this._tokens.push(token);\n this._vocabulary[token.name] = token;\n }\n\n // Create and add bin functions in a specific order for the parser\n for (const bin_function of bin_functions) {\n const meta = this._metadata[bin_function];\n const token = this._make_token(meta);\n this._tokens.push(token);\n this._vocabulary[token.name] = token;\n }\n\n // Add uppercase/lowercase token last so it does not conflict\n this._tokens.push(UpperLowerCaseTokenType);\n this._vocabulary[UpperLowerCaseTokenType.name] = UpperLowerCaseTokenType;\n\n return new Lexer(this._tokens, {\n errorMessageProvider: PerspectiveLexerErrorMessage\n });\n }\n\n /**\n * Convenience method to create a Chevrotain token.\n *\n * @param {Object} meta\n */\n _make_token(meta) {\n const regex = new RegExp(meta.pattern);\n\n const token = createToken({\n name: meta.name,\n label: meta.label,\n pattern: regex,\n categories: [token_types[meta.category]]\n });\n\n // float/int and date/datetime are interchangable\n if (meta.input_type === \"float\") {\n token.input_types = [\"float\", \"integer\"];\n } else if (meta.input_type === \"datetime\") {\n token.input_types = [\"datetime\", \"date\"];\n } else {\n token.input_types = [meta.input_type];\n }\n\n token.return_type = meta.return_type;\n token.num_params = meta.num_params;\n token.signature = meta.signature;\n token.help = meta.help;\n\n return token;\n }\n\n /**\n * Construct a singleton parser instance that will be reused.\n */\n _construct_parser() {\n return new ComputedExpressionColumnParser(this._vocabulary);\n }\n\n /**\n * Define and construct a singleton visitor instance.\n */\n _construct_visitor() {\n const base_visitor = this._parser.getBaseCstVisitorConstructor();\n\n // The visitor has to be defined inside this method, as it requires\n // base_visitor from the parser instance\n class ComputedExpressionColumnVisitor extends base_visitor {\n constructor() {\n super();\n this.validateVisitor();\n }\n\n /**\n * Given a parsed expression, visit each node and return an array\n * of computed column specifications representing the recursive\n * tree-walk of all computed columns and their dependencies.\n *\n * @param {*} ctx\n */\n SuperExpression(ctx) {\n let computed_columns = [];\n\n this.visit(ctx.Expression, computed_columns);\n\n // An expression may be syntactically valid but does not\n // generate new computed columns, i.e. the expression '\"Sales\"',\n // which is syntactically valid but does not have enough\n // information to generate a computed column. In the future\n // when each column is editable as an expression by default,\n // this will not be an issue.\n if (computed_columns.length === 0) {\n throw new Error(\"Expression did not generate any computed columns\");\n }\n\n return computed_columns;\n }\n\n Expression(ctx, computed_columns) {\n return this.visit(ctx.OperatorComputedColumn, computed_columns);\n }\n\n /**\n * Common logic for parsing through a computed column in operator\n * syntax, with `get_operator` returning an operator of the\n * correct type, which is important for associativity.\n *\n * @param {*} ctx\n * @param {*} computed_columns\n * @param {*} get_operator\n */\n _VisitOperatorComputedColumn(ctx, computed_columns, get_operator) {\n let left = this.visit(ctx.left, computed_columns);\n\n let final_column_name;\n\n if (ctx.right) {\n let previous;\n\n ctx.right.forEach((rhs, idx) => {\n let operator = get_operator(ctx, idx);\n\n if (!operator) {\n return;\n }\n\n let right = this.visit(rhs, computed_columns);\n\n // If there is a previous value, use it, otherwise use\n // the leftmost value. This enables expressions such as\n // a + b / c * d + e ... ad infinitum\n const left_hand = previous ? previous : left;\n\n // Use custom name if provided through `AS/as/As`\n let as;\n\n if (ctx.as && idx < ctx.as.length) {\n as = this.visit(ctx.as[idx]);\n }\n\n const column_name = as ? as : COMPUTED_FUNCTION_FORMATTERS[operator](left_hand, right);\n\n computed_columns.push({\n column: column_name,\n computed_function_name: operator,\n inputs: [left_hand, right]\n });\n\n previous = column_name;\n });\n\n final_column_name = previous;\n } else {\n // If there are no more right-hand tokens, return the\n // column name so it can be used as the tree traversal\n // goes upwards.\n final_column_name = left;\n }\n\n return final_column_name;\n }\n\n /**\n * Visit a single computed column in operator notation and generate\n * its specification.\n *\n * @param {*} ctx\n */\n OperatorComputedColumn(ctx, computed_columns) {\n const get_operator = (ctx, idx) => this.visit(ctx.Operator[idx]);\n return this._VisitOperatorComputedColumn(ctx, computed_columns, get_operator);\n }\n\n AdditionOperatorComputedColumn(ctx, computed_columns) {\n const get_operator = (ctx, idx) => this.visit(ctx.AdditionOperator[idx]);\n return this._VisitOperatorComputedColumn(ctx, computed_columns, get_operator);\n }\n\n MultiplicationOperatorComputedColumn(ctx, computed_columns) {\n const get_operator = (ctx, idx) => this.visit(ctx.MultiplicationOperator[idx]);\n return this._VisitOperatorComputedColumn(ctx, computed_columns, get_operator);\n }\n\n ExponentOperatorComputedColumn(ctx, computed_columns) {\n const get_operator = (ctx, idx) => this.visit(ctx.ExponentOperator[idx]);\n return this._VisitOperatorComputedColumn(ctx, computed_columns, get_operator);\n }\n\n /**\n * Visit a single computed column in functional notation and\n * generate its specification.\n *\n * @param {*} ctx\n * @param {*} computed_columns\n */\n FunctionComputedColumn(ctx, computed_columns) {\n const fn = this.visit(ctx.Function);\n\n // Functions have 1...n parameters\n let input_columns = [];\n\n for (const param of ctx.param) {\n input_columns.push(this.visit(param, computed_columns));\n }\n\n // Use custom name if provided through `AS/as/As`me =\n const as = this.visit(ctx.as);\n const column_name = as ? as : COMPUTED_FUNCTION_FORMATTERS[fn](...input_columns);\n\n const computed = {\n column: column_name,\n computed_function_name: fn,\n inputs: input_columns\n };\n\n computed_columns.push(computed);\n\n // Return the column name so it can be used up the chain\n return column_name;\n }\n\n /**\n * Parse and return a column name to be included in the computed\n * config.\n * @param {*} ctx\n */\n ColumnName(ctx, computed_columns) {\n // `image` contains the raw string, `payload` contains the\n // string without quotes.\n if (ctx.ParentheticalExpression) {\n return this.visit(ctx.ParentheticalExpression, computed_columns);\n } else if (ctx.FunctionComputedColumn) {\n return this.visit(ctx.FunctionComputedColumn, computed_columns);\n } else {\n return ctx.columnName[0].payload;\n }\n }\n\n /**\n * Parse and return a column name to be included in the computed\n * config, and explicitly not parsed as a parenthetical expression.\n *\n * @param {*} ctx\n */\n TerminalColumnName(ctx) {\n return ctx.columnName[0].payload;\n }\n\n AdditionOperator(ctx) {\n if (ctx.add) {\n return ctx.add[0].image;\n } else if (ctx.subtract) {\n return ctx.subtract[0].image;\n }\n }\n\n MultiplicationOperator(ctx) {\n if (ctx.multiply) {\n return ctx.multiply[0].image;\n } else if (ctx.divide) {\n return ctx.divide[0].image;\n }\n }\n\n ExponentOperator(ctx) {\n if (ctx.pow) {\n return ctx.pow[0].image;\n }\n }\n\n /**\n * Parse a single mathematical operator (+, -, *, /, %).\n * @param {*} ctx\n */\n Operator(ctx) {\n if (ctx.percent_of) {\n return ctx.percent_of[0].image;\n } else if (ctx.equals) {\n return ctx.equals[0].image;\n } else if (ctx.not_equals) {\n return ctx.not_equals[0].image;\n } else if (ctx.greater_than) {\n return ctx.greater_than[0].image;\n } else if (ctx.less_than) {\n return ctx.less_than[0].image;\n } else if (ctx.is) {\n return ctx.is[0].image;\n } else {\n return;\n }\n }\n\n /**\n * Identify and return a function name used for computation.\n *\n * @param {*} ctx\n */\n Function(ctx) {\n if (ctx.sqrt) {\n return ctx.sqrt[0].image;\n } else if (ctx.pow2) {\n return ctx.pow2[0].image;\n } else if (ctx.abs) {\n return ctx.abs[0].image;\n } else if (ctx.invert) {\n return ctx.invert[0].image;\n } else if (ctx.log) {\n return ctx.log[0].image;\n } else if (ctx.exp) {\n return ctx.exp[0].image;\n } else if (ctx.length) {\n return ctx.length[0].image;\n } else if (ctx.uppercase) {\n return ctx.uppercase[0].image;\n } else if (ctx.lowercase) {\n return ctx.lowercase[0].image;\n } else if (ctx.concat_comma) {\n return ctx.concat_comma[0].image;\n } else if (ctx.concat_space) {\n return ctx.concat_space[0].image;\n } else if (ctx.bin10) {\n return ctx.bin10[0].image;\n } else if (ctx.bin100) {\n return ctx.bin100[0].image;\n } else if (ctx.bin1000) {\n return ctx.bin1000[0].image;\n } else if (ctx.bin10th) {\n return ctx.bin10th[0].image;\n } else if (ctx.bin100th) {\n return ctx.bin100th[0].image;\n } else if (ctx.bin1000th) {\n return ctx.bin1000th[0].image;\n } else if (ctx.hour_of_day) {\n return ctx.hour_of_day[0].image;\n } else if (ctx.day_of_week) {\n return ctx.day_of_week[0].image;\n } else if (ctx.month_of_year) {\n return ctx.month_of_year[0].image;\n } else if (ctx.second_bucket) {\n return ctx.second_bucket[0].image;\n } else if (ctx.minute_bucket) {\n return ctx.minute_bucket[0].image;\n } else if (ctx.hour_bucket) {\n return ctx.hour_bucket[0].image;\n } else if (ctx.day_bucket) {\n return ctx.day_bucket[0].image;\n } else if (ctx.week_bucket) {\n return ctx.week_bucket[0].image;\n } else if (ctx.month_bucket) {\n return ctx.month_bucket[0].image;\n } else if (ctx.year_bucket) {\n return ctx.year_bucket[0].image;\n } else {\n return;\n }\n }\n\n /**\n * Give a custom name to the created computed column using \"AS\"\n * or \"as\".\n *\n * @param {*} ctx\n */\n As(ctx) {\n return ctx.TerminalColumnName[0].children.columnName[0].payload;\n }\n\n /**\n * Parse an expression inside parentheses through recursing back\n * up to `Expression`.\n *\n * @param {*} ctx\n * @param {*} computed_columns\n */\n ParentheticalExpression(ctx, computed_columns) {\n return this.visit(ctx.Expression, computed_columns);\n }\n }\n\n return new ComputedExpressionColumnVisitor();\n }\n\n /**\n * Given a list of suggestions, transform each suggestion into an object\n * with `label` and `value`.\n *\n * @param {Array} suggestions\n * @param {Array[String]} input_types an array of input types as strings.\n * @param {Boolean} match_types whether the return type and input types\n * of suggestions should match\n */\n _apply_suggestion_metadata(suggestions, input_types, match_types) {\n this._check_initialized();\n match_types = match_types || false;\n const suggestions_with_metadata = [];\n\n for (const s of suggestions) {\n const token = s.nextTokenType;\n\n if (!token || !token.PATTERN.source) {\n continue;\n }\n\n let label = token.LABEL;\n let pattern = token.PATTERN.source.replace(/\\\\/g, \"\");\n let value = pattern;\n\n if (tokenMatcher(token, FunctionTokenType)) {\n value = `${value}(`;\n } else if (tokenMatcher(token, OperatorTokenType)) {\n value = `${value} `;\n } else if (tokenMatcher(token, As)) {\n value = \"AS \";\n label = \"AS\";\n token.signature = \"x + y AS new column\";\n token.help = \"Creates a custom name for the computed column.\";\n }\n\n const suggestion = new ComputedExpressionAutocompleteSuggestion({\n label,\n value,\n pattern,\n signature: token.signature,\n help: token.help,\n input_types: token.input_types,\n return_type: token.return_type,\n num_params: token.num_params\n });\n\n if (input_types && suggestion.input_types) {\n // Return suggestions that have the same input type AND\n // the return type is in the input types array - this prevents\n // expressions such as `uppercase(length(` from being\n // suggested, as `length` takes a string but returns an int.\n for (const type of input_types) {\n const correct_input_type = suggestion.input_types.includes(type);\n\n if (correct_input_type && (match_types ? suggestion.input_types.includes(suggestion.return_type) : true)) {\n suggestions_with_metadata.push(suggestion);\n break;\n }\n }\n } else {\n suggestions_with_metadata.push(suggestion);\n }\n }\n\n return suggestions_with_metadata;\n }\n\n _check_initialized() {\n if (this.is_initialized === false) {\n throw new Error(\"PerspectiveComputedExpressionParser is not initialized!\");\n }\n }\n}\n\n// Create a module-level singleton parser.\nexport const COMPUTED_EXPRESSION_PARSER = new PerspectiveComputedExpressionParser();\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {swap} from \"../utils.js\";\n\nfunction calc_index(event) {\n if (this._active_columns.children.length == 0) {\n return 0;\n } else {\n let is_last_null = false;\n for (let cidx in this._active_columns.children) {\n let child = this._active_columns.children[cidx];\n is_last_null = is_last_null || child?.classList?.contains(\"null-column\");\n if (child.offsetTop + child.offsetHeight > event.offsetY + this._active_columns.scrollTop) {\n return parseInt(cidx);\n }\n }\n let last_index = this._active_columns.children.length;\n if (is_last_null) {\n last_index--;\n }\n return last_index;\n }\n}\n\nexport function dragend(event) {\n let div = event.target.getRootNode().host;\n let parent = div;\n if (parent.tagName === \"PERSPECTIVE-VIEWER\") {\n parent = event.target.parentElement;\n } else {\n parent = div.parentElement;\n }\n let idx = Array.prototype.slice.call(parent.children).indexOf(div.tagName === \"PERSPECTIVE-ROW\" ? div : event.target);\n let attr_name = parent.getAttribute(\"for\");\n if (this.hasAttribute(attr_name)) {\n let attr_value = JSON.parse(this.getAttribute(attr_name));\n attr_value.splice(idx, 1);\n if (attr_value.length === 0) {\n this.removeAttribute(attr_name);\n } else {\n this.setAttribute(attr_name, JSON.stringify(attr_value));\n }\n }\n}\n\nexport function drop(ev) {\n ev.preventDefault();\n ev.currentTarget.classList.remove(\"dropping\");\n DRAG_COUNT_MAP = new WeakMap();\n if (this._drop_target_hover) {\n this._drop_target_hover.removeAttribute(\"drop-target\");\n }\n let data = ev.dataTransfer.getData(\"text\");\n if (!data) return;\n data = JSON.parse(data);\n\n // Update the columns attribute\n let name = ev.currentTarget.querySelector(\"ul\").getAttribute(\"for\") || ev.currentTarget.getAttribute(\"id\").replace(\"_\", \"-\");\n let columns = JSON.parse(this.getAttribute(name) || \"[]\");\n let data_index = columns.indexOf(data[0]);\n if (data_index !== -1) {\n columns.splice(data_index, 1);\n }\n\n const filtering = name.indexOf(\"filter\") > -1;\n if (filtering) {\n this.setAttribute(name, JSON.stringify(columns.concat([data])));\n } else if (name.indexOf(\"sort\") > -1) {\n this.setAttribute(name, JSON.stringify(columns.concat([[data[0]]])));\n } else {\n this.setAttribute(name, JSON.stringify(columns.concat([data[0]])));\n }\n\n // Deselect the dropped column\n if (this._plugin.deselectMode === \"pivots\" && this._get_visible_column_count() > 1 && name !== \"sort\" && !filtering) {\n for (let x of this.shadowRoot.querySelectorAll(\"#active_columns perspective-row\")) {\n if (x.getAttribute(\"name\") === data[0]) {\n this._active_columns.removeChild(x);\n break;\n }\n }\n this._update_column_view();\n }\n\n this._debounce_update();\n}\n\nexport function column_dragend(event) {\n let data = event.target.parentElement.parentElement;\n if (Array.prototype.slice(this._active_columns.children).indexOf(data) > -1 && this._get_visible_column_count() > 1 && event.dataTransfer.dropEffect !== \"move\") {\n this._active_columns.removeChild(data);\n this._update_column_view();\n }\n this._active_columns.classList.remove(\"dropping\");\n}\n\nexport function column_dragleave(event) {\n let src = event.relatedTarget;\n while (src && src !== this._active_columns) {\n src = src.parentElement;\n }\n if (src === null) {\n this._active_columns.classList.remove(\"dropping\");\n if (this._drop_target_null) {\n this._active_columns.replaceChild(this._drop_target_null, this._drop_target_hover);\n delete this._drop_target_null;\n }\n if (this._drop_target_hover.parentElement === this._active_columns) {\n this._active_columns.removeChild(this._drop_target_hover);\n }\n if (this._original_index !== -1) {\n this._active_columns.insertBefore(this._drop_target_hover, this._active_columns.children[this._original_index]);\n }\n this._drop_target_hover.removeAttribute(\"drop-target\");\n }\n}\n\nfunction _unset_drop_target_null() {\n if (this._drop_target_null) {\n if (this._drop_target_null.parentElement === this._active_columns) {\n swap(this._active_columns, this._drop_target_hover, this._drop_target_null);\n } else {\n this._active_columns.replaceChild(this._drop_target_null, this._drop_target_hover);\n }\n delete this._drop_target_null;\n }\n}\n\nfunction column_swap(new_index) {\n _unset_drop_target_null.call(this);\n if (this._active_columns.children[new_index]) {\n if (this._drop_target_hover !== this._active_columns.children[new_index]) {\n this._drop_target_null = this._active_columns.children[new_index];\n swap(this._active_columns, this._active_columns.children[new_index], this._drop_target_hover);\n }\n }\n}\n\nfunction column_replace(new_index) {\n _unset_drop_target_null.call(this);\n if (this._active_columns.children[new_index]) {\n this._drop_target_null = this._active_columns.children[new_index];\n this._active_columns.replaceChild(this._drop_target_hover, this._active_columns.children[new_index]);\n }\n}\n\nexport function column_dragover(event) {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n if (!this._drop_target_hover.hasAttribute(\"drop-target\")) {\n this._drop_target_hover.toggleAttribute(\"drop-target\", true);\n }\n let new_index = calc_index.call(this, event);\n const current_index = Array.prototype.slice.call(this._active_columns.children).indexOf(this._drop_target_hover);\n const over_elem = this._active_columns.children[new_index];\n const to_replace = new_index < this._plugin.initial?.names?.length - 1;\n const is_diff = this._drop_target_hover !== this._active_columns.children[new_index];\n const from_active = this._original_index !== -1;\n const from_replace = from_active && this._original_index < this._plugin.initial?.names?.length - 1;\n const from_append = from_active && this._original_index >= this._plugin.initial?.names?.length - 1;\n const from_required = from_active && this._original_index < this._plugin.initial?.count;\n const to_required = new_index < this._plugin.initial?.count;\n const to_null = !to_required && over_elem?.classList.contains(\"null-column\");\n if (from_required && to_null) {\n _unset_drop_target_null.call(this);\n } else if (to_replace && from_append && is_diff) {\n _unset_drop_target_null.call(this);\n const from_last =\n this._original_index === this._plugin.initial?.names?.length - 1 &&\n this._drop_target_hover === this._active_columns.children[this._original_index] &&\n this._active_columns.children.length === this._plugin.initial?.names?.length;\n if (from_last) {\n this._drop_target_null = this._active_columns.children[new_index];\n swap(this._active_columns, this._active_columns.children[new_index], this._drop_target_hover);\n } else if (!this._active_columns.children[new_index]?.classList.contains(\"null-column\")) {\n this._drop_target_null = this._active_columns.children[new_index];\n this._active_columns.replaceChild(this._drop_target_hover, this._active_columns.children[new_index]);\n this._active_columns.insertBefore(this._drop_target_null, this._active_columns.children[this._original_index]);\n } else {\n if (this._drop_target_hover !== this._active_columns.children[new_index]) {\n this._drop_target_null = this._active_columns.children[new_index];\n this._active_columns.replaceChild(this._drop_target_hover, this._active_columns.children[new_index]);\n }\n }\n } else if (to_replace && from_active && is_diff) {\n column_swap.call(this, new_index);\n } else if (to_replace && !from_active && is_diff) {\n column_replace.call(this, new_index);\n } else if (!to_replace && from_replace && is_diff) {\n column_swap.call(this, new_index);\n } else if (to_null && from_active) {\n column_swap.call(this, new_index);\n } else if (to_null && !from_active) {\n column_replace.call(this, new_index);\n } else if (current_index < new_index) {\n if (new_index + 1 < this._active_columns.children.length) {\n if (!this._active_columns.children[new_index + 1].hasAttribute(\"drop-target\")) {\n _unset_drop_target_null.call(this);\n this._active_columns.insertBefore(this._drop_target_hover, this._active_columns.children[new_index + 1]);\n }\n } else {\n if (!this._active_columns.children[this._active_columns.children.length - 1].hasAttribute(\"drop-target\")) {\n _unset_drop_target_null.call(this);\n this._active_columns.appendChild(this._drop_target_hover);\n }\n }\n } else if (new_index < this._active_columns.children.length) {\n if (!this._active_columns.children[new_index].hasAttribute(\"drop-target\")) {\n _unset_drop_target_null.call(this);\n this._active_columns.insertBefore(this._drop_target_hover, this._active_columns.children[new_index]);\n }\n } else {\n if (!this._active_columns.children[this._active_columns.children.length - 1].hasAttribute(\"drop-target\")) {\n _unset_drop_target_null.call(this);\n this._active_columns.appendChild(this._drop_target_hover);\n }\n }\n}\n\nexport function column_drop(ev) {\n ev.preventDefault();\n delete this._drop_target_null;\n ev.currentTarget.classList.remove(\"dropping\");\n DRAG_COUNT_MAP = new WeakMap();\n if (this._drop_target_hover.parentElement === this._active_columns) {\n this._drop_target_hover.removeAttribute(\"drop-target\");\n }\n let data = ev.dataTransfer.getData(\"text\");\n if (!data) return;\n\n this._update_column_view();\n}\n\nexport function dragover(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n ev.dataTransfer.dropEffect = \"move\";\n}\n\nlet DRAG_COUNT_MAP = new WeakMap();\n\nfunction dragenterleave(event) {\n let dragHoverCount = DRAG_COUNT_MAP.get(event.currentTarget) || 0;\n event.type === \"dragenter\" ? dragHoverCount++ : dragHoverCount--;\n DRAG_COUNT_MAP.set(event.currentTarget, dragHoverCount);\n event.currentTarget.classList.toggle(\"dropping\", dragHoverCount > 0);\n event.preventDefault();\n}\n\nexport const dragenter = dragenterleave;\nexport const dragleave = dragenterleave;\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {html} from \"lit-html\";\n\nimport {bindTemplate, throttlePromise} from \"../utils.js\";\n\nimport template from \"../../html/computed_expression_widget.html\";\n\nimport style from \"../../less/computed_expression_widget.less\";\n\nimport {FunctionTokenType, OperatorTokenType, COLUMN_NAME_REGEX_PATTERN, RightParen, As, ColumnName, Whitespace} from \"./lexer\";\nimport {ComputedExpressionAutocompleteSuggestion} from \"./computed_expression_parser\";\nimport {tokenMatcher} from \"chevrotain\";\n\n// Eslint complains here because we don't do anything, but actually we globally\n// register this class as a CustomElement\n@bindTemplate(template, style) // eslint-disable-next-line no-unused-vars\nclass ComputedExpressionWidget extends HTMLElement {\n constructor() {\n super();\n\n this._parsed_expression = undefined;\n this.expressions = [];\n this._valid = false;\n }\n\n connectedCallback() {\n this._register_ids();\n this._register_callbacks();\n this._expression_editor.set_renderer(this.render_expression.bind(this));\n this._editor_observer = new MutationObserver(this._resize_editor.bind(this));\n\n // Implement the `reposition` method, and bind it to the autocomplete\n // instance instead of the widget instance.\n this._autocomplete.reposition = this._position_autocomplete.bind(this);\n }\n\n /**\n * Observe the editor when the widget is opened.\n */\n _observe_editor() {\n this._editor_observer.observe(this._expression_editor, {\n attributes: true,\n attributeFilter: [\"style\"]\n });\n\n // Focus on the editor immediately\n this._expression_editor.focus();\n }\n\n /**\n * Dispatch an event on editor resize to notify the side panel, and\n * disconnect the observer.\n */\n _resize_editor() {\n const event = new CustomEvent(\"perspective-computed-expression-resize\");\n this.dispatchEvent(event);\n this._editor_observer.disconnect();\n }\n\n /**\n * A stub for the widget to have access to `perspective-viewer`'s _get_type\n * method. Replaced by a reference to the proper method when the widget is\n * opened inside `perspective-viewer`.\n *\n * @param {String} name a column name\n */\n _get_type(name) {\n throw new Error(`Cannot get column type for \"${name}\".`);\n }\n\n /**\n * Returns a list of objects from column names, suitable for rendering\n * in the autocomplete widget.\n */\n _make_column_name_suggestions(names) {\n // label = what is shown in the autocomplete DOM\n // value = what the fragment in the editor will be replaced with\n return names.map(name => {\n return new ComputedExpressionAutocompleteSuggestion({\n label: name,\n value: `\"${name}\"`,\n is_column_name: true\n });\n });\n }\n\n /**\n * Given an expression string, render it into markup. Called only when the\n * expression is not an empty string.\n *\n * @param {String} expression\n */\n render_expression(expression) {\n // Call `tokenize()` and not `lex()`, as `lex` cleans whitespace\n // tokens and we need whitespace tokens to render the expressions.\n const lex_result = this._computed_expression_parser._lexer.tokenize(expression);\n\n // Track a sorted array of integer offsets into the expression, and\n // a map of offsets to tokens. This allows us to render errors (which\n // aren't in the list of parsed tokens) inline with valid tokens.\n let offsets = [];\n let token_map = {};\n\n for (const token of lex_result.tokens) {\n token_map[token.startOffset] = token;\n offsets.push(token.startOffset);\n }\n\n for (const error of lex_result.errors) {\n token_map[error.offset] = error;\n offsets.push(error.offset);\n }\n\n offsets = offsets.sort((a, b) => a - b);\n\n const output = [];\n const names = this._get_view_all_column_names();\n\n // track the last non-whitespace token\n let last_token;\n\n for (const offset of offsets) {\n const token = token_map[offset];\n\n // errors have `message` set, whereas valid tokens do not\n const is_error = token.message;\n\n let content = \"\";\n let class_name = \"fragment\";\n\n if (is_error) {\n // grab the full text of the error\n content = expression.slice(token.offset, token.offset + token.length);\n class_name = \"errored\";\n } else {\n content = token.image;\n\n if (tokenMatcher(token, FunctionTokenType)) {\n class_name = \"function\";\n } else if (tokenMatcher(token, OperatorTokenType)) {\n class_name = \"operator\";\n } else if (tokenMatcher(token, ColumnName)) {\n const column_name = token.payload;\n const exists = names.includes(column_name);\n class_name = `column_name ${exists ? this._get_type(column_name) : \"\"}`;\n\n // only mark as red if the column is not an alias AND does\n // not exist in the dataset.\n if ((!exists && !last_token) || (!exists && last_token && !tokenMatcher(last_token, As))) {\n class_name = \"errored\";\n }\n }\n\n if (!tokenMatcher(token, Whitespace)) {\n last_token = token;\n }\n }\n\n output.push(`<span class=\"psp-expression__${class_name}\">${content}</span>`);\n }\n\n return output.join(\"\");\n }\n\n /**\n * Given an Array of autocomplete suggestions, transform them to an Array\n * of `lit-html` templates so they can be rendered inside the autocomplete.\n *\n * Because the computed expression autocomplete contains large amounts\n * of metadata and additional functionality, we create the templates here\n * and let the autocomplete render the markup without any additional\n * changes.\n *\n * @param {Array<ComputedExpressionAutocompleteSuggestion>} suggestions an\n * Array of suggestion objects.\n */\n make_autocomplete_markup(suggestions) {\n return suggestions.map(suggestion =>\n suggestion.label\n ? html`\n <div\n role=\"listitem\"\n title=${suggestion.help ? suggestion.help : \"\"}\n class=\"psp-autocomplete__item\"\n data-label=${suggestion.label}\n data-value=${suggestion.value}\n data-signature=${suggestion.signature ? suggestion.signature : \"\"}\n data-help=${suggestion.help ? suggestion.help : \"\"}\n aria-selected=\"false\"\n >\n <span\n class=\"psp-autocomplete-item__label ${suggestion.is_column_name ? `psp-autocomplete-item__label--column-name ${this._get_type(suggestion.label)}` : \"\"}\"\n data-value=${suggestion.value}\n >\n ${suggestion.pattern ? suggestion.pattern : suggestion.label}\n </span>\n </div>\n `\n : \"\"\n );\n }\n\n /**\n * Validate the expression after the\n * `perspective-expression-editor-rendered` has been fired. Fires on every\n * event, even when the expression is an empty string.\n * @param {*} ev\n */\n @throttlePromise\n async _validate_expression(ev) {\n this._autocomplete.clear();\n const expression = ev.detail.text;\n\n if (expression.length === 0) {\n this._clear_error();\n return;\n }\n\n try {\n // Use this just for validation. On anything short of a massive\n // expression, this should have no performance impact as we\n // share an instance of the parser throughout the viewer.\n this._parsed_expression = this._computed_expression_parser.parse(expression);\n } catch (e) {\n // Show autocomplete OR error, but not both\n this._clear_error();\n this._disable_save_button();\n\n // Generate a list of tokens from the expression, cleaning out\n // whitespace tokens and without throwing any errors.\n const lex_result = this._computed_expression_parser.lex(expression);\n\n // Check if the expression has a fragment of a column name,\n // i.e. if it's been opened with a quote but not closed\n const name_fragments = expression.match(/([\"'])[\\s\\w()]*?$/);\n const has_name_fragments = name_fragments && name_fragments.length > 0 && !/['\"]\\s/.test(name_fragments[0]);\n\n // Get the last non-whitespace token from the lexer result\n const last_token = this._computed_expression_parser.get_last_token(lex_result);\n let show_column_names = has_name_fragments;\n\n if (last_token) {\n // Check if the last token is a column name - if so, don't show\n // autocomplete as we don't want to show autocomplete after a\n // completed column name.\n const is_column_name = tokenMatcher(last_token, ColumnName);\n\n // Don't show if last token is a parenthesis, as that indicates\n // a closed logical block.\n const is_paren = tokenMatcher(last_token, RightParen);\n\n // And not if the last token is `as/AS`, as that indicates a\n // custom column name supplied by the user.\n const is_alias = tokenMatcher(last_token, As);\n\n // If the last token is an operator, force autocomplete to show.\n const is_operator = tokenMatcher(last_token, OperatorTokenType);\n\n // Show column names if the last token is an operator,\n // OR if the last input is a column name fragment and the\n // last token is not a column name, a paren, or an alias.\n show_column_names = is_operator || (show_column_names && !is_column_name && !is_paren && !is_alias);\n }\n\n // Get autocomplete suggestions from Chevrotain\n let suggestions = [];\n\n // Filter down those suggestions by an input type, if possible\n let input_types, match_types;\n\n // Go to the last function or operator token present in the\n // entire expression, and use it to calculate input types.\n const last_function_or_operator = this._computed_expression_parser.get_last_token_with_types([FunctionTokenType, OperatorTokenType], lex_result);\n\n if (last_function_or_operator) {\n input_types = last_function_or_operator.tokenType.input_types;\n match_types = true;\n } else if (last_token && tokenMatcher(last_token, ColumnName)) {\n // get functions and operators that take the column type\n // as input, but don't check whether return types match\n input_types = [this._get_type(last_token.payload)];\n match_types = false;\n }\n\n suggestions = this._computed_expression_parser.get_autocomplete_suggestions(expression, lex_result, input_types, match_types);\n\n if (show_column_names) {\n let column_names;\n\n if (last_function_or_operator) {\n // create a list of function/operator suggestions followed\n // by column names of the correct input type.\n column_names = this._get_view_column_names_by_types(input_types);\n } else {\n // Show all column names\n column_names = this._get_view_all_column_names();\n }\n\n // Convert list of names into objects with `label` and `value`\n let column_name_suggestions = this._make_column_name_suggestions(column_names);\n\n // Filter down by `startsWith` and `contains`, putting the\n // more exact matches first.\n if (has_name_fragments) {\n const fragment = name_fragments[0].substring(1);\n const exact_matches = [];\n const fuzzy_matches = [];\n\n for (const suggestion of column_name_suggestions) {\n const column_name = suggestion.label.toLowerCase();\n const partial = fragment.toLowerCase();\n\n if (column_name.startsWith(partial)) {\n exact_matches.push(suggestion);\n } else if (column_name.includes(partial)) {\n fuzzy_matches.push(suggestion);\n }\n }\n\n column_name_suggestions = exact_matches.concat(fuzzy_matches);\n }\n\n if (last_function_or_operator) {\n suggestions = suggestions.concat(column_name_suggestions);\n } else {\n suggestions = column_name_suggestions;\n }\n\n // Render column names inside autocomplete\n const markup = this.make_autocomplete_markup(suggestions);\n this._autocomplete.render(markup);\n return;\n } else {\n if (suggestions.length > 0) {\n // Show autocomplete and not error box\n const markup = this.make_autocomplete_markup(suggestions);\n this._autocomplete.render(markup);\n return;\n } else if (last_token && tokenMatcher(last_token, As)) {\n // don't show error if last token is alias\n return;\n } else {\n // Expression is syntactically valid but unparsable\n const message = e.message ? e.message : JSON.stringify(e);\n this._set_error(message, this._error);\n return;\n }\n }\n }\n\n // Take the parsed expression and type check it on the viewer,\n // which will call `_type_check_expression()` with a computed_schema.\n const event = new CustomEvent(\"perspective-computed-expression-type-check\", {\n detail: {\n parsed_expression: this._parsed_expression\n }\n });\n\n this.dispatchEvent(event);\n\n return;\n }\n\n @throttlePromise\n async _type_check_expression(computed_schema, expected_types) {\n // TODO: refactor this to encompass all checks for invalid columns,\n // invalid inputs, invalid names etc.\n const parsed = this._parsed_expression || [];\n const invalid = [];\n\n for (const column of parsed) {\n if (!computed_schema[column.column]) {\n invalid.push(column.column);\n }\n }\n\n if (invalid.length > 0) {\n let message = \"TypeError:\\n\";\n for (const col of invalid) {\n message += `- \\`${col}\\` expected input column types ${expected_types[col].join(\"/\")}\\n`;\n }\n this._set_error(message, this._error);\n } else {\n this._clear_error();\n this._enable_save_button();\n }\n }\n\n _save_expression() {\n if (!this._valid || this._save_button.getAttribute(\"disabled\")) {\n return;\n }\n const expression = this._expression_editor.get_text();\n const parsed_expression = this._parsed_expression || [];\n\n const event = new CustomEvent(\"perspective-computed-expression-save\", {\n detail: {\n expression: expression,\n parsed_expression: parsed_expression\n }\n });\n\n this.dispatchEvent(event);\n\n this.expressions.push(expression);\n }\n\n /**\n * Whenever the autocomplete re-renders, position it either at the end\n * of the cursor or dock it to the bottom of the computed expression widget.\n *\n * Do not call this method directly - it is set to override the `reposition`\n * method of `this._autocomplete` in `connectedCallback`.\n */\n _position_autocomplete() {\n const editor = this._expression_editor;\n const last_span = this._expression_editor._edit_area.lastChild;\n\n if (editor.offsetWidth === 250) {\n this._autocomplete._container.removeAttribute(\"style\");\n this._autocomplete._container.classList.remove(\"undocked\");\n this._autocomplete._container.classList.add(\"docked\");\n return;\n } else {\n this._autocomplete._container.classList.remove(\"docked\");\n this._autocomplete._container.classList.add(\"undocked\");\n }\n\n const offset_left = last_span.offsetLeft;\n const offset_width = last_span.offsetWidth;\n const offset_top = last_span.offsetTop;\n\n const left = offset_left + offset_width > 0 ? offset_left + offset_width : 0;\n const top = offset_top + 20 > 20 ? offset_top + 20 : 20;\n\n this._autocomplete._container.style.left = `${left}px`;\n this._autocomplete._container.style.top = `${top}px`;\n }\n\n /**\n * When an autocomplete item is clicked or selected via keypress,\n * append or replace the text in the editor.\n *\n * @param {String} new_value the value selected from the autocomplete item.\n */\n _autocomplete_replace(new_value) {\n const old_value = this._expression_editor.get_text();\n const last_input = this._computed_expression_parser.extract_partial_function(old_value);\n\n if (new_value === \"(\") {\n // Always append parentheses\n this._expression_editor._edit_area.innerText += new_value;\n } else if (last_input && last_input !== '\"') {\n // replace the fragment with the full function/operator\n const final_value = old_value.substring(0, old_value.length - last_input.length) + new_value;\n this._expression_editor._edit_area.innerText = final_value;\n } else {\n // Check whether we are appending a column name\n // FIXME: clean up this affront against all things good\n const last_word = old_value.substring(old_value.lastIndexOf(\" \")).trim();\n const last_word_is_column_name = /[\"'].*[^'\"]/.test(last_word) || last_word === '\"' || last_word === \"'\";\n const new_is_column_name = COLUMN_NAME_REGEX_PATTERN.test(new_value);\n\n if (last_word_is_column_name && new_is_column_name) {\n let last_word_idx = old_value.lastIndexOf(last_word);\n let final_value = old_value.substring(0, last_word_idx);\n\n // TODO: collapse some of these repeated regex tests\n const partials_inside_func = /\\(['\"]\\w+$/.exec(last_word);\n\n if (partials_inside_func && partials_inside_func[0] && (last_word_idx === 0 || last_word[0] === \"(\")) {\n // replace upto the open quote, but not before it\n final_value += last_word.substring(0, partials_inside_func.index + 1);\n }\n\n final_value += new_value;\n\n this._expression_editor._edit_area.innerText = final_value;\n } else {\n if (!last_word_is_column_name && (last_word[last_word.length - 1] === '\"' || last_word[last_word.length - 1] === \"'\")) {\n // Remove the last quote in strings like `pow2(\"\n const stripped_last = this._expression_editor._edit_area.innerText.substring(0, this._expression_editor._edit_area.innerText.length - 1);\n this._expression_editor._edit_area.innerText = stripped_last;\n }\n // Append the autocomplete value\n this._expression_editor._edit_area.innerText += new_value;\n }\n }\n\n this._expression_editor._reset_selection();\n this._expression_editor.update_content();\n\n this._autocomplete.clear();\n }\n\n /**\n * When the autocomplete instance dispatches the\n * `perspective-autocomplete-item-clicked` event, replace or append the\n * value to the editor.\n *\n * @param {CustomEvent} ev a `perspective-autocomplete-item-clicked` event.\n */\n _autocomplete_item_clicked(ev) {\n this._autocomplete_replace(ev.detail.target.getAttribute(\"data-value\"));\n }\n\n // UI actions\n _clear_expression_editor() {\n this._expression_editor.clear_content();\n }\n\n _close_expression_widget() {\n this.style.display = \"none\";\n this._side_panel_actions.style.display = \"flex\";\n this._clear_error();\n this._disable_save_button();\n this._clear_expression_editor();\n this._autocomplete.clear();\n // Disconnect the observer.\n this._editor_observer.disconnect();\n }\n\n /**\n * Given an error message, display it in the DOM and disable the\n * save button.\n *\n * @param {String} error An error message to be displayed.\n * @param {HTMLElement} target an `HTMLElement` that displays the `error`\n * message.\n */\n _set_error(error, target) {\n if (target) {\n target.innerText = error;\n target.style.display = \"block\";\n this._disable_save_button();\n }\n }\n\n _clear_error() {\n this._error.innerText = \"\";\n this._error.style.display = \"none\";\n }\n\n _disable_save_button() {\n this._save_button.setAttribute(\"disabled\", true);\n this._valid = false;\n }\n\n _enable_save_button() {\n this._save_button.removeAttribute(\"disabled\");\n this._valid = true;\n }\n\n _editor_keydown(ev) {\n // All operations need to be done on `ev.detail`, not `ev`, as the event\n // is passed through from the editor.\n switch (ev.detail.key) {\n case \"Enter\":\n ev.detail.preventDefault();\n ev.detail.stopPropagation();\n {\n // If autocomplete is open, select the current autocomplete\n // value. Otherwise, save the expression.\n if (this._autocomplete.displayed === true) {\n const value = this._autocomplete.get_selected_value();\n if (value) {\n this._autocomplete_replace(value);\n }\n } else {\n this._save_expression();\n }\n }\n break;\n case \"Tab\":\n case \"ArrowDown\":\n {\n ev.detail.preventDefault();\n ev.detail.stopPropagation();\n if (this._autocomplete.displayed === true) {\n this._autocomplete._next();\n }\n }\n break;\n case \"ArrowUp\":\n {\n ev.detail.preventDefault();\n ev.detail.stopPropagation();\n if (this._autocomplete.displayed === true) {\n this._autocomplete._prev();\n }\n }\n break;\n case \"z\": {\n // prevent Ctrl/Command-z for undo, as it has no effect\n // inside the editor but will fire keypress events and mess\n // up the flow.\n if (ev.detail.metaKey === true || ev.detail.ctrlKey === true) {\n ev.detail.preventDefault();\n ev.detail.stopPropagation();\n }\n }\n default:\n break;\n }\n }\n\n /**\n * Map DOM IDs to class properties.\n */\n _register_ids() {\n this._side_panel_actions = this.parentElement.querySelector(\"#side_panel__actions\");\n this._close_button = this.shadowRoot.querySelector(\"#psp-computed-expression-widget-close\");\n this._expression_editor = this.shadowRoot.querySelector(\"perspective-expression-editor\");\n this._error = this.shadowRoot.querySelector(\"#psp-computed-expression-widget-error\");\n this._save_button = this.shadowRoot.querySelector(\"#psp-computed-expression-widget-button-save\");\n this._autocomplete = this.shadowRoot.querySelector(\"#psp-computed-expression-widget-autocomplete\");\n }\n\n /**\n * Map callback functions to class properties.\n */\n _register_callbacks() {\n this._close_button.addEventListener(\"click\", this._close_expression_widget.bind(this));\n this._expression_editor.addEventListener(\"perspective-expression-editor-rendered\", this._validate_expression.bind(this));\n this._expression_editor.addEventListener(\"perspective-expression-editor-keydown\", this._editor_keydown.bind(this));\n this._save_button.addEventListener(\"click\", this._save_expression.bind(this));\n this._autocomplete.addEventListener(\"perspective-autocomplete-item-clicked\", this._autocomplete_item_clicked.bind(this));\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nexport class CancelTask {\n constructor(on_cancel, initial = false) {\n this._on_cancel = on_cancel;\n this._cancelled = false;\n this.initial = initial;\n }\n\n cancel() {\n if (!this._cancelled && this._on_cancel) {\n this._on_cancel();\n this._on_cancel = undefined;\n }\n this._cancelled = true;\n }\n\n get cancelled() {\n return this._cancelled;\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {renderers} from \"./renderers.js\";\n\nexport class StateElement extends HTMLElement {\n get _plugin() {\n let current_renderers = renderers.getInstance();\n let view = this.getAttribute(\"plugin\");\n if (!view) {\n view = Object.keys(current_renderers)[0];\n this.setAttribute(\"plugin\", view);\n }\n return current_renderers[view] || current_renderers[Object.keys(current_renderers)[0]];\n }\n\n // deprecate\n _get_view_dom_columns(selector, callback) {\n selector = selector || \"#active_columns perspective-row\";\n let columns = Array.prototype.slice.call(this.shadowRoot.querySelectorAll(selector));\n if (!callback) {\n return columns;\n }\n return columns.map(callback).filter(x => x);\n }\n\n _get_view_all_columns() {\n return Array.prototype.slice.call(this.shadowRoot.querySelectorAll(\"#inactive_columns perspective-row\"));\n }\n\n _get_view_active_columns() {\n return Array.prototype.slice.call(this.shadowRoot.querySelectorAll(\"#active_columns perspective-row\"));\n }\n\n _get_view_active_valid_columns() {\n return Array.prototype.slice.call(this.shadowRoot.querySelectorAll(\"#active_columns perspective-row\")).filter(x => !x.classList.contains(\"null-column\"));\n }\n\n _get_view_inactive_columns() {\n return Array.prototype.slice.call(this.shadowRoot.querySelectorAll(\"#inactive_columns perspective-row\"));\n }\n\n _get_view_all_column_names() {\n return this._get_view_all_columns().map(x => x.getAttribute(\"name\"));\n }\n\n _get_view_active_column_names() {\n return this._get_view_active_columns().map(x => x.getAttribute(\"name\"));\n }\n\n _get_view_all_valid_column_names() {\n return this._get_view_all_column_names().filter(x => x);\n }\n\n _get_view_active_valid_column_names() {\n return this._get_view_active_column_names().filter(x => x);\n }\n\n _get_view_active_valid_column_count() {\n return this._get_view_active_valid_column_names().length;\n }\n\n /**\n * Given a data type, return the names of all columns with the specified\n * data type.\n *\n * @param {Array[String]} types an array of valid type names\n */\n _get_view_column_names_by_types(types) {\n const names = [];\n const viewer_columns = this._get_view_all_columns();\n for (const column of viewer_columns) {\n if (types.includes(column.getAttribute(\"type\"))) {\n names.push(column.getAttribute(\"name\"));\n }\n }\n return names;\n }\n\n // deprecate\n _get_view_columns({active = true} = {}) {\n let selector;\n if (active) {\n selector = \"#active_columns perspective-row\";\n } else {\n selector = \"#inactive_columns perspective-row\";\n }\n return this._get_view_dom_columns(selector, col => {\n return col.getAttribute(\"name\");\n });\n }\n\n _get_view_aggregates(selector) {\n selector = selector || \"#active_columns perspective-row\";\n return this._get_view_dom_columns(selector, s => {\n let op = s.getAttribute(\"aggregate\");\n if (op[0] === \"[\") {\n try {\n op = JSON.parse(op);\n } catch (e) {\n console.error(e);\n }\n }\n const column = s.getAttribute(\"name\");\n return column && {op, column};\n });\n }\n\n _get_view_row_pivots() {\n return this._get_view_dom_columns(\"#row_pivots perspective-row\", col => {\n return col.getAttribute(\"name\");\n });\n }\n\n _get_view_column_pivots() {\n return this._get_view_dom_columns(\"#column_pivots perspective-row\", col => {\n return col.getAttribute(\"name\");\n });\n }\n\n _get_view_filter_nodes() {\n return this._get_view_dom_columns(\"#filters perspective-row\");\n }\n\n _get_view_filters() {\n return this._get_view_dom_columns(\"#filters perspective-row\", col => {\n let {operator, operand} = JSON.parse(col.getAttribute(\"filter\"));\n return [col.getAttribute(\"name\"), operator, operand];\n });\n }\n\n _get_view_sorts() {\n return this._get_view_dom_columns(\"#sort perspective-row\", col => {\n let order = col.getAttribute(\"sort-order\") || \"asc\";\n return [col.getAttribute(\"name\"), order];\n });\n }\n\n _get_view_computed_columns() {\n return JSON.parse(this.getAttribute(\"computed-columns\")) || [];\n }\n\n _get_view_parsed_computed_columns() {\n return JSON.parse(this.getAttribute(\"parsed-computed-columns\")) || [];\n }\n\n _get_visible_column_count() {\n return this._get_view_active_columns().length;\n }\n\n get_aggregate_attribute() {\n const aggs = JSON.parse(this.getAttribute(\"aggregates\")) || {};\n const found = new Set();\n const new_aggs = Object.keys(aggs).map(col => {\n found.add(col);\n return {column: col, op: aggs[col]};\n });\n if (this._aggregate_defaults) {\n for (const column of Object.keys(this._aggregate_defaults)) {\n if (!found.has(column)) {\n new_aggs.push({\n column,\n op: this._aggregate_defaults[column]\n });\n }\n }\n }\n return new_aggs;\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport debounce from \"lodash/debounce\";\nimport isEqual from \"lodash/isEqual\";\nimport {html, render} from \"lit-html\";\n\nimport * as perspective from \"@finos/perspective/dist/esm/config/constants.js\";\nimport {get_type_config} from \"@finos/perspective/dist/esm/config\";\nimport {CancelTask} from \"./cancel_task.js\";\n\nimport {StateElement} from \"./state_element.js\";\n\n/******************************************************************************\n *\n * Helpers\n *\n */\n\nfunction numberWithCommas(x) {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\nlet TYPE_ORDER = {integer: 2, string: 0, float: 3, boolean: 4, datetime: 1, date: 1};\n\nconst column_sorter = schema => (a, b) => {\n const s1 = TYPE_ORDER[schema[a]];\n const s2 = TYPE_ORDER[schema[b]];\n let r = 0;\n if (s1 == s2) {\n r = a.toLowerCase() < b.toLowerCase() ? -1 : 1;\n } else {\n r = s1 < s2 ? -1 : 1;\n }\n return r;\n};\n\nfunction get_aggregate_defaults(columns, schema, computed_schema) {\n const aggregates = {};\n for (const col of columns) {\n let type = schema[col];\n if (!type) {\n type = computed_schema[col];\n }\n aggregates[col] = get_type_config(type).aggregate;\n }\n return aggregates;\n}\n\nfunction get_aggregates_with_defaults(aggregate_attribute, columns, schema, computed_schema) {\n const found = new Set();\n const aggregates = [];\n for (const col of aggregate_attribute) {\n let type = schema[col.column];\n if (!type) {\n type = computed_schema[col.column];\n }\n const type_config = get_type_config(type);\n found.add(col.column);\n if (type_config.type || type) {\n if (col.op === \"\" || perspective.TYPE_AGGREGATES[type_config.type || type].indexOf(col.op) === -1) {\n col.op = type_config.aggregate;\n }\n aggregates.push(col);\n } else {\n console.warn(`No column \"${col.column}\" found (specified in aggregates attribute).`);\n }\n }\n\n // Add columns detected from dataset.\n for (const col of columns) {\n if (!found.has(col)) {\n let type = schema[col];\n if (!type) {\n type = computed_schema[col.column];\n }\n aggregates.push({\n column: col,\n op: get_type_config(type).aggregate\n });\n }\n }\n\n return aggregates;\n}\n\nconst _total_template = args => {\n if (args) {\n const x = numberWithCommas(args[0]);\n const y = numberWithCommas(args[1]);\n const total = Math.floor((args[0] / args[1]) * 100);\n return html`\n <span title=\"${x} / ${y}\" class=\"plugin_information--overflow-hint\">&nbsp;<span class=\"plugin_information--overflow-hint-percent\">${total}%</span>&nbsp;</span>\n `;\n }\n};\n\nconst _nowrap_template = text => {\n if (text !== \"\") {\n return html`\n <span style=\"white-space:nowrap\">${text}</span>\n `;\n }\n};\n\n/**\n * Render warning template tagged literal.\n * @param {*} strings\n * @param {...[n, m]} args tuples of rationals to be formatted.\n */\nconst _warning = (strings, ...args) => strings.flatMap((str, idx) => [_nowrap_template(str), _total_template(args[idx])]).filter(x => x);\n\n/******************************************************************************\n *\n * PerspectiveElement\n *\n */\n\nexport class PerspectiveElement extends StateElement {\n /**\n * Given an array of computed column definitions, check the table's\n * computed schema and make sure all types and column names are valid.\n * If any column names are invalid, they are removed from the output\n * array of computed column definitions.\n *\n * @param {Array{Object}} computed_columns an Array of computed column\n * definitions\n * @param {Object{String}} computed_schema a computed column schema\n * generated from the table\n *\n * @returns {Array{Object}} a validated Array of computed column definitions\n */\n _validate_parsed_computed_columns(computed_columns, computed_schema) {\n if (!computed_columns || computed_columns.length === 0) return [];\n const validated = [];\n\n for (const computed of computed_columns) {\n if (computed_schema[computed.column]) {\n validated.push(computed);\n }\n }\n\n return validated;\n }\n\n /**\n * Given a {@link module:perspective~table}, load it into the\n * {@link module:perspective_viewer~PerspectiveViewer} and set the viewer's\n * state. If the `computed-columns` attribute is set on the viewer, this\n * method attempts to validate the computed columns with the `Table` and\n * reconcile state.\n *\n * @param {*} table\n * @param {*} computed\n */\n async _load_table(table) {\n this.shadowRoot.querySelector(\"#app\").classList.add(\"hide_message\");\n const resolve = this._set_updating();\n\n this._clear_state();\n this._table = table;\n\n if (!this._computed_expression_parser.is_initialized) {\n // Use metadata from the `Table` to construct the expression parser\n const computed_functions = await table.get_computed_functions();\n this._computed_expression_parser.init(computed_functions);\n }\n\n let [cols, schema] = await Promise.all([table.columns(), table.schema(true)]);\n\n // Initial col order never contains computed columns\n this._initial_col_order = cols.slice();\n\n // Already validated through the attribute API\n let parsed_computed_columns = this._get_view_parsed_computed_columns();\n\n if (parsed_computed_columns.length === 0) {\n // Fallback for race condition on workspace - need to parse\n // computed expressions and then set `parsed-computed-columns`\n // so that future views can get the computed column.\n const computed_expressions = this._get_view_computed_columns();\n\n for (const expression of computed_expressions) {\n if (typeof expression === \"string\") {\n parsed_computed_columns = parsed_computed_columns.concat(this._computed_expression_parser.parse(expression));\n } else {\n parsed_computed_columns.push(expression);\n }\n }\n }\n\n const computed_schema = await table.computed_schema(parsed_computed_columns);\n\n // Validate the computed columns and make sure no invalid columns\n // are present, as invalid columns can cause segfaults later on.\n const validated = await this._validate_parsed_computed_columns(parsed_computed_columns, computed_schema);\n parsed_computed_columns = validated;\n\n // Update the viewer with the parsed computed columns\n this.setAttribute(\"parsed-computed-columns\", JSON.stringify(parsed_computed_columns));\n\n const computed_column_names = parsed_computed_columns.map(x => x.column);\n cols = cols.concat(computed_column_names);\n\n if (!this.hasAttribute(\"columns\")) {\n this.setAttribute(\"columns\", JSON.stringify(this._initial_col_order));\n }\n\n cols.sort(column_sorter(schema));\n\n // Update aggregates\n const aggregate_attribute = this.get_aggregate_attribute();\n const aggregates = get_aggregates_with_defaults(aggregate_attribute, cols, schema, computed_schema);\n\n let shown = JSON.parse(this.getAttribute(\"columns\")); //.filter(x => all_cols.indexOf(x) > -1);\n\n // At this point, cols contains both the table columns and the\n // validated computed columns, so this should only filter on columns\n // that don't exist in either.\n const shown_is_invalid = shown.filter(x => cols.indexOf(x) > -1).length === 0;\n\n if (shown_is_invalid) {\n shown = this._initial_col_order;\n }\n\n this._aggregate_defaults = get_aggregate_defaults(cols, schema, computed_schema);\n\n // Clear the columns in the DOM before adding new ones\n this._clear_columns();\n\n for (const name of cols) {\n let aggregate = aggregates.find(a => a.column === name).op;\n const computed = computed_column_names.includes(name) ? name : undefined;\n let type = schema[name];\n if (!type) {\n type = computed_schema[name];\n }\n const row = this._new_row(name, type, aggregate, null, null, computed);\n this._inactive_columns.appendChild(row);\n if (shown.includes(name)) {\n row.classList.add(\"active\");\n }\n }\n\n while (shown.length < this._plugin.initial?.names?.length) {\n shown.push(null);\n }\n\n for (const x of shown) {\n const computed = computed_column_names.includes(x) ? x : undefined;\n let type = schema[name];\n if (!type) {\n type = computed_schema[name];\n }\n const active_row = this._new_row(x, type, undefined, undefined, undefined, computed);\n this._active_columns.appendChild(active_row);\n }\n\n if (cols.length === shown.filter(x => cols.indexOf(x) > -1).length) {\n this._columns_container.classList.add(\"collapse\");\n } else {\n this._columns_container.classList.remove(\"collapse\");\n }\n\n this._show_column_container();\n\n if ((await this._table.compute()) === true) {\n this._show_side_panel_actions();\n }\n\n // Filters need type information to populate e.g. the operator dropdown,\n // so reset them.\n if (this.hasAttribute(\"filters\")) {\n this.filters = this.getAttribute(\"filters\");\n }\n\n // Get an edit port from the table, and set it on the viewer so that\n // all grid edits use the specified port.\n this._edit_port = await table.make_port();\n\n // Resolve the edit port lock, which allows for `get_edit_port` to be\n // called in arbitary order without ever returning a null value.\n this._edit_port_lock.resolve(this._edit_port);\n\n try {\n await this._debounce_update({force_update: true});\n } catch (e) {\n console.warn(\"Initial view failed, resetting UI state\");\n await this.reset();\n throw e;\n }\n\n resolve();\n }\n\n async get_maxes() {\n // If the plugin is set to not render a warning, i.e. after the user\n // selects \"Render all points\", then return null for max_cols/max_rows.\n if (typeof this._plugin.max_columns !== \"undefined\" && this._plugin.render_warning === false) {\n return {\n max_cols: null,\n max_rows: null\n };\n }\n\n let max_cols, max_rows;\n const [schema, num_columns] = await Promise.all([this._view.schema(), this._view.num_columns()]);\n const schema_columns = Object.keys(schema || {}).length || 1;\n\n if (typeof this._plugin.max_columns !== \"undefined\") {\n const column_group_diff = this._plugin.max_columns % schema_columns;\n const column_limit = this._plugin.max_columns + column_group_diff;\n max_cols = column_limit < num_columns ? column_limit : undefined;\n }\n\n if (typeof this._plugin.max_cells !== \"undefined\") {\n max_rows = Math.ceil(max_cols ? this._plugin.max_cells / max_cols : this._plugin.max_cells / (num_columns || 1));\n }\n\n return {max_cols, max_rows};\n }\n\n async _warn_render_size_exceeded(max_cols, max_rows) {\n if (this._show_warnings && (max_cols || max_rows)) {\n const num_columns = await this._view.num_columns();\n const num_rows = await this._view.num_rows();\n const count = num_columns * num_rows;\n const columns_are_truncated = max_cols && max_cols < num_columns;\n const rows_are_truncated = max_rows && max_rows < num_rows;\n if (columns_are_truncated && rows_are_truncated) {\n this._plugin_information.classList.remove(\"hidden\");\n const warning = _warning`Rendering ${[max_cols, num_columns]} of columns and ${[num_columns * max_rows, count]} of points.`;\n render(warning, this._plugin_information_message);\n return true;\n } else if (columns_are_truncated) {\n this._plugin_information.classList.remove(\"hidden\");\n const warning = _warning`Rendering ${[max_cols, num_columns]} of columns.`;\n render(warning, this._plugin_information_message);\n return true;\n } else if (rows_are_truncated) {\n this._plugin_information.classList.remove(\"hidden\");\n const warning = _warning`Rendering ${[num_columns * max_rows, count]} of points.`;\n render(warning, this._plugin_information_message);\n return true;\n } else {\n this._plugin_information.classList.add(\"hidden\");\n }\n }\n return false;\n }\n\n /**\n * Calculates the optimal timeout in milliseconds for render events,\n * calculated by 5 frame moving average of this component's render\n * framerate, or explicit override attribute `\"throttle\"`.\n *\n * @private\n * @returns\n * @memberof PerspectiveElement\n */\n _calculate_throttle_timeout() {\n let timeout;\n const throttle = this.getAttribute(\"throttle\");\n if (throttle === undefined || throttle === \"null\" || !this.hasAttribute(\"throttle\")) {\n if (!this.__render_times || this.__render_times.length < 5) {\n return 0;\n }\n timeout = this.__render_times.reduce((x, y) => x + y, 0) / this.__render_times.length;\n timeout = Math.min(5000, timeout);\n } else {\n timeout = parseInt(throttle);\n if (isNaN(timeout) || timeout < 0) {\n console.warn(`Bad throttle attribute value \"${throttle}\". Can be (non-negative integer) milliseconds.`);\n this.removeAttribute(\"throttle\");\n return 0;\n }\n }\n return Math.max(0, timeout);\n }\n\n _view_on_update(limit_points) {\n if (!this._debounced) {\n this._debounced = setTimeout(async () => {\n this._debounced = undefined;\n const timer = this._render_time();\n if (this._task && !this._task.initial) {\n this._task.cancel();\n }\n const task = (this._task = new CancelTask());\n const updater = this._plugin.update || this._plugin.create;\n try {\n if (limit_points) {\n const {max_cols, max_rows} = await this.get_maxes();\n if (!task.cancelled) {\n await this._warn_render_size_exceeded(max_cols, max_rows);\n await updater.call(this, this._datavis, this._view, task, max_cols, max_rows);\n }\n } else {\n await updater.call(this, this._datavis, this._view, task);\n }\n timer();\n task.cancel();\n } catch (err) {\n console.error(\"Error rendering plugin.\", err);\n } finally {\n this.dispatchEvent(new Event(\"perspective-view-update\"));\n }\n }, this._calculate_throttle_timeout());\n }\n }\n\n async _validate_filters() {\n const filters = [];\n for (const node of this._get_view_filter_nodes()) {\n const operandNode = node.shadowRoot.getElementById(\"filter_operand\");\n const exclamation = node.shadowRoot.getElementById(\"row_exclamation\");\n const {operator, operand} = JSON.parse(node.getAttribute(\"filter\"));\n const filter = [node.getAttribute(\"name\"), operator, operand];\n if (await this._table.is_valid_filter(filter)) {\n filters.push(filter);\n node.title = \"\";\n operandNode.style.borderColor = \"\";\n exclamation.hidden = true;\n } else {\n node.title = \"Invalid Filter\";\n operandNode.style.borderColor = \"red\";\n exclamation.hidden = false;\n }\n }\n\n return filters;\n }\n\n _is_config_changed(config) {\n const plugin_name = this.getAttribute(\"plugin\");\n if (isEqual(config, this._previous_config) && plugin_name === this._previous_plugin_name) {\n return false;\n } else {\n this._previous_config = config;\n this._previous_plugin_name = plugin_name;\n return true;\n }\n }\n\n async _new_view({force_update = false, ignore_size_check = false, limit_points = true} = {}) {\n if (!this._table) return;\n this._check_responsive_layout();\n const row_pivots = this._get_view_row_pivots();\n const column_pivots = this._get_view_column_pivots();\n const filters = await this._validate_filters();\n const view_aggregates = this._get_view_aggregates();\n if (view_aggregates.length === 0) return;\n const sort = this._get_view_sorts();\n\n let columns = view_aggregates.map(x => x.column);\n let aggregates = {};\n for (const a of view_aggregates) {\n aggregates[a.column] = a.op;\n }\n\n for (const s of sort) {\n const name = s[0];\n if (columns.indexOf(name) === -1 && !(column_pivots.indexOf(s) > -1 || row_pivots.indexOf(s) > -1)) {\n const all = this.get_aggregate_attribute();\n const {column, op} = all.reduce((obj, y) => (y.column === name ? y : obj));\n aggregates[column] = op;\n }\n }\n\n // Computed Columns will have been parsed by this point in the\n // setAttribute callback.\n const computed_columns = this._get_view_parsed_computed_columns();\n\n const config = {\n filter: filters,\n row_pivots: row_pivots,\n column_pivots: column_pivots,\n aggregates: aggregates,\n columns: columns,\n sort: sort,\n computed_columns: computed_columns\n };\n\n if (this._view) {\n this._view.remove_update(this._view_updater);\n this._view.delete();\n this._view = undefined;\n }\n\n try {\n this._view = this._table.view(config);\n this._view_updater = () => this._view_on_update(limit_points);\n this._view.on_update(this._view_updater);\n } catch (e) {\n this._view.delete();\n throw e;\n }\n\n const timer = this._render_time();\n this._render_count = (this._render_count || 0) + 1;\n if (this._task) {\n this._task.cancel();\n }\n\n const task = (this._task = new CancelTask(() => this._render_count--, true));\n\n try {\n const {max_cols, max_rows} = await this.get_maxes();\n if (!ignore_size_check) {\n await this._warn_render_size_exceeded(max_cols, max_rows);\n }\n if (limit_points) {\n await this._plugin.create.call(this, this._datavis, this._view, task, max_cols, max_rows, force_update);\n } else {\n await this._plugin.create.call(this, this._datavis, this._view, task, undefined, undefined, force_update);\n }\n } catch (err) {\n console.warn(err);\n } finally {\n if (!this.__render_times) {\n this.__render_times = [];\n this.dispatchEvent(new Event(\"perspective-view-update\"));\n }\n timer();\n task.cancel();\n if (this._render_count === 0) {\n this.removeAttribute(\"updating\");\n this.dispatchEvent(new Event(\"perspective-update-complete\"));\n }\n }\n }\n\n _check_loaded_table() {\n if (this._table) {\n const table = this._table;\n delete this._table;\n this._load_table(table);\n }\n }\n\n _render_time() {\n const t = performance.now();\n return () => {\n this.__render_times.unshift(performance.now() - t);\n this.__render_times = this.__render_times.slice(0, 5);\n };\n }\n\n _restyle_plugin() {\n if (this._plugin.styleElement) {\n const task = (this._task = new CancelTask());\n this._plugin.styleElement.call(this, this._datavis, this._view, task);\n }\n }\n\n _clear_state() {\n if (this._task) {\n this._task.cancel();\n }\n const all = [];\n if (this._view) {\n const view = this._view;\n this._view = undefined;\n all.push(view.delete());\n view.remove_update(this._view_updater);\n view.remove_delete();\n }\n return Promise.all(all);\n }\n\n _set_updating() {\n this.toggleAttribute(\"updating\", true);\n let resolve;\n this._updating_promise = new Promise(_resolve => {\n resolve = _resolve;\n });\n return resolve;\n }\n\n _register_debounce_instance() {\n const _update = debounce((resolve, ignore_size_check, force_update, limit_points) => {\n this._new_view({ignore_size_check, force_update, limit_points}).then(resolve);\n }, 0);\n\n this._debounce_update = async ({force_update = false, ignore_size_check = false, limit_points = true} = {}) => {\n if (this._table) {\n let resolve = this._set_updating();\n await new Promise(resolve => _update(resolve, ignore_size_check, force_update, limit_points));\n resolve();\n }\n };\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {get_type_config} from \"@finos/perspective/dist/esm/config\";\nimport {dragend} from \"./dragdrop.js\";\nimport {renderers} from \"./renderers.js\";\n\nimport {PerspectiveElement} from \"./perspective_element.js\";\nimport {html, render} from \"lit-html\";\n\n/**\n * Render `<option>` blocks\n * @param {*} names name objects\n */\nconst options = vals => {\n const opts = [];\n for (name in vals) {\n opts.push(html`\n <option value=\"${name}\">${vals[name].name || name}</option>\n `);\n }\n return opts;\n};\n\nexport class DomElement extends PerspectiveElement {\n _clear_columns() {\n this._inactive_columns.innerHTML = \"\";\n this._active_columns.innerHTML = \"\";\n }\n\n set_aggregate_attribute(aggs) {\n let is_set = false;\n let aggregates = aggs.reduce((obj, agg) => {\n if (this._aggregate_defaults[agg.column] !== agg.op) {\n obj[agg.column] = agg.op;\n is_set = true;\n }\n return obj;\n }, {});\n if (is_set) {\n this.setAttribute(\"aggregates\", JSON.stringify(aggregates));\n } else {\n this.removeAttribute(\"aggregates\");\n }\n }\n\n _get_type(name) {\n let all = this._get_view_inactive_columns();\n if (all.length > 0) {\n const type = all.find(x => x.getAttribute(\"name\") === name);\n if (type) {\n return type.getAttribute(\"type\");\n } else {\n return \"integer\";\n }\n } else {\n return \"\";\n }\n }\n\n _set_row_type(row) {\n const weights = this._get_view_inactive_columns()\n .filter(x => x.getAttribute(\"type\") === \"integer\" || x.getAttribute(\"type\") === \"float\")\n .map(x => x.getAttribute(\"name\"));\n row.set_weights(weights);\n row.setAttribute(\"type\", this._get_type(row.getAttribute(\"name\")));\n }\n\n // Generates a new row in state + DOM\n _new_row(name, type, aggregate, filter, sort, computed) {\n let row = document.createElement(\"perspective-row\");\n type = type || this._get_type(name);\n\n if (!aggregate) {\n let aggregates = this.get_aggregate_attribute();\n if (aggregates) {\n aggregate = aggregates.find(x => x.column === name);\n if (aggregate) {\n aggregate = aggregate.op;\n } else {\n aggregate = get_type_config(type).aggregate;\n }\n } else {\n aggregate = get_type_config(type).aggregate;\n }\n }\n\n if (filter) {\n row.setAttribute(\"filter\", filter);\n\n if (type === \"string\" || type === \"date\" || type === \"datetime\") {\n // Get all unique values for the column - because all options\n // must be valid column names, recreate computed columns\n // if the filter column is a computed column.\n const computed_columns = this._get_view_parsed_computed_columns();\n const computed_names = computed_columns.map(x => x.column);\n\n // If `name` is in computed columns, recreate the current\n // viewer's computed columns.\n const view = this._table.view({\n row_pivots: [name],\n columns: [],\n computed_columns: computed_names.includes(name) ? computed_columns : []\n });\n\n view.num_rows()\n .then(async nrows => {\n if (nrows < 100000) {\n // Autocomplete\n const json = await view.to_json({\n end_row: 10\n });\n row.choices(this._autocomplete_choices(json, type));\n } else {\n console.warn(`perspective-viewer did not generate autocompletion results - ${nrows} is greater than limit of 100,000 rows.`);\n }\n })\n .finally(() => {\n view.delete();\n });\n }\n }\n\n if (sort) {\n row.setAttribute(\"sort-order\", sort);\n } else {\n if (this._get_view_column_pivots().indexOf(name) > -1) {\n row.setAttribute(\"sort-order\", \"col asc\");\n } else {\n row.setAttribute(\"sort-order\", \"asc\");\n }\n }\n\n const weights = this._get_view_inactive_columns()\n .filter(x => x.getAttribute(\"type\") === \"integer\" || x.getAttribute(\"type\") === \"float\")\n .map(x => x.getAttribute(\"name\"));\n row.set_weights(weights);\n\n if (name === null) {\n row.classList.add(\"null-column\");\n } else {\n row.setAttribute(\"type\", type);\n row.setAttribute(\"name\", name);\n }\n\n row.setAttribute(\"aggregate\", Array.isArray(aggregate) ? JSON.stringify(aggregate) : aggregate);\n\n row.addEventListener(\"visibility-clicked\", this._column_visibility_clicked.bind(this));\n row.addEventListener(\"aggregate-selected\", this._column_aggregate_clicked.bind(this));\n row.addEventListener(\"filter-selected\", this._column_filter_clicked.bind(this));\n row.addEventListener(\"close-clicked\", event => dragend.call(this, event.detail));\n row.addEventListener(\"sort-order\", this._sort_order_clicked.bind(this));\n\n row.addEventListener(\"row-drag\", () => {\n this.classList.add(\"dragging\");\n this._original_index = Array.prototype.slice.call(this._active_columns.children).findIndex(x => x.getAttribute(\"name\") === name);\n if (this._original_index !== -1) {\n this._drop_target_hover = this._active_columns.children[this._original_index];\n setTimeout(() => row.setAttribute(\"drop-target\", true));\n } else {\n this._drop_target_hover = this._new_row(name, type, aggregate);\n }\n });\n row.addEventListener(\"row-dragend\", () => {\n this.classList.remove(\"dragging\");\n });\n\n if (computed) {\n row.setAttribute(\"computed_column\", JSON.stringify(computed));\n row.classList.add(\"computed\");\n }\n\n return row;\n }\n\n /**\n * Using a computed schema generated in the attribute callback, add\n * computed columns to the inactive columns area if they're not specified\n * to be inserted anywhere else in the UI.\n */\n _update_computed_column_view(computed_schema) {\n const computed_columns = this._get_view_parsed_computed_columns();\n const columns = this._get_view_all_column_names();\n const active = this._get_view_active_column_names();\n\n if (Object.keys(computed_schema).length === 0 || computed_columns.length === 0) {\n return;\n }\n\n let added_count = 0;\n\n const attr = JSON.parse(this.getAttribute(\"columns\")) || [];\n let reset_columns_attr = false;\n\n for (const cc of computed_columns) {\n const name = cc.column;\n\n // Check for whether the computed column is in the attribute but\n // NOT in the DOM - occurs when restore is called and a race\n // condition between `computed-columns` and `columns` occurs.\n const should_reset = !columns.includes(name) && attr.includes(name);\n\n if (should_reset) {\n reset_columns_attr = true;\n }\n\n // If the column already exists or is already in the active DOM,\n // don't add it to the inactive DOM\n const should_add = !columns.includes(name) && !active.includes(name);\n\n if (!should_add) {\n continue;\n }\n\n const row = this._new_row(name, computed_schema[name], null, null, null, name);\n this._inactive_columns.insertBefore(row, this._inactive_columns.childNodes[0] || null);\n added_count++;\n }\n\n if (reset_columns_attr) {\n this._update_column_view(attr, true);\n } else {\n // Remove collapse so that new inactive columns show up\n if (added_count > 0 && this._columns_container.classList.contains(\"collapse\")) {\n this._columns_container.classList.remove(\"collapse\");\n }\n }\n }\n\n /**\n * Given two sets of computed columns, remove columns that are present in\n * `old_computed_columns` but not `new_computed_columns`, and return a\n * list of computed column definitions to remove.\n *\n * @param {*} old_computed_columns\n * @param {*} new_computed_columns\n */\n _diff_computed_column_view(old_computed_columns, new_computed_columns) {\n const to_remove = [];\n const new_names = new_computed_columns.map(x => x.column);\n for (const column of old_computed_columns) {\n if (!new_names.includes(column.column)) {\n to_remove.push(column);\n }\n }\n return to_remove;\n }\n\n /**\n * When the `computed-columns` attribute is set to [], null, or undefined,\n * clear all previously created columns from the UI.\n */\n _reset_computed_column_view(computed_columns) {\n if (!computed_columns || computed_columns.length === 0) {\n return;\n }\n\n const computed_names = computed_columns.map(x => x.column);\n\n // Remove computed columns from all\n const filtered_active = this._get_view_active_column_names().filter(x => !computed_names.includes(x));\n\n const aggregates = this._get_view_aggregates().filter(x => !computed_names.includes(x.column));\n const rp = this._get_view_row_pivots().filter(x => !computed_names.includes(x));\n const cp = this._get_view_column_pivots().filter(x => !computed_names.includes(x));\n const sort = this._get_view_sorts().filter(x => !computed_names.includes(x[0]));\n const filters = this._get_view_filters().filter(x => !computed_names.includes(x[0]));\n\n // Aggregates as an array is from the attribute API\n this.set_aggregate_attribute(aggregates);\n\n this.setAttribute(\"columns\", JSON.stringify(filtered_active));\n this.setAttribute(\"row-pivots\", JSON.stringify(rp));\n this.setAttribute(\"column-pivots\", JSON.stringify(cp));\n this.setAttribute(\"sort\", JSON.stringify(sort));\n this.setAttribute(\"filters\", JSON.stringify(filters));\n\n // Remove inactive computed columns\n const inactive_computed = this._get_view_all_columns().filter(x => x.classList.contains(\"computed\"));\n\n for (const col of inactive_computed) {\n this._inactive_columns.removeChild(col);\n }\n\n // Re-check on whether to collapse inactive columns\n const pop_cols = this._get_view_active_columns().filter(x => typeof x !== \"undefined\" && x !== null);\n const lis = this._get_view_inactive_columns();\n\n if (pop_cols.length === lis.length) {\n this._columns_container.classList.add(\"collapse\");\n } else {\n this._columns_container.classList.remove(\"collapse\");\n }\n }\n\n _update_column_view(columns, reset = false) {\n if (!columns) {\n columns = this._get_view_active_column_names();\n }\n\n if (this._plugin.initial && this._plugin.initial.names) {\n while (columns.length < this._plugin.initial.names.length) {\n columns.push(null);\n }\n }\n\n // If columns were not passed in, this is needed to keep the attribute\n // API in sync with DOM state.\n this.setAttribute(\"columns\", JSON.stringify(columns));\n\n const pop_cols = columns.filter(x => typeof x !== \"undefined\" && x !== null);\n const lis = this._get_view_inactive_columns();\n if (pop_cols.length === lis.length) {\n this._columns_container.classList.add(\"collapse\");\n } else {\n this._columns_container.classList.remove(\"collapse\");\n }\n lis.forEach(x => {\n const index = pop_cols.indexOf(x.getAttribute(\"name\"));\n if (index === -1) {\n x.classList.remove(\"active\");\n } else {\n x.classList.add(\"active\");\n }\n });\n if (reset) {\n this._update_column_list(columns, this._active_columns, (name, computed_names) => {\n if (name === null) {\n return this._new_row(null);\n } else {\n const ref = lis.find(x => x.getAttribute(\"name\") === name);\n if (ref) {\n const name = ref.getAttribute(\"name\");\n let computed;\n if (computed_names.includes(name)) {\n computed = name;\n }\n return this._new_row(name, ref.getAttribute(\"type\"), undefined, undefined, undefined, computed);\n }\n }\n });\n }\n }\n\n _update_column_list(columns, container, callback, accessor) {\n accessor = accessor || ((x, y) => y.getAttribute(\"name\") === x);\n const active_columns = Array.prototype.slice.call(container.children);\n\n // Make sure that the `computed` attribute is set on computed columns\n const computed_columns = this._get_view_parsed_computed_columns();\n const computed_names = computed_columns.map(x => x.column);\n\n for (let i = 0, j = 0; i < active_columns.length || j < columns.length; i++, j++) {\n const name = columns[j];\n const col = active_columns[i];\n const next_col = active_columns[i + 1];\n if (!col) {\n const node = callback(name, computed_names);\n if (node) {\n container.appendChild(node);\n }\n } else if (typeof name === \"undefined\") {\n container.removeChild(col);\n } else if (accessor(name, col)) {\n this._set_row_type(col);\n } else {\n if (col.classList.contains(\"null-column\")) {\n const node = callback(name, computed_names);\n if (node) {\n container.replaceChild(node, col);\n }\n } else if (next_col && accessor(name, next_col)) {\n container.removeChild(col);\n i++;\n // j--;\n } else {\n const node = callback(name, computed_names);\n if (node) {\n container.insertBefore(node, col);\n i--;\n }\n }\n }\n }\n }\n\n _set_row_styles() {\n let style = \"\";\n if (this._plugin.initial && this._plugin.initial.names) {\n for (const nidx in this._plugin.initial.names) {\n const name = this._plugin.initial.names[nidx];\n style += `#active_columns perspective-row:nth-child(${parseInt(nidx) + 1}){margin-top:23px;}`;\n style += `#active_columns perspective-row:nth-child(${parseInt(nidx) + 1}):before{content:\"${name}\";}`;\n }\n }\n this.shadowRoot.querySelector(\"#psp_styles\").innerHTML = style;\n }\n\n _show_column_container() {\n this.shadowRoot.querySelector(\"#columns_container\").style.visibility = \"visible\";\n }\n\n _show_side_panel_actions() {\n this.shadowRoot.querySelector(\"#side_panel__actions\").style.visibility = \"visible\";\n }\n\n _remove_null_columns(since_index = 0) {\n const elems = this._get_view_active_columns();\n while (++since_index < elems.length) {\n const elem = elems[since_index];\n if (elem.classList.contains(\"null-column\")) {\n this.shadowRoot.querySelector(\"#active_columns\").removeChild(elem);\n }\n }\n }\n\n _set_column_defaults() {\n const cols = this._get_view_all_columns();\n const active_cols = this._get_view_active_valid_columns();\n const valid_active_cols = this._get_view_active_valid_column_names();\n if (cols.length > 0) {\n if (this._plugin.initial) {\n let pref = [];\n let count = this._plugin.initial.count || 2;\n this._fill_numeric(active_cols, pref);\n this._fill_numeric(cols, pref);\n this._fill_numeric(cols, pref, true);\n pref = pref.slice(0, count);\n const labels = this._plugin.initial.names;\n while (labels && pref.length < labels.length) {\n pref.push(null);\n }\n this.setAttribute(\"columns\", JSON.stringify(pref));\n } else if (this._plugin.selectMode === \"select\") {\n this.setAttribute(\"columns\", JSON.stringify([cols[0].getAttribute(\"name\")]));\n } else {\n this.setAttribute(\"columns\", JSON.stringify(valid_active_cols));\n this._remove_null_columns();\n }\n }\n }\n\n _fill_numeric(cols, pref, bypass = false) {\n for (let col of cols) {\n let type = col.getAttribute(\"type\");\n let name = col.getAttribute(\"name\");\n if (bypass || ([\"float\", \"integer\"].indexOf(type) > -1 && pref.indexOf(name) === -1)) {\n pref.push(name);\n }\n }\n }\n\n async _check_responsive_layout() {\n if (this.shadowRoot) {\n const app = this.shadowRoot.querySelector(\"#app\");\n if (this.clientHeight < 500 && this.clientWidth > 600 && this._get_view_columns({active: false}).length > this._get_view_columns().length) {\n if (!app.classList.contains(\"columns_horizontal\")) {\n const old = this._persisted_side_panel_width;\n this._persisted_side_panel_width = this._side_panel.style.width;\n this._side_panel.style.width = old || \"\";\n app.classList.add(\"columns_horizontal\");\n }\n } else if (app.classList.contains(\"columns_horizontal\")) {\n const panel = this.shadowRoot.querySelector(\"#pivot_chart_container\");\n panel.clientWidth + this._side_panel.clientWidth;\n const width = this._persisted_side_panel_width || panel.clientWidth + this._side_panel.clientWidth / 2;\n const height = panel.clientHeight + 50;\n await this._pre_resize(width, height, () => {\n const old = this._persisted_side_panel_width;\n this._persisted_side_panel_width = this._side_panel.style.width;\n this._side_panel.style.width = old || \"\";\n app.classList.remove(\"columns_horizontal\");\n });\n return true;\n } else if (this.clientWidth < 600) {\n if (!app.classList.contains(\"narrow\")) {\n app.classList.add(\"narrow\");\n }\n } else if (app.classList.contains(\"narrow\")) {\n app.classList.remove(\"narrow\");\n }\n return false;\n }\n return false;\n }\n\n // setup functions\n _register_ids() {\n this._aggregate_selector = this.shadowRoot.querySelector(\"#aggregate_selector\");\n this._vis_selector = this.shadowRoot.querySelector(\"#vis_selector\");\n this._filters = this.shadowRoot.querySelector(\"#filters\");\n this._row_pivots = this.shadowRoot.querySelector(\"#row_pivots\");\n this._column_pivots = this.shadowRoot.querySelector(\"#column_pivots\");\n this._datavis = this.shadowRoot.querySelector(\"#pivot_chart\");\n this._active_columns = this.shadowRoot.querySelector(\"#active_columns\");\n this._inactive_columns = this.shadowRoot.querySelector(\"#inactive_columns\");\n this._side_panel_actions = this.shadowRoot.querySelector(\"#side_panel__actions\");\n this._add_computed_expression_button = this.shadowRoot.querySelector(\"#add-computed-expression\");\n this._computed_expression_widget = this.shadowRoot.querySelector(\"perspective-computed-expression-widget\");\n this._inner_drop_target = this.shadowRoot.querySelector(\"#drop_target_inner\");\n this._drop_target = this.shadowRoot.querySelector(\"#drop_target\");\n this._config_button = this.shadowRoot.querySelector(\"#config_button\");\n this._reset_button = this.shadowRoot.querySelector(\"#reset_button\");\n this._download_button = this.shadowRoot.querySelector(\"#download_button\");\n this._copy_button = this.shadowRoot.querySelector(\"#copy_button\");\n this._side_panel = this.shadowRoot.querySelector(\"#side_panel\");\n this._top_panel = this.shadowRoot.querySelector(\"#top_panel\");\n this._sort = this.shadowRoot.querySelector(\"#sort\");\n this._transpose_button = this.shadowRoot.querySelector(\"#transpose_button\");\n this._plugin_information = this.shadowRoot.querySelector(\".plugin_information\");\n this._plugin_information_action = this.shadowRoot.querySelector(\".plugin_information__action\");\n this._plugin_information_message = this.shadowRoot.querySelector(\"#plugin_information_count\");\n this._resize_bar = this.shadowRoot.querySelector(\"#resize_bar\");\n this._columns_container = this.shadowRoot.querySelector(\"#columns_container\");\n }\n\n // sets state, manipulates DOM\n _register_view_options() {\n let current_renderers = renderers.getInstance();\n render(options(current_renderers), this._vis_selector);\n }\n\n _autocomplete_choices(json, type) {\n const choices = [];\n const type_config = get_type_config(type);\n\n for (let i = 1; i < json.length; i++) {\n const row_path = json[i].__ROW_PATH__;\n if (Array.isArray(row_path) && row_path.length > 0 && row_path[0]) {\n let choice = row_path[0];\n\n if (type === \"date\" || type === \"datetime\") {\n choice = new Date(choice);\n choice = choice.toLocaleString(\"en-US\", type_config.format);\n }\n\n choices.push(choice);\n }\n }\n return choices;\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {dragend, column_dragend, column_dragleave, column_dragover, column_drop, drop, dragenter, dragover, dragleave} from \"./dragdrop.js\";\n\nimport {DomElement} from \"./dom_element.js\";\n\nexport class ActionElement extends DomElement {\n _show_context_menu(event) {\n this.shadowRoot.querySelector(\"#app\").classList.toggle(\"show_menu\");\n event.stopPropagation();\n event.preventDefault();\n return false;\n }\n\n _hide_context_menu() {\n this.shadowRoot.querySelector(\"#app\").classList.remove(\"show_menu\");\n }\n\n async _toggle_config(event) {\n if (!event || event.button !== 2) {\n this._show_config = !this._show_config;\n this._hide_context_menu();\n const panel = this.shadowRoot.querySelector(\"#pivot_chart_container\");\n if (!this._show_config) {\n await this._pre_resize(\n panel.clientWidth + this._side_panel.clientWidth,\n panel.clientHeight + this._top_panel.clientHeight,\n () => {\n this._side_panel.style.display = \"none\";\n this._top_panel.style.display = \"none\";\n this.removeAttribute(\"settings\");\n },\n () => this.dispatchEvent(new CustomEvent(\"perspective-toggle-settings\", {detail: this._show_config}))\n );\n } else {\n await this._post_resize(\n () => {\n this.toggleAttribute(\"settings\", true);\n },\n () => {\n this._side_panel.style.display = \"flex\";\n this._top_panel.style.display = \"flex\";\n this.dispatchEvent(new CustomEvent(\"perspective-toggle-settings\", {detail: this._show_config}));\n }\n );\n }\n }\n }\n\n /**\n * Given a targe `width` and `height`, pre-size the plugin before modifying\n * the HTML to reduce visual tearing.\n *\n * @private\n * @param {*} width\n * @param {*} height\n * @param {*} post Function to run once action is complete\n * @param {*} [pre=undefined] Function to run once visual effects have been\n * applied. This may be before `post`, as pre-sizing will be delayed when\n * the target size is a sub-window of the current view.\n * @memberof ActionElement\n */\n async _pre_resize(width, height, post, pre = undefined) {\n this._datavis.style.width = `${width}px`;\n this._datavis.style.height = `${height}px`;\n try {\n if (!document.hidden && this.offsetParent) {\n await this._plugin.resize.call(this);\n }\n } finally {\n pre?.();\n this._datavis.style.width = \"100%\";\n this._datavis.style.height = \"100%\";\n post();\n }\n }\n\n async _post_resize(post, pre) {\n pre?.();\n try {\n if (!document.hidden && this.offsetParent) {\n await this._plugin.resize.call(this);\n }\n } finally {\n post();\n }\n }\n\n /**\n * Display the computed expressions panel.\n *\n * @param {*} event\n */\n _open_computed_expression_widget(event) {\n event.stopImmediatePropagation();\n // FIXME: we need a better way to pass down types, metadata, etc.\n // from the parent viewer to child web components.\n this._computed_expression_widget._computed_expression_parser = this._computed_expression_parser;\n\n // Bind `get_type` so the expression editor can render the correct\n // types for each column.\n this._computed_expression_widget._get_type = this._get_type.bind(this);\n\n // Pass down a way to get the column names from the viewer.\n this._computed_expression_widget._get_view_all_column_names = this._get_view_all_column_names.bind(this);\n this._computed_expression_widget._get_view_column_names_by_types = this._get_view_column_names_by_types.bind(this);\n\n this._computed_expression_widget.style.display = \"flex\";\n this._side_panel_actions.style.display = \"none\";\n this._computed_expression_widget._observe_editor();\n }\n\n /**\n * Given an expression (in the `detail` property of the\n * `perspective-computed-expression-save` event), retrieve the viewer's\n * `computed-columns` array and append the new expression to be parsed.\n *\n * @param {*} event\n */\n _save_computed_expression(event) {\n const expression = event.detail.expression;\n\n // `computed-columns` stores the raw expression typed by the user.\n let computed_columns = this._get_view_computed_columns();\n\n if (computed_columns.includes(expression)) {\n console.warn(`\"${expression}\" was not applied because it already exists.`);\n return;\n }\n\n computed_columns.push(expression);\n\n this.setAttribute(\"computed-columns\", JSON.stringify(computed_columns));\n }\n\n async _type_check_computed_expression(event) {\n const parsed = event.detail.parsed_expression || [];\n if (parsed.length === 0) {\n this._computed_expression_widget._type_check_expression({});\n return;\n }\n const functions = {};\n for (const col of parsed) {\n functions[col.column] = col.computed_function_name;\n }\n const schema = await this._table.computed_schema(parsed);\n // Look at the failing values, and get their expected types\n const expected_types = {};\n for (const key in functions) {\n if (!schema[key]) {\n expected_types[key] = await this._table.get_computation_input_types(functions[key]);\n }\n }\n\n this._computed_expression_widget._type_check_expression(schema, expected_types);\n }\n\n /**\n * Remove all computed expressions from the DOM.\n */\n _clear_all_computed_expressions() {\n this.setAttribute(\"computed-columns\", JSON.stringify([]));\n }\n\n _set_computed_expression(event) {\n return event;\n }\n\n _column_visibility_clicked(ev) {\n const parent = ev.currentTarget;\n const is_active = parent.parentElement.getAttribute(\"id\") === \"active_columns\";\n if (is_active) {\n const min_columns = this._plugin.initial?.count || 1;\n if (this._get_view_active_valid_column_count() === min_columns) {\n return;\n }\n if (ev.detail.shiftKey) {\n for (let child of Array.prototype.slice.call(this._active_columns.children)) {\n if (child !== parent) {\n this._active_columns.removeChild(child);\n }\n }\n } else {\n const index = Array.prototype.slice.call(this._active_columns.children).indexOf(parent);\n if (index < this._plugin.initial?.count) {\n return;\n } else if (index < this._plugin.initial?.names?.length - 1) {\n this._active_columns.insertBefore(this._new_row(null), parent);\n }\n this._active_columns.removeChild(parent);\n }\n } else {\n if ((ev.detail.shiftKey && this._plugin.selectMode === \"toggle\") || (!ev.detail.shiftKey && this._plugin.selectMode === \"select\")) {\n for (let child of Array.prototype.slice.call(this._active_columns.children)) {\n this._active_columns.removeChild(child);\n }\n }\n let row = this._new_row(parent.getAttribute(\"name\"), parent.getAttribute(\"type\"));\n const cols = this._get_view_active_columns();\n let i = cols.length - 1;\n if (!cols[i] || !cols[i]?.classList.contains(\"null-column\")) {\n this._active_columns.appendChild(row);\n } else\n while (i-- > 0) {\n if (!cols[i].classList.contains(\"null-column\")) {\n this._active_columns.replaceChild(row, cols[i + 1]);\n break;\n }\n }\n }\n this._check_responsive_layout();\n this._update_column_view();\n }\n\n _column_aggregate_clicked() {\n let aggregates = this.get_aggregate_attribute();\n let new_aggregates = this._get_view_aggregates();\n for (let aggregate of aggregates) {\n let updated_agg = new_aggregates.find(x => x.column === aggregate.column);\n if (updated_agg) {\n aggregate.op = updated_agg.op;\n }\n }\n this.set_aggregate_attribute(aggregates);\n this._update_column_view();\n this._debounce_update();\n }\n\n _column_filter_clicked() {\n let new_filters = this._get_view_filters();\n this._updating_filter = true;\n this.setAttribute(\"filters\", JSON.stringify(new_filters));\n this._updating_filter = false;\n this._debounce_update();\n }\n\n _increment_sort(sort, column_sorting, abs_sorting) {\n let sort_orders = [\"asc\", \"desc\"];\n if (column_sorting) {\n sort_orders.push(\"col asc\", \"col desc\");\n }\n if (abs_sorting) {\n sort_orders = sort_orders.map(x => `${x} abs`);\n }\n sort_orders.push(\"none\");\n return sort_orders[(sort_orders.indexOf(sort) + 1) % sort_orders.length];\n }\n\n _sort_order_clicked(event) {\n const row = event.target;\n const abs_sorting = event.detail.shiftKey && row.getAttribute(\"type\") !== \"string\";\n const new_sort_order = this._increment_sort(row.getAttribute(\"sort-order\"), this._get_view_column_pivots().length > 0, abs_sorting);\n row.setAttribute(\"sort-order\", new_sort_order);\n\n const sort = this._get_view_sorts();\n this.setAttribute(\"sort\", JSON.stringify(sort));\n }\n\n // edits state\n _transpose() {\n const has_row = this.hasAttribute(\"row-pivots\");\n const has_col = this.hasAttribute(\"column-pivots\");\n if (has_row && has_col) {\n let row_pivots = this.getAttribute(\"row-pivots\");\n this.setAttribute(\"row-pivots\", this.getAttribute(\"column-pivots\"));\n this.setAttribute(\"column-pivots\", row_pivots);\n } else if (has_row) {\n let row_pivots = this.getAttribute(\"row-pivots\");\n this.removeAttribute(\"row-pivots\");\n this.setAttribute(\"column-pivots\", row_pivots);\n } else if (has_col) {\n let column_pivots = this.getAttribute(\"column-pivots\");\n this.removeAttribute(\"column-pivots\");\n this.setAttribute(\"row-pivots\", column_pivots);\n } else {\n this.removeAttribute(\"column-pivots\");\n this.removeAttribute(\"row-pivots\");\n }\n }\n\n _reset_sidepanel() {\n this._side_panel.style.width = \"\";\n }\n\n _resize_sidepanel(event) {\n const initial = document.body.style.cursor;\n document.body.style.cursor = \"col-resize\";\n const start = event.clientX;\n const width = this._side_panel.offsetWidth;\n const resize = event => {\n const new_width = Math.max(0, Math.min(width + (event.clientX - start), this.offsetWidth - 10));\n this._side_panel.style.width = `${new_width}px`;\n if (this._plugin) {\n this.notifyResize();\n }\n };\n const stop = () => {\n document.body.style.cursor = initial;\n document.removeEventListener(\"mousemove\", resize);\n document.removeEventListener(\"mouseup\", stop);\n };\n document.addEventListener(\"mousemove\", resize);\n document.addEventListener(\"mouseup\", stop);\n }\n\n _vis_selector_changed() {\n this._plugin_information.classList.add(\"hidden\");\n this.setAttribute(\"plugin\", this._vis_selector.value);\n this._active_columns.classList.remove(\"one_lock\", \"two_lock\");\n const classname = [\"one_lock\", \"two_lock\"][this._plugin.initial?.count - 1];\n if (classname) {\n this._active_columns.classList.add(classname);\n }\n this._debounce_update();\n }\n\n // most of these are drag and drop handlers - how to clean up?\n _register_callbacks() {\n this._sort.addEventListener(\"drop\", drop.bind(this));\n this._sort.addEventListener(\"dragend\", dragend.bind(this));\n this._sort.addEventListener(\"dragenter\", dragenter.bind(this));\n this._sort.addEventListener(\"dragover\", dragover.bind(this));\n this._sort.addEventListener(\"dragleave\", dragleave.bind(this));\n this._row_pivots.addEventListener(\"drop\", drop.bind(this));\n this._row_pivots.addEventListener(\"dragend\", dragend.bind(this));\n this._row_pivots.addEventListener(\"dragenter\", dragenter.bind(this));\n this._row_pivots.addEventListener(\"dragover\", dragover.bind(this));\n this._row_pivots.addEventListener(\"dragleave\", dragleave.bind(this));\n this._column_pivots.addEventListener(\"drop\", drop.bind(this));\n this._column_pivots.addEventListener(\"dragend\", dragend.bind(this));\n this._column_pivots.addEventListener(\"dragenter\", dragenter.bind(this));\n this._column_pivots.addEventListener(\"dragover\", dragover.bind(this));\n this._column_pivots.addEventListener(\"dragleave\", dragleave.bind(this));\n this._filters.addEventListener(\"drop\", drop.bind(this));\n this._filters.addEventListener(\"dragend\", dragend.bind(this));\n this._filters.addEventListener(\"dragenter\", dragenter.bind(this));\n this._filters.addEventListener(\"dragover\", dragover.bind(this));\n this._filters.addEventListener(\"dragleave\", dragleave.bind(this));\n this._active_columns.addEventListener(\"drop\", column_drop.bind(this));\n this._active_columns.addEventListener(\"dragenter\", dragenter.bind(this));\n this._active_columns.addEventListener(\"dragend\", column_dragend.bind(this));\n this._active_columns.addEventListener(\"dragover\", column_dragover.bind(this));\n this._active_columns.addEventListener(\"dragleave\", column_dragleave.bind(this));\n this._add_computed_expression_button.addEventListener(\"click\", this._open_computed_expression_widget.bind(this));\n this._computed_expression_widget.addEventListener(\"perspective-computed-expression-save\", this._save_computed_expression.bind(this));\n this._computed_expression_widget.addEventListener(\"perspective-computed-expression-resize\", this._reset_sidepanel.bind(this));\n this._computed_expression_widget.addEventListener(\"perspective-computed-expression-type-check\", this._type_check_computed_expression.bind(this));\n this._computed_expression_widget.addEventListener(\"perspective-computed-expression-remove\", this._clear_all_computed_expressions.bind(this));\n this._computed_expression_widget.addEventListener(\"perspective-computed-expression-update\", this._set_computed_expression.bind(this));\n this._config_button.addEventListener(\"mousedown\", this._toggle_config.bind(this));\n this._config_button.addEventListener(\"contextmenu\", this._show_context_menu.bind(this));\n this._reset_button.addEventListener(\"click\", this.reset.bind(this));\n this._copy_button.addEventListener(\"click\", event => this.copy(event.shiftKey));\n this._download_button.addEventListener(\"click\", event => this.download(event.shiftKey));\n this._transpose_button.addEventListener(\"click\", this._transpose.bind(this));\n this._drop_target.addEventListener(\"dragover\", dragover.bind(this));\n this._resize_bar.addEventListener(\"mousedown\", this._resize_sidepanel.bind(this));\n this._resize_bar.addEventListener(\"dblclick\", this._reset_sidepanel.bind(this));\n\n this._vis_selector.addEventListener(\"change\", this._vis_selector_changed.bind(this));\n\n this._plugin_information_action.addEventListener(\"click\", () => {\n this._debounce_update({ignore_size_check: true, limit_points: false});\n this._plugin_information.classList.add(\"hidden\");\n this._plugin.render_warning = false;\n });\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport \"@webcomponents/webcomponentsjs\";\nimport \"./polyfill.js\";\n\nimport {bindTemplate, json_attribute, array_attribute, copy_to_clipboard, invertPromise, throttlePromise} from \"./utils.js\";\nimport {renderers, register_debug_plugin} from \"./viewer/renderers.js\";\nimport \"./row.js\";\nimport \"./autocomplete_widget.js\";\nimport \"./expression_editor.js\";\nimport \"./computed_expressions/widget.js\";\n\nimport template from \"../html/viewer.html\";\n\nimport view_style from \"../less/viewer.less\";\nimport default_style from \"../less/default.less\";\n\nimport {ActionElement} from \"./viewer/action_element.js\";\nimport {COMPUTED_EXPRESSION_PARSER} from \"./computed_expressions/computed_expression_parser.js\";\n\n/**\n * Module for the `<perspective-viewer>` custom element.\n *\n * This module has no exports, but importing it has a side\n * effect: the {@link module:perspective_viewer~PerspectiveViewer} class is\n * registered as a custom element, after which it can be used as a standard DOM\n * element.\n *\n * The documentation in this module defines the instance structure of a\n * `<perspective-viewer>` DOM object instantiated typically, through HTML or any\n * relevent DOM method e.g. `document.createElement(\"perspective-viewer\")` or\n * `document.getElementsByTagName(\"perspective-viewer\")`.\n *\n * @module perspective-viewer\n */\n\nconst PERSISTENT_ATTRIBUTES = [\"selectable\", \"editable\", \"plugin\", \"computed-columns\", \"row-pivots\", \"column-pivots\", \"aggregates\", \"filters\", \"sort\", \"columns\"];\n\n/**\n * The HTMLElement class for `<perspective-viewer>` custom element.\n *\n * This class is not exported, so this constructor cannot be invoked in the\n * typical manner; instead, instances of the class are created through the\n * Custom Elements DOM API.\n *\n * Properties of an instance of this class, such as\n * {@link module:perspective_viewer~PerspectiveViewer#columns}, are reflected on\n * the DOM element as Attributes, and should be accessed as such - e.g.\n * `instance.setAttribute(\"columns\", JSON.stringify([\"a\", \"b\"]))`.\n *\n * @class PerspectiveViewer\n * @extends {HTMLElement}\n * @example\n * // Create a new `<perspective-viewer>`\n * const elem = document.createElement(\"perspective-viewer\");\n * elem.setAttribute(\"columns\", JSON.stringify([\"a\", \"b\"]));\n * document.body.appendChild(elem);\n *\n */\n@bindTemplate(template, view_style, default_style) // eslint-disable-next-line no-unused-vars\nclass PerspectiveViewer extends ActionElement {\n constructor() {\n super();\n this._register_debounce_instance();\n this._show_config = true;\n this._show_warnings = true;\n this.__render_times = [];\n this._resize_handler = this.notifyResize.bind(this);\n this._computed_expression_parser = COMPUTED_EXPRESSION_PARSER;\n this._edit_port = null;\n this._edit_port_lock = invertPromise();\n window.addEventListener(\"resize\", this._resize_handler);\n }\n\n connectedCallback() {\n if (Object.keys(renderers.getInstance()).length === 0) {\n register_debug_plugin();\n }\n\n this.toggleAttribute(\"settings\", true);\n\n this._register_ids();\n this._register_callbacks();\n this._register_view_options();\n this.toggleConfig();\n this._check_loaded_table();\n }\n\n /**\n * Sets this `perspective.table.view`'s `sort` property, an Array of column\n * names.\n *\n * @kind member\n * @type {Array<String>} Array of arrays tuples of column name and\n * direction, where the possible values are \"asc\", \"desc\", \"asc abs\", \"desc\n * abs\" and \"none\".\n * @fires PerspectiveViewer#perspective-config-update\n * @example <caption>via Javascript DOM</caption>\n * let elem = document.getElementById('my_viewer');\n * elem.setAttribute('sort', JSON.stringify([[\"x\",\"desc\"]));\n * @example <caption>via HTML</caption>\n * <perspective-viewer sort='[[\"x\",\"desc\"]]'></perspective-viewer>\n */\n @array_attribute\n sort(sort) {\n if (sort === null || sort === undefined || sort.length === 0) {\n if (this.hasAttribute(\"sort\")) {\n this.removeAttribute(\"sort\");\n }\n sort = [];\n }\n var inner = this._sort.querySelector(\"ul\");\n this._update_column_list(\n sort,\n inner,\n (s, computed_names) => {\n let dir = \"asc\";\n if (Array.isArray(s)) {\n dir = s[1];\n s = s[0];\n }\n let computed = undefined;\n if (computed_names.includes(s)) {\n computed = s;\n }\n return this._new_row(s, false, false, false, dir, computed);\n },\n (sort, node) => {\n if (Array.isArray(sort)) {\n return node.getAttribute(\"name\") === sort[0] && node.getAttribute(\"sort-order\") === sort[1];\n }\n return node.getAttribute(\"name\") === sort;\n }\n );\n this.dispatchEvent(new Event(\"perspective-config-update\"));\n this._debounce_update();\n }\n\n /**\n * The set of visible columns.\n *\n * @kind member\n * @type {Array<String>}\n * @param {Array} columns An Array of strings, the names of visible columns.\n * @fires PerspectiveViewer#perspective-config-update\n * @example <caption>via Javascript DOM</caption>\n * let elem = document.getElementById('my_viewer');\n * elem.setAttribute('columns', JSON.stringify([\"x\", \"y'\"]));\n * @example <caption>via HTML</caption>\n * <perspective-viewer columns='[\"x\", \"y\"]'></perspective-viewer>\n */\n @array_attribute\n columns(show) {\n if (show === null || show === undefined || show.length === 0) {\n if (this.hasAttribute(\"columns\")) {\n if (this._initial_col_order) {\n this.setAttribute(\"columns\", JSON.stringify(this._initial_col_order));\n } else {\n this.removeAttribute(\"columns\");\n }\n }\n show = (this._initial_col_order || []).slice();\n }\n this._update_column_view(show, true);\n this.dispatchEvent(new Event(\"perspective-config-update\"));\n this._debounce_update();\n }\n\n /* eslint-disable max-len */\n\n /**\n * Sets new computed columns for the viewer.\n *\n * @kind member\n * @type {Array<Object>}\n * @param {Array<Object>} computed-columns An Array of computed column objects,\n * which have three properties: `column`, a column name for the new column,\n * `computed_function_name`, a String representing the computed function to\n * apply, and `inputs`, an Array of String column names to be used as\n * inputs to the computation.\n * @fires PerspectiveViewer#perspective-config-update\n * @example <caption>via Javascript DOM</caption>\n * let elem = document.getElementById('my_viewer');\n * elem.setAttribute('computed-columns', JSON.stringify([{column: \"x+y\", computed_function_name: \"+\", inputs: [\"x\", \"y\"]}]));\n * @example <caption>via HTML</caption>\n * <perspective-viewer computed-columns=\"[{column:'x+y',computed_function_name:'+',inputs:['x','y']}]\"\"></perspective-viewer>\n */\n @array_attribute\n \"computed-columns\"(computed_columns) {\n const resolve = this._set_updating();\n\n (async () => {\n if (this._computed_expression_widget.style.display !== \"none\") {\n this._computed_expression_widget._close_expression_widget();\n }\n if (computed_columns === null || computed_columns === undefined || computed_columns.length === 0) {\n // Remove computed columns from the DOM, and reset the config\n // to exclude all computed columns.\n if (this.hasAttribute(\"computed-columns\")) {\n this.removeAttribute(\"computed-columns\");\n const parsed = this._get_view_parsed_computed_columns();\n this._reset_computed_column_view(parsed);\n this.removeAttribute(\"parsed-computed-columns\");\n resolve();\n return;\n }\n computed_columns = [];\n }\n\n let parsed_computed_columns = [];\n\n for (const column of computed_columns) {\n if (typeof column === \"string\") {\n // Either validated through the UI or here. If a `table`\n // has not been loaded when the parsing happens,\n // the column will be skipped.\n if (this._computed_expression_parser.is_initialized) {\n parsed_computed_columns = parsed_computed_columns.concat(this._computed_expression_parser.parse(column));\n }\n } else {\n parsed_computed_columns.push(column);\n }\n }\n\n // Attempt to validate the parsed computed columns against the Table\n let computed_schema = {};\n\n if (this._table) {\n computed_schema = await this._table.computed_schema(parsed_computed_columns);\n const validated = await this._validate_parsed_computed_columns(parsed_computed_columns, computed_schema);\n if (validated.length !== parsed_computed_columns.length) {\n // Generate a diff error message with the invalid columns\n const diff = [];\n for (let i = 0; i < parsed_computed_columns.length; i++) {\n if (i > validated.length - 1) {\n diff.push(parsed_computed_columns[i]);\n } else {\n if (parsed_computed_columns[i].column !== validated[i].column) {\n diff.push(parsed_computed_columns[i]);\n }\n }\n }\n console.warn(\"Could not apply these computed columns:\", JSON.stringify(diff));\n }\n parsed_computed_columns = validated;\n }\n\n // Need to refresh the UI so that previous computed columns used in\n // pivots, columns, etc. get cleared\n const old_columns = this._get_view_parsed_computed_columns();\n const to_remove = this._diff_computed_column_view(old_columns, parsed_computed_columns);\n this._reset_computed_column_view(to_remove);\n\n // Always store a copy of the parsed computed columns for\n // validation of column names, etc.\n this.setAttribute(\"parsed-computed-columns\", JSON.stringify(parsed_computed_columns));\n\n this._update_computed_column_view(computed_schema);\n this.dispatchEvent(new Event(\"perspective-config-update\"));\n await this._debounce_update();\n resolve();\n })();\n }\n\n /* eslint-enable max-len */\n\n /**\n * The set of column aggregate configurations.\n *\n * @kind member\n * @type {Object}\n * @param {Object} aggregates A dictionary whose keys are column names, and\n * values are valid aggregations. The `aggregates` attribute works as an\n * override; in lieu of a key for a column supplied by the developers, a\n * default will be selected and reflected to the attribute based on the\n * column's type. See {@link perspective/src/js/defaults.js}\n * @fires PerspectiveViewer#perspective-config-update\n * @example <caption>via Javascript DOM</caption>\n * let elem = document.getElementById('my_viewer');\n * elem.setAttribute('aggregates', JSON.stringify({x: \"distinct count\"}));\n * @example <caption>via HTML</caption>\n * <perspective-viewer aggregates='{\"x\": \"distinct count\"}'>\n * </perspective-viewer>\n */\n @json_attribute\n aggregates(show) {\n if (show === null || show === undefined || Object.keys(show).length === 0) {\n if (this.hasAttribute(\"aggregates\")) {\n this.removeAttribute(\"aggregates\");\n }\n show = {};\n }\n\n let lis = this._get_view_dom_columns();\n lis.map(x => {\n let agg = show[x.getAttribute(\"name\")];\n if (agg) {\n x.setAttribute(\"aggregate\", Array.isArray(agg) ? JSON.stringify(agg) : agg);\n }\n });\n this.dispatchEvent(new Event(\"perspective-config-update\"));\n this._debounce_update();\n }\n\n /**\n * The set of column filter configurations.\n *\n * @kind member\n * @type {Array<Array>} filters An Array of filter configs. A filter\n * config is an Array of three elements: * The column name. * The filter\n * operation as a String. See\n * {@link perspective/src/js/config/constants.js} * The filter argument, as\n * a String, float or Array<String> as the filter operation demands.\n * @fires PerspectiveViewer#perspective-config-update\n * @example <caption>via Javascript DOM</caption>\n * let filters = [\n * [\"x\", \"<\", 3],\n * [\"y\", \"contains\", \"abc\"]\n * ];\n * let elem = document.getElementById('my_viewer');\n * elem.setAttribute('filters', JSON.stringify(filters));\n * @example <caption>via HTML</caption>\n * <perspective-viewer filters='[[\"x\", \"<\", 3], [\"y\", \"contains\", \"abc\"]]'>\n * </perspective-viewer>\n */\n @array_attribute\n filters(filters) {\n if (filters === null || filters === undefined || filters.length === 0) {\n if (this.hasAttribute(\"filters\")) {\n this.removeAttribute(\"filters\");\n }\n filters = [];\n }\n if (!this._updating_filter) {\n var inner = this._filters.querySelector(\"ul\");\n this._update_column_list(\n filters,\n inner,\n (filter, computed_names) => {\n const fterms = JSON.stringify({\n operator: filter[1],\n operand: filter[2]\n });\n const name = filter[0];\n let computed = undefined;\n if (computed_names.includes(name)) {\n computed = name;\n }\n return this._new_row(name, undefined, undefined, fterms, undefined, computed);\n },\n (filter, node) =>\n node.getAttribute(\"name\") === filter[0] &&\n node.getAttribute(\"filter\") ===\n JSON.stringify({\n operator: filter[1],\n operand: filter[2]\n })\n );\n }\n this.dispatchEvent(new Event(\"perspective-config-update\"));\n this._debounce_update();\n }\n\n /**\n * Sets the currently selected plugin, via its `name` field, and removes\n * any children the previous plugin may have left behind in the light DOM.\n *\n * @type {String}\n * @fires PerspectiveViewer#perspective-config-update\n */\n set plugin(v) {\n if (v === \"null\" || v === null || v === undefined) {\n this.setAttribute(\"plugin\", this._vis_selector.options[0].value);\n return;\n }\n this.innerHTML = \"\";\n const plugin_names = Object.keys(renderers.getInstance());\n if (this.hasAttribute(\"plugin\")) {\n let plugin = this.getAttribute(\"plugin\");\n if (plugin_names.indexOf(plugin) === -1) {\n const guess_plugin = plugin_names.find(x => x.indexOf(plugin) > -1);\n if (guess_plugin) {\n console.warn(`Unknown plugin \"${plugin}\", using \"${guess_plugin}\"`);\n this.setAttribute(\"plugin\", guess_plugin);\n } else {\n console.error(`Unknown plugin \"${plugin}\"`);\n this.setAttribute(\"plugin\", this._vis_selector.options[0].value);\n }\n } else {\n if (this._vis_selector.value !== plugin) {\n this._vis_selector.value = plugin;\n this._vis_selector_changed();\n }\n this._set_row_styles();\n this._set_column_defaults();\n this.dispatchEvent(new Event(\"perspective-config-update\"));\n }\n } else {\n this.setAttribute(\"plugin\", this._vis_selector.options[0].value);\n }\n }\n\n /**\n * Sets this `perspective.table.view`'s `column_pivots` property.\n *\n * @kind member\n * @type {Array<String>} Array of column names\n * @fires PerspectiveViewer#perspective-config-update\n */\n @array_attribute\n \"column-pivots\"(pivots) {\n if (pivots === null || pivots === undefined || pivots.length === 0) {\n if (this.hasAttribute(\"column-pivots\")) {\n this.removeAttribute(\"column-pivots\");\n }\n pivots = [];\n }\n\n const inner = this._column_pivots.querySelector(\"ul\");\n this._update_column_list(pivots, inner, (pivot, computed_names) => {\n let computed = undefined;\n if (computed_names.includes(pivot)) {\n computed = pivot;\n }\n return this._new_row(pivot, undefined, undefined, undefined, undefined, computed);\n });\n this.dispatchEvent(new Event(\"perspective-config-update\"));\n this._debounce_update();\n }\n\n /**\n * Sets this `perspective.table.view`'s `row_pivots` property.\n *\n * @kind member\n * @type {Array<String>} Array of column names\n * @fires PerspectiveViewer#perspective-config-update\n */\n @array_attribute\n \"row-pivots\"(pivots) {\n if (pivots === null || pivots === undefined || pivots.length === 0) {\n if (this.hasAttribute(\"row-pivots\")) {\n this.removeAttribute(\"row-pivots\");\n }\n pivots = [];\n }\n\n const inner = this._row_pivots.querySelector(\"ul\");\n this._update_column_list(pivots, inner, (pivot, computed_names) => {\n let computed = undefined;\n if (computed_names.includes(pivot)) {\n computed = pivot;\n }\n return this._new_row(pivot, undefined, undefined, undefined, undefined, computed);\n });\n this.dispatchEvent(new Event(\"perspective-config-update\"));\n this._debounce_update();\n }\n\n /**\n * Determines whether this viewer is editable or not (though it is\n * ultimately up to the plugin as to whether editing is implemented).\n *\n * @kind member\n * @type {Boolean} Is this viewer editable?\n * @fires PerspectiveViewer#perspective-config-update\n */\n set editable(x) {\n if (x === \"null\") {\n if (this.hasAttribute(\"editable\")) {\n this.removeAttribute(\"editable\");\n }\n } else {\n this.toggleAttribute(\"editable\", true);\n }\n this._debounce_update({force_update: true});\n this.dispatchEvent(new Event(\"perspective-config-update\"));\n }\n\n /**\n * Determines the render throttling behavior. Can be an integer, for\n * millisecond window to throttle render event; or, if `undefined`,\n * will try to determine the optimal throttle time from this component's\n * render framerate.\n *\n * @kind member\n * @type {Number|String} The throttle rate - milliseconds (integer), or the\n * enum \"adaptive\" for a dynamic throttle based on render time.\n * @example\n * <!-- Only draws at most 1 frame/sec. -->\n * <perspective-viewer throttle=\"1000\"></perspective-viewer>\n */\n set throttle(x) {\n if (x === \"null\") {\n if (this.hasAttribute(\"throttle\")) {\n this.removeAttribute(\"throttle\");\n }\n }\n // Returns the throttle time, but also perform validaiton - we only want\n // the latter here.\n this._calculate_throttle_timeout();\n }\n\n /*\n * Determines whether row selections is enabled on this viewer (though it is\n * ultimately up to the plugin as to whether selectable is implemented).\n *\n * @kind member\n * @type {Boolean} Is this viewer editable?\n * @fires PerspectiveViewer#perspective-config-update\n */\n set selectable(x) {\n if (x === \"null\") {\n if (this.hasAttribute(\"selectable\")) {\n this.removeAttribute(\"selectable\");\n }\n } else {\n this.toggleAttribute(\"selectable\", true);\n }\n this._debounce_update({force_update: true});\n this.dispatchEvent(new Event(\"perspective-config-update\"));\n }\n\n /**\n * This element's `perspective.table` instance.\n *\n * @readonly\n */\n get table() {\n return this._table;\n }\n\n /**\n * This element's `perspective.table.view` instance. The instance itself\n * will change after every `PerspectiveViewer#perspective-config-update`\n * event.\n *\n * @readonly\n */\n get view() {\n return this._view;\n }\n\n /**\n * Load data. If `load` or `update` have already been called on this\n * element, its internal `perspective.table` will also be deleted.\n *\n * @async\n * @param {any} data The data to load, as a `perspective.Table` or\n * `Promise<perspective.Table>`.\n * @returns {Promise<void>} A promise which resolves once the data is loaded\n * and a `perspective.view` has been created.\n * @fires module:perspective_viewer~PerspectiveViewer#perspective-click\n * PerspectiveViewer#perspective-view-update\n * ]);\n * @example <caption>Load perspective.table</caption>\n * const my_viewer = document.getElementById('#my_viewer');\n * const tbl = perspective.table(\"x,y\\n1,a\\n2,b\");\n * my_viewer.load(tbl);\n * @example <caption>Load Promise<perspective.table></caption>\n * const my_viewer = document.getElementById('#my_viewer');\n * const tbl = async () => perspective.table(\"x,y\\n1,a\\n2,b\");\n * my_viewer.load(tbl);\n */\n async load(data) {\n let table;\n if (data instanceof Promise) {\n table = await data;\n } else {\n try {\n data = data.trim();\n } catch (e) {}\n if (data.type === \"table\") {\n table = data;\n } else {\n throw new Error(`Unrecognized input type ${typeof data}. Please use a \\`perspective.Table()\\``);\n }\n }\n if (this.isConnected) {\n await this._load_table(table);\n } else {\n this._table = table;\n }\n }\n\n /**\n * Determine whether to reflow the viewer and redraw.\n *\n */\n @throttlePromise\n async notifyResize(immediate) {\n const resized = await this._check_responsive_layout();\n if (!resized && !document.hidden && this.offsetParent) {\n await this._plugin.resize.call(this, immediate);\n }\n }\n\n /**\n * Duplicate an existing `<perspective-element>`, including data and view\n * settings. The underlying `perspective.table` will be shared between both\n * elements\n *\n * @param {any} widget A `<perspective-viewer>` instance to clone.\n */\n clone(widget) {\n if (this._inner_drop_target) {\n this._inner_drop_target.innerHTML = widget._inner_drop_target.innerHTML;\n }\n\n this._load_table(widget.table);\n this.restore(widget.save());\n }\n\n /**\n * Deletes this element and clears it's internal state (but not its\n * user state). This (or the underlying `perspective.view`'s equivalent\n * method) must be called in order for its memory to be reclaimed, as well\n * as the recipcorcal method on the `perspective.table` which this viewer is\n * bound to.\n *\n * @returns {Promise<Boolean>} Whether or not this call resulted in the\n * underlying `perspective.table` actually being deleted.\n */\n delete() {\n let x = this._clear_state();\n if (this._plugin.delete) {\n this._plugin.delete.call(this);\n }\n window.removeEventListener(\"resize\", this._resize_handler);\n return x;\n }\n\n /**\n * Restyles the elements and to pick up any style changes\n */\n restyleElement() {\n this._restyle_plugin();\n }\n\n /**\n * Serialize this element's attribute/interaction state.\n *\n * @returns {object} a serialized element.\n */\n save() {\n let obj = {};\n const cols = new Set(PERSISTENT_ATTRIBUTES);\n for (let key = 0; key < this.attributes.length; key++) {\n let attr = this.attributes[key];\n if (cols.has(attr.name)) {\n if (attr.value === \"\") {\n obj[attr.name] = true;\n } else if (attr.name !== \"plugin\" && attr.value !== undefined && attr.value !== null) {\n obj[attr.name] = JSON.parse(attr.value);\n } else {\n obj[attr.name] = attr.value;\n }\n cols.delete(attr.name);\n }\n }\n for (const col of cols) {\n obj[col] = null;\n }\n if (this._plugin.save) {\n obj.plugin_config = this._plugin.save.call(this);\n }\n return obj;\n }\n\n /**\n * Restore this element to a state as generated by a reciprocal call to\n * `save` or `serialize`.\n *\n * @param {Object|String} config returned by `save` or `serialize`.\n * @returns {Promise<void>} A promise which resolves when the changes have\n * been applied.\n */\n async restore(config) {\n if (typeof config === \"string\") {\n config = JSON.parse(config);\n }\n for (const key of PERSISTENT_ATTRIBUTES) {\n if (config.hasOwnProperty(key)) {\n let val = config[key];\n if (val === true) {\n this.toggleAttribute(key, true);\n } else if (val !== undefined && val !== null && val !== false) {\n if (typeof val !== \"string\") {\n val = JSON.stringify(val);\n }\n this.setAttribute(key, val);\n } else {\n this.removeAttribute(key);\n }\n }\n }\n\n if (this._plugin.restore && config.plugin_config) {\n this._plugin.restore.call(this, config.plugin_config);\n }\n await this._debounce_update();\n }\n\n /**\n * Flush any pending attribute modifications to this element.\n *\n * @returns {Promise<void>} A promise which resolves when the current\n * attribute state has been applied.\n */\n async flush() {\n await new Promise(setTimeout);\n while (this.hasAttribute(\"updating\")) {\n await this._updating_promise;\n }\n }\n\n /**\n * Reset's this element's view state and attributes to default. Does not\n * delete this element's `perspective.table` or otherwise modify the data\n * state.\n */\n reset() {\n this.removeAttribute(\"row-pivots\");\n this.removeAttribute(\"column-pivots\");\n this.removeAttribute(\"filters\");\n this.removeAttribute(\"sort\");\n if (this._initial_col_order) {\n this.setAttribute(\"columns\", JSON.stringify(this._initial_col_order));\n } else {\n this.removeAttribute(\"columns\");\n }\n this.setAttribute(\"plugin\", Object.keys(renderers.getInstance())[0]);\n this.dispatchEvent(new Event(\"perspective-config-update\"));\n this._hide_context_menu();\n }\n\n /**\n * Download this element's data as a CSV file.\n *\n * @param {Boolean} [flat=false] Whether to use the element's current view\n * config, or to use a default \"flat\" view.\n * @memberof PerspectiveViewer\n */\n async download(flat = false) {\n const view = flat ? this._table.view() : this._view;\n const csv = await view.to_csv({formatted: true});\n const element = document.createElement(\"a\");\n const binStr = csv;\n const len = binStr.length;\n const arr = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n arr[i] = binStr.charCodeAt(i);\n }\n const blob = new Blob([arr]);\n element.setAttribute(\"href\", window.URL.createObjectURL(blob));\n element.setAttribute(\"download\", \"perspective.csv\");\n element.style.display = \"none\";\n document.body.appendChild(element);\n element.click();\n document.body.removeChild(element);\n this._hide_context_menu();\n }\n\n /**\n * Copies this element's view data (as a CSV) to the clipboard. This method\n * must be called from an event handler, subject to the browser's\n * restrictions on clipboard access. See\n * {@link https://www.w3.org/TR/clipboard-apis/#allow-read-clipboard}.\n */\n copy(flat = false) {\n let data;\n const view = flat ? this._table.view() : this._view;\n view.to_csv({formatted: true})\n .then(csv => {\n data = csv;\n })\n .catch(err => {\n console.error(err);\n data = \"\";\n });\n let count = 0;\n let f = () => {\n if (typeof data !== \"undefined\") {\n copy_to_clipboard(data);\n } else if (count < 200) {\n count++;\n setTimeout(f, 50);\n } else {\n console.warn(\"Timeout expired - copy to clipboard cancelled.\");\n }\n };\n f();\n this._hide_context_menu();\n }\n\n /**\n * Opens/closes the element's config menu.\n *\n * @async\n */\n async toggleConfig() {\n await this._toggle_config();\n }\n\n /**\n * Returns a promise that resolves to the element's edit port ID, used\n * internally when edits are made using DataGrid.\n *\n * @async\n */\n async getEditPort() {\n return this._edit_port_lock;\n }\n}\n\n/**\n * `perspective-click` is fired whenever underlying `view`'s grid or chart are\n * clicked providing a detail that includes a `config`, `column_names` and\n * `row`.\n *\n * @event module:perspective_viewer~PerspectiveViewer#perspective-click\n * @type {object}\n * @property {Array} column_names - Includes a list of column names.\n * @property {object} config - Contains a property `filters` that can be applied\n * to a `<perspective-viewer>` through the use of `restore()` updating it to\n * show the filtered subset of data..\n * @property {Array} row - Includes the data row.\n */\n\n/**\n * `perspective-config-update` is fired whenever an configuration attribute has\n * been modified, by the user or otherwise.\n *\n * @event module:perspective_viewer~PerspectiveViewer#perspective-config-update\n * @type {String}\n */\n\n/**\n * `perspective-view-update` is fired whenever underlying `view`'s data has\n * updated, including every invocation of `load` and `update`.\n *\n * @event module:perspective_viewer~PerspectiveViewer#perspective-view-update\n * @type {String}\n */\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nconst DEFAULT_CONFIG = require(\"./settings.js\").default;\n\nmodule.exports.get_types = function() {\n return Object.keys(module.exports.get_config().types);\n};\n\nmodule.exports.get_type_config = function(type) {\n const config = {};\n if (module.exports.get_config().types[type]) {\n Object.assign(config, module.exports.get_config().types[type]);\n }\n if (config.type) {\n const props = module.exports.get_type_config(config.type);\n Object.assign(props, config);\n return props;\n } else {\n return config;\n }\n};\n\nfunction isObject(item) {\n return item && typeof item === \"object\" && !Array.isArray(item);\n}\n\nfunction mergeDeep(target, ...sources) {\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, {[key]: {}});\n mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, {[key]: source[key]});\n }\n }\n }\n\n return mergeDeep(target, ...sources);\n}\n\nglobal.__PERSPECTIVE_CONFIG__ = undefined;\n\nmodule.exports.override_config = function(config) {\n if (global.__PERSPECTIVE_CONFIG__) {\n console.warn(\"Config already initialized!\");\n }\n global.__PERSPECTIVE_CONFIG__ = mergeDeep(DEFAULT_CONFIG, config);\n};\n\nmodule.exports.get_config = function get_config() {\n if (!global.__PERSPECTIVE_CONFIG__) {\n global.__PERSPECTIVE_CONFIG__ = mergeDeep(DEFAULT_CONFIG, global.__TEMPLATE_CONFIG__ || {});\n }\n return global.__PERSPECTIVE_CONFIG__;\n};\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\n/**\n * The default settings which populate `perspective.config.js`.\n */\nmodule.exports.default = {\n /**\n * `types` are the type-specific configuration options. Each key is the\n * name of a perspective type; their values are configuration objects for\n * that type.\n */\n types: {\n float: {\n /**\n * Which filter operator should be the default when a column of this\n * type is pivotted.\n */\n filter_operator: \"==\",\n\n /**\n * Which aggregate should be the default when a column of this type\n * is pivotted.\n */\n aggregate: \"sum\",\n\n /**\n * The format object for this type. Can be either an\n * `toLocaleString()` `options` object for this type (or supertype),\n * or a function which returns the formatted string for this type.\n */\n format: {\n style: \"decimal\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n }\n },\n string: {\n filter_operator: \"==\",\n aggregate: \"count\"\n },\n integer: {\n filter_operator: \"==\",\n aggregate: \"sum\",\n format: {}\n },\n boolean: {\n filter_operator: \"==\",\n aggregate: \"count\"\n },\n datetime: {\n filter_operator: \"==\",\n aggregate: \"count\",\n format: {\n week: \"numeric\",\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n second: \"numeric\"\n },\n null_value: -1\n },\n date: {\n filter_operator: \"==\",\n aggregate: \"count\",\n format: {\n week: \"numeric\",\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\"\n },\n null_value: -1\n }\n }\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(2489);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};"],"sourceRoot":""}
\No newline at end of file