{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/spinner/spinner.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-selection.js","webpack:///./node_modules/bootstrap-vue/esm/icons/icon.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/td.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/thead.js","webpack:///./src/views/pages/home/projectdetail.vue?5fe0","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-options.js","webpack:///./src/@core/components/b-card-code/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-validity.js","webpack:///./src/@core/components/toastification/ToastificationContent.vue?fb63","webpack:///src/@core/components/toastification/ToastificationContent.vue","webpack:///./src/@core/components/toastification/ToastificationContent.vue?d65c","webpack:///./src/@core/components/toastification/ToastificationContent.vue","webpack:///./node_modules/bootstrap-vue/esm/directives/tooltip/tooltip.js","webpack:///./node_modules/bootstrap-vue/esm/components/pagination/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-empty.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stringify-object-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/sanitize-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-record-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-filtering.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-provider.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-selectable.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-sorting.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tr.js","webpack:///./node_modules/bootstrap-vue/esm/components/list-group/list-group.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/has-listener.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-prepend.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-caption.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-addon.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-input/form-input.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-stacked.js","webpack:///./node_modules/v-clipboard/dist/index.min.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/bootstrap-vue/esm/components/nav/nav.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/normalize-fields.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-items.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/alert/alert.js","webpack:///./node_modules/bootstrap-vue/esm/components/tabs/tab.js","webpack:///./node_modules/bootstrap-vue/esm/directives/visible/visible.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/th.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-table-renderer.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/constants.js","webpack:///./node_modules/vee-validate/dist/vee-validate.esm.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/model.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/helpers/mixin-options.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select-option-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-tooltip.js","webpack:///./node_modules/vee-validate/dist/rules.js","webpack:///./src/@core/utils/validations/validators.js","webpack:///./src/@core/utils/validations/validations.js","webpack:///./node_modules/quill/dist/quill.js","webpack:///./node_modules/vue-quill-editor/dist/vue-quill-editor.js","webpack:///./src/@core/components/toastification/ToastificationContent.vue?923e","webpack:///./node_modules/bootstrap-vue/esm/components/overlay/overlay.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-textarea/form-textarea.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-radio/form-radio.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb-link.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb-item.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tbody.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/pagination.js","webpack:///./src/views/pages/home/projectdetail.vue?75bb","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-custom.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-size.js","webpack:///./node_modules/downloadjs/download.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/filter-event.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-thead.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-checkbox/form-checkbox.js","webpack:///./node_modules/bootstrap-vue/esm/utils/loose-index-of.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-file/form-file.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-append.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/text-selection-active.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/list-group/list-group-item.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-radio-check.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-colgroup.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-text.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-control.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-popper.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-tooltip-template.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb.js","webpack:///./node_modules/bootstrap-vue/esm/components/avatar/avatar.js","webpack:///./node_modules/bootstrap-vue/esm/components/badge/badge.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select-option.js","webpack:///./src/views/pages/home/projectdetail.vue?4d22","webpack:///./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///src/views/pages/home/projectdetail.vue","webpack:///./src/views/pages/home/projectdetail.vue?18c3","webpack:///./src/views/pages/home/projectdetail.vue","webpack:///./node_modules/bootstrap-vue/esm/utils/noop.js","webpack:///./node_modules/vue-good-table/dist/vue-good-table.esm.js","webpack:///./node_modules/bootstrap-vue/esm/components/tabs/tabs.js"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","props","label","role","small","tag","type","variant","BSpinner","extend","name","functional","render","h","_ref","_class","data","slots","scopedSlots","$slots","$scopedSlots","$label","staticClass","attrs","class","concat","formSelectionMixin","computed","selectionStart","cache","get","this","$refs","input","set","val","selectionEnd","selectionDirection","methods","select","_this$$refs$input","apply","arguments","setSelectionRange","_this$$refs$input2","setRangeText","_this$$refs$input3","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","_objectSpread","target","i","length","source","forEach","getOwnPropertyDescriptors","defineProperties","findIconComponent","ctx","iconName","components","$options","iconComponent","$parent","icon","stacked","BIcon","parent","replace","parseSpan","spanValidator","colspan","rowspan","stackedHeading","stickyColumn","BTd","mixins","inject","bvTableTr","default","inheritAttrs","inTbody","inThead","inTfoot","isDark","isStacked","isStackedCell","isResponsive","isStickyHeader","hasStickyHeader","isStickyColumn","rowVariant","headVariant","footVariant","tableVariant","computedColspan","computedRowspan","cellClasses","cellAttrs","headOrFoot","scope","bvAttrs","$content","normalizeSlot","on","bvListeners","BThead","provide","bvTableRowGroup","bvTable","isThead","dark","stickyHeader","theadClasses","theadAttrs","OPTIONS_OBJECT_DEPRECATED_MSG","disabledField","htmlField","options","textField","valueField","formOptionsMixin","formOptions","normalizeOptions","normalizeOption","option","undefined","text","String","html","disabled","Boolean","_this","map","BCardCode","id","inline","novalidate","validated","BForm","children","formValidityMixin","validity","validationMessage","willValidate","setCustomValidity","checkValidity","reportValidity","_vm","_h","$createElement","_c","_self","domProps","_s","title","_e","$event","$emit","hideClose","staticRenderFns","component","BV_TOOLTIP","DefaultTrigger","validTriggers","focus","hover","click","blur","manual","htmlRE","noninteractiveRE","noFadeRE","placementRE","boundaryRE","delayRE","delayShowRE","delayHideRE","offsetRE","variantRE","spacesRE","parseBindings","bindings","vnode","config","trigger","placement","fallbackPlacement","container","animation","offset","interactive","delay","boundary","boundaryPadding","customClass","show","hide","arg","modifiers","mod","test","slice","selectedTriggers","join","trim","toLowerCase","split","applyTooltip","el","context","_scopeId","__bv_prev_data__","$on","updateData","triggers","noFade","oldData","newData","prop","removeTooltip","$destroy","VBTooltip","bind","componentUpdated","$nextTick","unbind","DEFAULT_PER_PAGE","DEFAULT_TOTAL_ROWS","sanitizePerPage","sanitizeTotalRows","ariaControls","perPage","totalRows","BPagination","numberOfPages","result","pageSizeNumberOfPages","watch","newValue","oldValue","currentPage","localNumberOfPages","created","onClick","event","pageNumber","_this2","clickEvt","cancelable","vueTarget","defaultPrevented","$el","contains","focusCurrent","makePage","pageNum","linkProps","BTfoot","isTfoot","tfootClasses","tfootAttrs","bottomRowMixin","renderBottomRow","fields","computedFields","tbodyTrClass","tbodyTrAttr","hasNormalizedSlot","columns","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","localBusy","computedBusy","stopIfBusy","renderBusy","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","items","computedItems","$empty","isFiltered","stringifyObjectValues","sort","k","v","row","ignoreFields","includeFields","fieldsObj","formattedRow","reduce","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","prototype","toString","call","constructor","Array","from","iter","Symbol","iterator","isArray","len","arr2","DEBOUNCE_DEPRECATED_MSG","filterDebounce","filterFunction","filterIgnoredFields","filterIncludedFields","filteringMixin","localFilter","filterSanitize","computedFilterIgnored","identity","computedFilterIncluded","computedFilterDebounce","ms","warn","localFiltering","hasProvider","noProviderFiltering","filteredCheck","filteredItems","localItems","localFilterFn","criteria","filterFn","filterFnFactory","defaultFilterFnFactory","$_filterTimer","clearFilterTimer","deep","handler","newCriteria","timeout","setTimeout","beforeDestroy","clearTimeout","fn","item","_this3","regExp","pattern","RegExp","lastIndex","computedFieldsObj","paginationMixin","localPaging","noProviderPaging","paginatedItems","sortedItems","math","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","apiUrl","noProviderSorting","providerMixin","providerTriggerContext","sortBy","sortDesc","localSortBy","localSortDesc","_providerUpdate","mounted","listenOnRoot","refresh","$off","clearSelected","_providerSetLocal","emitOnRoot","then","e","message","_props","_watch","SELECT_MODES","noSelectOnClick","selectMode","selectable","selectedVariant","selectableMixin","selectedRows","selectedLastRow","isSelectable","hasSelectableRowClick","supportsSelectableRows","selectableHasSelection","some","selectableIsMultiSelect","selectableTableClasses","selectableTableAttrs","equal","setSelectionHandlers","_selectedRows","idx","beforeMount","selectRow","index","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","selectableRowAttrs","method","selectionHandler","selected","shiftKey","ctrlKey","metaKey","a","b","_ref$sortBy","_ref$formatter","_ref$locale","locale","_ref$localeOptions","localeOptions","_ref$nullLast","nullLast","aa","bb","localeCompare","MODEL_PROP_NAME_SORT_BY","MODEL_EVENT_NAME_SORT_BY","MODEL_PROP_NAME_SORT_DESC","MODEL_EVENT_NAME_SORT_DESC","SORT_DIRECTION_ASC","SORT_DIRECTION_DESC","SORT_DIRECTION_LAST","SORT_DIRECTIONS","labelSortAsc","labelSortClear","labelSortDesc","noFooterSorting","noLocalSorting","noSortReset","numeric","sortingMixin","localSorting","isSortable","f","sortable","sortCompareLocale","sortNullLast","sortCompare","sortCompareOptions","usage","sortByFormatted","getFieldFormatter","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","ariaSort","sortTheadThLabel","labelSorting","topRowMixin","renderTopRow","BTable","LIGHT","DARK","BTr","isTbody","isRowDark","trClasses","trAttrs","flush","horizontal","BListGroup","componentData","hasListenerMixin","hasListener","$listeners","$events","_events","BInputGroupPrepend","append","detailsTdClass","tbodyRowMixin","getTdValues","tdValue","defaultValue","getThValues","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","$set","rowHovered","tbodyRowEvtStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","colIndex","rowIndex","isRowHeader","formatted","cellTag","cellVariant","tdClass","thAttr","tdAttr","slotScope","unformatted","toggleDetails","detailsShowing","rowSelected","slotName","$_bodyFieldSlotNameCache","$childNodes","renderTbodyRow","striped","primaryKey","rowShowDetails","hasRowClickHandler","$rows","detailsId","safeId","$tds","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableAttrs","userTrClasses","userTrAttrs","tabindex","mouseenter","mouseleave","ref","refInFor","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","getTbodyTrs","tbody","trs","tr","getTbodyTrIndex","tagName","indexOf","onTbodyRowKeydown","keyCode","tabIndex","onTBodyRowClicked","shift","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTbody","$busy","defaultSlotName","lowercaseSlotName","handlers","auxclick","contextmenu","dblclick","keydown","$tbody","$props","caption","captionHtml","captionMixin","captionId","renderCaption","$caption","hasCaptionSlot","_makeModelMixin","modelMixin","mixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","ariaInvalid","autocomplete","debounce","lazy","lazyFormatter","number","placeholder","plaintext","readonly","formTextMixin","localValue","vModelValue","modifyValue","computedClass","isRange","isColor","sizeFormClass","stateClass","computedDebounce","hasFormatter","stringifyValue","modifiedValue","clearDebounce","$_inputDebounceTimer","formatValue","force","updateValue","doUpdate","$input","onInput","composing","formattedValue","propagation","onChange","onBlur","isText","BInputGroupAddon","TYPES","list","max","min","noWheel","step","BFormInput","localType","computedAttrs","form","required","computedAriaInvalid","computedListeners","change","setWheelStopper","deactivated","activated","onWheelFocus","onWheelBlur","document","stopWheel","stackedMixin","isStackedAlways","stackedTableClasses","t","module","exports","r","l","m","c","d","__esModule","hasOwnProperty","p","s","JSON","stringify","createElement","setAttribute","style","cssText","body","appendChild","navigator","userAgent","match","contentEditable","readOnly","createRange","selectNodeContents","window","getSelection","removeAllRanges","addRange","execCommand","console","removeChild","install","$clipboard","directive","dataset","clipboardErrorHandler","clipboardSuccessHandler","u","clipboardClickHandler","addEventListener","removeEventListener","DESCRIPTORS","global","isForced","inheritIfRequired","getOwnPropertyNames","isRegExp","getFlags","stickyHelpers","redefine","fails","setInternalState","setSpecies","wellKnownSymbol","MATCH","NativeRegExp","RegExpPrototype","re1","re2","CORRECT_NEW","UNSUPPORTED_Y","FORCED","RegExpWrapper","flags","sticky","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","it","computeJustifyContent","align","cardHeader","fill","justified","pills","tabs","vertical","BNav","origFields","sample","memo","itemsMixin","appendHtml","prepend","prependHtml","size","BInputGroup","$prepend","hasPrependSlot","$append","hasAppendSlot","parseCountDown","parseShow","dismissLabel","dismissible","fade","BAlert","countDown","localShow","clearCountDownInterval","$_countDownTimeout","dismiss","$alert","$dismissButton","_objectSpread2","MODEL_PROP_NAME_ACTIVE","MODEL_EVENT_NAME_ACTIVE","BTab","bvTabs","localActive","_isTab","tabClasses","active","card","noBody","activeTabClass","controlledBy","buttonId","computedNoFade","computedLazy","activate","deactivate","firstTab","registerTab","updated","updateButton","unregisterTab","activateTab","deactivateTab","directives","mode","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","OBSERVER_PROP_NAME","VisibilityObserver","callback","margin","once","observer","visible","doneOnce","createObserver","stop","IntersectionObserver","root","rootMargin","threshold","_unused","observe","entries","entry","isIntersecting","intersectionRatio","disconnect","destroy","_prevModifiers","_ref2","VBVisible","BTh","extends","bordered","borderless","captionTop","fixed","noBorderCollapse","outlined","responsive","tableClass","tableRendererMixin","wrapperClasses","wrapperStyles","maxHeight","tableClasses","isTableSimple","border","tableAttrs","adb","ariaAttrs","rowCount","renderColgroup","renderThead","renderTfoot","$table","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","__assign","assign","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","Promise","reject","fulfilled","next","rejected","done","__generator","y","g","_","sent","trys","ops","verb","op","pop","__spreadArrays","il","j","jl","isNaN","isNullOrUndefined","isEmptyArray","isObject","isRefEqual","lhs","rhs","isEqual","every","isSpecified","isCallable","isLocator","__locatorRef","findIndex","arrayLike","predicate","toArray","find","includes","collection","_copyArray","values","merge","createFlags","untouched","touched","dirty","pristine","valid","invalid","pending","changed","passed","failed","wait","token","cancelled","args","_i","later","interpolate","template","RULES","normalizeSchema","schema","_a","params","param","RuleContainer","rule","computesRequired","isLazy","isRequireRule","getRuleDefinition","ruleName","guardExtend","validate","validator","Error","DEFAULT_CONFIG","defaultMessage","skipOptional","classes","bails","useConstraintAttrs","currentConfig","getConfig","setConfig","newConf","normalizeRules","rules","acc","_$$isNormalized","prev","curr","buildParams","parsedRule","parseRule","provided","ruleSchema","definedParams","lastDefinedParam_1","isTarget","createLocator","cast","castFn","locator","crossTable","extractLocators","shouldBail","skipIfEmpty","errors","failedRules","regenerateMap","forceRequired","names","customMessages","_validate","msg","_b","isInitial","shouldSkip","_d","_shouldSkip","_test","error","requireRules","isEmpty","isEmptyAndOptional","isRequired","normalizedValue","values_1","castValue","fillTargetValues","_field_","_value_","_rule_","_generateFieldError","ruleTargets","_getRuleTargets","_getUserTargets","userTargets","userMessage","_normalizeMessage","numTargets","ruleConfig","name_1","targetPart","normalize","aggressive","eager","passive","modes","EVENT_BUS","localeChanged","DICTIONARY","Dictionary","dictionary","format","_f","_g","fieldContainer","messageContainer","messages","hasRule","localize","isEvent","evt","Event","srcElement","normalizeEventValue","files","_vModifiers","valueAsNumber","parseFloat","trimmedValue","isTextInput","elm","findModel","nonStandardVNodeData","model","findValue","findModelConfig","componentOptions","propsData","propsDataWithValue","extractChildren","findInputNodes","nodes","node","candidates","Ctor","mergeVNodeListeners","eventName","fns","invoker","addNativeNodeListener","addComponentNodeListener","listeners","addVNodeListener","getInputEventName","event_1","isHTMLNode","resolveTextualRules","email","regex","maxlength","minlength","min_value","Number","max_value","resolveRules","htmlTags","normalizeChildren","slotProps","shouldValidate","_ignoreImmediate","immediate","normalizedEvents","_needsValidation","initialized","createValidationCtx","reset","ariaInput","ariaMsg","onRenderUpdate","vm","initialValue","validateNow","triggerThreadSafeValidation","validateSilent","$once","computeModeSetting","compute","pendingPromise","_pendingValidation","applyResult","createCommonHandlers","$veeOnInput","syncValue","setFlags","$veeOnBlur","onValidate","$veeHandler","$veeDebounce","_pendingReset","addListeners","_inputEventName","PROVIDER_COUNTER","fieldName","defaultValues","isActive","ValidationProvider","$_veeObserver","$vnode","vid","Function","slim","detectInput","oldVal","fieldDeps","normalizedRules","deps","dep","depName","watchCrossFieldDep","_resolvedRules","computeClassObj","onLocaleChanged","_regenerateMap","errors_1","failedRules_1","registerField","inputs","resolved","unobserve","flag","createLookup","setErrors","updateRenderingContextRefs","_loop_1","className","cls","providers","refs","reduced","extractId","providedId","withHooks","_veeWatchers","$watch","FLAGS_STRATEGIES","OBSERVER_COUNTER","data$1","createObserverFlags","observers","provideSelf","ValidationObserver","register","computeObserverState","unregister","prepareSlotProps","subscriber","kind","splice","provider","$delete","validateWithInfo","silent","results","isValid","all","obs","handleSubmit","cb","errorArr","passes","vms","labelField","optionsField","optionsMixin","BFormSelectOptionGroup","multiple","selectSize","BFormSelect","computedSelectSize","plain","inputClass","selectedValue","_value","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","renderTFootCustom","stableSort","compareFn","MODAL_SELECTOR","ROOT_EVENT_NAME_MODAL_HIDDEN","SIDEBAR_SELECTOR","CONTAINER_SELECTOR","DROPDOWN_CLASS","DROPDOWN_OPEN_SELECTOR","DATA_TITLE_ATTR","templateData","content","arrowPadding","BVTooltip","activeTrigger","templateType","computedId","computedDelay","computedTriggers","isWithActiveTrigger","computedTemplateData","newTriggers","oldTriggers","unListen","listen","handleTemplateUpdate","disable","enable","$_tip","$_hoverTimeout","$_hoverState","$_visibleInterval","$_enabled","$_noop","getTarget","scopeId","forceHide","setWhileOpenListeners","clearHoverTimeout","clearVisibilityInterval","destroyTemplate","getTemplate","titleUpdated","fixTitle","createTemplateAndShow","getContainer","Template","$tip","getPlacementTarget","getBoundary","onTemplateShow","onTemplateShown","onTemplateHide","onTemplateHidden","handleEvent","$mount","hideTemplate","clearActiveTriggers","localPlacementTarget","removeAriaDescribedby","restoreTitle","getTemplateElement","_this4","dropdownOpen","showEvt","buildEvent","emitEvent","addAriaDescribedby","tip","hideEvt","prevHoverState","leave","getTargetId","isInModal","isDropdown","clearInterval","desc","_this5","relatedTarget","componentId","bvEvent","_this6","setRootListener","_this7","events","$root","doHide","doShow","doDisable","doEnable","setModalListener","setDropdownListener","visibleCheck","setOnTouchStartListener","_this8","setInterval","parentNode","_this9","documentElement","__vue__","enter","eventTarget","currentTarget","toggle","_this10","_this11","alpha","en","cs","da","de","es","fa","fr","lt","nl","hu","pl","pt","ro","ru","sk","sr","sv","uk","ar","az","alphanumeric","alphaDash","loc","alpha$1","validate$1","params$1","alpha_dash","validate$2","params$2","alpha_num","validate$4","params$4","between","validate$5","params$5","confirmed","validate$6","strVal","params$6","digits","validate$8","re","emailStr","params$8","validate$d","integer","validate$g","params$b","validate$k","params$e","validate$n","params$g","validate$o","allowFalse","params$h","validatorPositive","validatorPassword","password","validPassword","validatorCreditCard","creditnum","cRegExp","validCreditCard","validatorUrlValidator","rule_required","rule_email","rule_min","rule_confirmed","rule_regex","rule_between","rule_alpha","rule_integer","rule_digits","rule_alpha_dash","alphaNum","rule_alpha_num","rule_length","url","factory","self","modules","installedModules","__webpack_require__","moduleId","getter","property","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","Scope","create","query","Container","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","__extends","extendStatics","setPrototypeOf","__proto__","__","ParchmentError","_super","attributes","tags","types","BlotClass","Node","TEXT_NODE","bubble","DATA_KEY","blot","ANY","LEVEL","BLOCK","INLINE","HTMLElement","getAttribute","TYPE","Definitions","Definition","blotName","attrName","keyName","toUpperCase","tagNames","diff","NULL_CHARACTER","fromCharCode","Delta","insert","newOp","retain","lastOp","unshift","chop","partition","initial","changeLength","elem","delete","start","end","Infinity","hasNext","nextOp","compose","other","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","delta","Math","thisOp","otherOp","rest","strings","prep","diffResult","opLength","INSERT","DELETE","EQUAL","eachLine","newline","line","transform","priority","transformPosition","nextType","hasOwn","toStr","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","src","copy","copyIsArray","clone","BlockEmbed","bubbleFormats","_get","receiver","getPrototypeOf","_extend","_extend2","_interopRequireDefault","_quillDelta","_quillDelta2","_parchment","_parchment2","_break","_break2","_inline","_inline2","_text","_text2","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","NEWLINE_LENGTH","_Parchment$Embed","domNode","formats","attribute","BLOCK_ATTRIBUTE","def","endsWith","block","insertBefore","insertAt","BLOCK_BLOT","_Parchment$Block","descendants","leaf","lines","tail","head","remove","child","statics","defaultChild","allowedChildren","overload","expandConfig","_typeof","_slicedToArray","sliceIterator","_arr","_n","err","_editor","_editor2","_emitter3","_emitter4","_module","_module2","_selection","_selection2","_logger","_logger2","_theme","_theme2","debug","Quill","innerHTML","classList","add","__quill","addContainer","scrollingContainer","emitter","scroll","whitelist","editor","selection","theme","keyboard","addModule","clipboard","history","init","EDITOR_CHANGE","TEXT_CHANGE","isBlank","SCROLL_UPDATE","mutations","range","lastRange","modify","update","contents","convert","setContents","clear","limit","level","imports","path","overwrite","startsWith","refNode","setRange","_overload","_overload2","deleteText","enabled","scrollTop","scrollIntoView","sources","API","formatLine","formatText","setSelection","SILENT","_overload3","_overload4","_overload5","_overload6","bounds","getBounds","containerBounds","getBoundingClientRect","bottom","top","height","left","right","width","getLength","_overload7","_overload8","getContents","getFormat","MAX_VALUE","getRange","_overload9","_overload10","getText","hasFocus","embed","insertEmbed","_overload11","_overload12","insertText","off","dangerouslyPasteHTML","_overload13","_overload14","removeFormat","deleted","applied","applyDelta","ret","_overload15","_overload16","Range","USER","userConfig","DEFAULTS","import","themeConfig","moduleNames","moduleConfig","moduleClass","toolbar","querySelector","modifier","strict","isEnabled","oldDelta","shiftRange","_emitter","_emitter2","emit","_map","pos","_map2","_map3","_map4","version","_Parchment$Inline","compare","BLOT","isolate","wrap","moveChildren","selfIndex","order","otherIndex","TextBlot","_Parchment$Text","_eventemitter","_eventemitter2","EVENTS","_len","_key","querySelectorAll","_node$__quill$emitter","handleDOM","Emitter","_EventEmitter","log","_len2","_key2","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","Module","quill","levels","_console","namespace","ns","logger","newLevel","pSlice","objectKeys","isArguments","deepEqual","actual","expected","opts","Date","getTime","objEquiv","isUndefinedOrNull","isBuffer","x","ka","kb","attributeBit","ATTRIBUTE","canAdd","removeAttribute","Code","_block","_block2","_Inline","CodeBlock","_Block","textContent","frag","_descendant","descendant","_descendant2","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","reverse","lastIndexOf","optimize","unwrap","TAB","_op","_op2","_code","_code2","_cursor","_cursor2","_clone","_clone2","_deepEqual","_deepEqual2","ASCII","Editor","getDelta","consumeNextNewline","scrollLength","batchStart","normalizeDelta","_scroll$line","_scroll$line2","_line$descendant","_line$descendant2","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","leaves","_path","formatsArr","blots","combineFormats","_scroll$line3","_scroll$line4","suffixLength","suffix","cursorIndex","textBlot","CONTENTS","oldText","newText","diffDelta","combined","merged","image","bullet","Selection","mouseDown","cursor","savedRange","handleComposition","handleDragging","listenDOM","native","getNativeRange","textNode","setNativeRange","ignored","_context$range","startNode","startOffset","endNode","endOffset","restore","_format","nativeRange","collapsed","after","attach","_scroll$leaf","_scroll$leaf2","_leaf$position","position","_leaf$position2","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rect","rangeCount","getRangeAt","normalizeNative","info","normalized","normalizedToRange","activeElement","positions","indexes","_position","startContainer","endContainer","childNodes","lastChild","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","first","last","scrollBounds","rangeToNative","oldRange","_getRange","_getRange2","Break","linked_list_1","shadow_1","ContainerBlot","build","makeBlot","forEachAt","lengthLeft","detach","childBlot","refBlot","insertInto","targetParent","inclusive","addedNodes","removedNodes","mutation","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","nextSibling","replaceChild","FormatBlot","replaceWith","replacement","wrapper","move","LeafBlot","INLINE_BLOT","lib","keepNull","Iterator","retOp","substr","_instanceof","nativeMap","nativeSet","nativePromise","Map","Set","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","proto","__isArray","__isRegExp","__getRegExpFlags","__isDate","allocUnsafe","keyChild","valueChild","entryChild","symbol","allPropertyNames","propertyName","__objToStr","ignoreCase","multiline","clonePrototype","_container","_container2","isLine","_Parchment$Scroll","batch","_line","_line2","_line3","_line4","_newlineIndex","getLines","takeRecords","SHORTKEY","_quill","_quill2","platform","Keyboard","_Module","addBinding","ENTER","handleEnter","altKey","BACKSPACE","handleBackspace","handleDelete","prefix","handleDeleteRange","binding","_quill$getLine","getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","prevented","preventDefault","makeEmbedArrowHandler","_ref3","where","LEFT","RIGHT","_quill$getLeaf3","_quill$getLeaf4","_quill$getLine11","_quill$getLine12","_quill$getLine13","_quill$getLine14","curFormats","prevFormats","nextLength","_quill$getLine15","_quill$getLine16","_quill$getLine17","_quill$getLine18","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","indent","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","charCodeAt","ESCAPE","UP","DOWN","cutoff","updateContents","_quill$getLine3","_quill$getLine4","_quill$getLine5","_quill$getLine6","header","_quill$getLine7","_quill$getLine8","_quill$getLine9","_quill$getLine10","Cursor","createTextNode","_length","restoreText","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","parseInt","sanitize","Link","_sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","anchor","href","protocol","_keyboard","_keyboard2","_dropdown","_dropdown2","optionsCounter","toggleAriaAttribute","element","Picker","buildPicker","display","togglePicker","escape","hasAttribute","selectItem","buildItem","buildLabel","buildOptions","close","selectedIndex","dispatchEvent","createEvent","initEvent","_embed","_embed2","_scroll","_scroll2","_clipboard","_clipboard2","_history","_history2","ShadowBlot","cloneNode","parentBlot","refDomNode","AttributorStore","styles","attr","ClassAttributor","matches","camelize","parts","part","StyleAttributor","Theme","themes","GUARD_TEXT","contentNode","childNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","getLastChangeIndex","History","lastRecorded","ignoreChange","userOnly","record","undo","redo","dest","stack","changeDelta","undoDelta","timestamp","now","maxStack","endsWithNewlineChange","deleteLength","changeIndex","BaseTooltip","_colorPicker","_colorPicker2","_iconPicker","_iconPicker2","_picker","_picker2","_tooltip","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","listener","tooltip","textbox","pickers","picker","extendToolbar","buttons","icons","button","selects","fillSelect","formula","edit","fileInput","reader","FileReader","onload","readAsDataURL","video","_Tooltip","boundsContainer","save","cancel","preview","linkRange","restoreFocus","extractVideoUrl","LinkedList","cur","curNode","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","MAX_OPTIMIZE_ITERATIONS","ScrollBlot","MutationObserver","records","mark","markParent","remaining","previousSibling","grandChild","obj1","obj2","InlineBlot","BlockBlot","EmbedBlot","splitText","_toggle","DOMTokenList","searchString","subjectString","isFinite","floor","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","substring","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","fix_cursor","fix_emoji","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","ceil","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","k1_offset","x1","y1","charAt","k2_offset","x2","diff_bisectSplit_","k2","y2","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","hm1","hm2","pointer","count_delete","count_insert","text_delete","text_insert","changes","cursor_normalize_diff","current_pos","next_pos","split_pos","d_left","d_right","norm","ndiffs","cursor_pointer","d_next","merge_tuples","compact","starts_with_pair_end","str","ends_with_pair_start","fixed_diffs","left_d","right_d","shim","supportsArgumentsClass","supported","unsupported","propertyIsEnumerable","has","Events","EE","EventEmitter","_eventsCount","eventNames","exists","available","ee","a1","a2","a3","a4","a5","removeListener","removeAllListeners","addListener","setMaxListeners","prefixed","matchText","matchSpacing","matchNewline","matchBlot","matchAttributor","_extend3","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","matchBreak","ELEMENT_NODE","matchStyles","matchIndent","matchAlias","matchIgnore","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchers","selector","matcher","matchVisual","addMatcher","innerText","_prepareMatching","prepareMatching","_prepareMatching2","elementMatchers","textMatchers","traverse","deltaEndsWith","paste","pair","_pair","applyFormat","computeStyle","nodeType","getComputedStyle","endText","childrenDelta","nextElementSibling","nodeHeight","offsetHeight","marginTop","marginBottom","offsetTop","fontStyle","italic","fontWeight","bold","textIndent","whiteSpace","replacer","collapse","Bold","addControls","Toolbar","_ret","controls","addHandler","_this$quill$selection","_this$quill$selection2","_quill$selection$getR","_quill$selection$getR2","prompt","addButton","groups","group","control","addSelect","clean","direction","link","ColorPicker","_Picker","backgroundColor","colorLabel","stroke","IconPicker","defaultItem","Tooltip","TEMPLATE","reference","offsetWidth","rootBounds","verticalShift","_base","_base2","_link","_link2","_icons","_icons2","TOOLBAR_CONFIG","SnowTheme","_BaseTheme","buildButtons","buildPickers","SnowTooltip","_BaseTooltip","_core","_core2","_indent","_blockquote","_blockquote2","_header","_header2","_list","_list2","_bold","_bold2","_italic","_italic2","_script","_script2","_strike","_strike2","_underline","_underline2","_image","_image2","_video","_video2","_formula","_formula2","_syntax","_syntax2","_toolbar","_toolbar2","_bubble","_bubble2","_snow","_snow2","IndentClass","ListItem","IdentAttributor","Blockquote","Header","List","_Container","listEventHandler","Italic","_Bold","Script","Strike","Underline","ATTRIBUTES","Image","Video","_BlockEmbed","FormulaBlot","_Embed","katex","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","_highlight","cachedText","Syntax","highlight","timer","interval","code","hljs","highlightAuto","BubbleTooltip","BubbleTheme","lastLine","_bounds","arrow","marginLeft","quillEditor","globalOptions","script","color","background","font","_options","_content","defaultOptions","initialize","pasteHTML","setText","_compiled","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","beforeCreate","_injectStyles","esModule","_t","_v","POSITION_COVER","bgColor","noCenter","noWrap","opacity","overlayTag","rounded","spinnerSmall","spinnerType","spinnerVariant","wrapTag","zIndex","BOverlay","computedRounded","computedVariant","defaultOverlayFn","$overlay","$background","backdropFilter","appear","maxRows","noAutoShrink","noResize","rows","BFormTextarea","heightInPx","computedStyle","resize","computedRows","overflowY","computedMinRows","computedMaxRows","setHeight","visibleCallback","computeHeight","$isServer","lineHeight","borderTopWidth","borderBottomWidth","padding","paddingTop","paddingBottom","minHeight","oldHeight","scrollHeight","contentRows","BFormRadio","bvGroup","computedLocalChecked","ariaCurrent","BBreadcrumbLink","suppliedProps","BBreadcrumbItem","COMMON_ALIGNMENT","computeRowColsClass","breakpoint","cols","computeRowColsBreakpoint","rowColsPropList","generateProps","rowColsProps","alignContent","alignH","alignV","noGutters","BRow","_classList$push","tbodyTransitionHandlers","tbodyTransitionProps","BTbody","isTransitionGroup","tbodyAttrs","tbodyProps","nativeOn","ELLIPSIS_THRESHOLD","DEFAULT_LIMIT","makePageArray","startNumber","sanitizeLimit","sanitizeCurrentPage","page","onSpaceKey","immediatePropagation","ariaLabel","ellipsisClass","ellipsisText","firstClass","firstNumber","firstText","hideEllipsis","hideGotoEndButtons","labelFirstPage","labelLastPage","labelNextPage","labelPage","labelPrevPage","lastClass","lastNumber","lastText","nextClass","nextText","pageClass","prevClass","prevText","localLimit","btnSize","alignment","styleClass","computedCurrentPage","paginationParams","showFirstDots","showLastDots","numberOfLinks","lastPageNumber","pageList","_this$paginationParam","pages","_i2","_i3","handleKeyNav","isNav","focusFirst","focusPrev","focusLast","focusNext","getButtons","btn","pageNumbers","_this$paginationParam2","$buttons","isActivePage","noCurrentPage","makeEndBtn","linkTo","btnSlot","btnText","btnClass","pageTest","isDisabled","$btnContent","$inner","makeEllipsis","isLast","makePageButton","btnContent","$firstPageBtn","$lastPageBtn","$pagination","formCustomMixin","custom","formSizeMixin","download","strFileName","strMimeType","blob","defaultMime","mimeType","payload","myBlob","Blob","MozBlob","WebKitBlob","fileName","ajax","XMLHttpRequest","open","responseType","response","send","msSaveBlob","dataUrlToBlob","saver","tempUiArr","Uint8Array","mx","strUrl","decoder","atob","decodeURIComponent","binData","uiArr","winMode","URL","revokeObjectURL","confirm","location","createObjectURL","btoa","encodeURIComponent","TABLE_TAG_NAMES","filterEvent","labelFor","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","headClicked","hasHeadClickListener","makeCell","labelHtml","headerTitle","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","slotNames","column","$srLabel","$cells","$trs","MODEL_PROP_NAME_INDETERMINATE","MODEL_EVENT_NAME_INDETERMINATE","BFormCheckbox","isChecked","checked","isRadio","setIndeterminate","computedLocalCheckedWatcher","indeterminate","handleChange","_ref$target","uncheckedValue","localChecked","isGroup","state","VALUE_EMPTY_DEPRECATED_MSG","isValidValue","getDataTransferItemEntry","getAsEntry","webkitGetAsEntry","getAllFileEntries","dataTransferItemList","traverseDirectories","isDirectory","getAllFileEntriesInDirectory","createReader","isFile","file","$path","directoryReader","entryPromises","readDirectoryEntries","readEntries","accept","browseText","capture","directory","dropPlaceholder","fileNameFormatter","noDrop","noDropPlaceholder","noTraverse","BFormFile","dragging","dropAllowed","computedAccept","extOrType","startMatch","endMatch","rx","computedCapture","webkitdirectory","computedFileNameFormatter","defaultFileNameFormatter","clonedFiles","flattenedFiles","fileNames","labelContent","allowed","filesTraversed","$_form","$form","isFileValid","isFilesArrayValid","setFiles","setInputFiles","dataTransfer","ClipboardEvent","clipboardData","DataTransfer","_unused2","handleFiles","isDrop","filteredFiles","focusHandler","_event$dataTransfer","webkitRelativePath","onDragenter","_event$dataTransfer2","dropEffect","onDragover","_event$dataTransfer3","onDragleave","onDrop","focusin","focusout","for","pointerEvents","dragenter","dragover","dragleave","drop","BInputGroupAppend","textSelectionActive","sel","containsNode","BInputGroupText","actionTags","to","action","BListGroupItem","itemProps","_methods","ariaLabelledby","buttonVariant","formRadioCheckMixin","isBtnMode","isPlain","isCustom","isSwitch","switches","switch","isInline","computedName","groupName","computedForm","computedSize","computedState","computedButtonVariant","buttonClasses","handleFocus","$button","colgroupMixin","$colgroup","textTag","BCardText","SELECTOR","autofocus","formControlMixin","handleAutofocus","AttachmentMap","AUTO","TOP","BOTTOM","TOPLEFT","TOPRIGHT","RIGHTTOP","RIGHTBOTTOM","BOTTOMLEFT","BOTTOMRIGHT","LEFTTOP","LEFTBOTTOM","OffsetMap","BVPopper","attachment","getAttachment","popperConfig","getOffset","flip","behavior","preventOverflow","boundariesElement","onCreate","originalPlacement","popperPlacementChange","onUpdate","$_popper","popperCreate","handleDestroy","updatePopper","destroyPopper","destroyed","arrowOffset","scheduleUpdate","renderTemplate","beforeEnter","afterEnter","beforeLeave","afterLeave","BVTooltipTemplate","templateClasses","noninteractive","templateAttributes","$attrs","scopedStyleAttrs","templateListeners","$title","BBreadcrumb","activeDefined","_item","CLASS_NAME","FONT_SIZE_SCALE","BADGE_FONT_SIZE_SCALE","computeSize","alt","badge","badgeLeft","badgeOffset","badgeTop","badgeVariant","buttonType","square","BAvatar","bvAvatarGroup","localSrc","fontSize","marginStyle","overlapScale","marginRight","badgeStyle","onImgError","_class2","$badge","hasBadgeSlot","badgeText","pill","BBadge","BFormSelectOption","loading","meta","breadcrumb","pageTitle","funnelName","_l","breadcrumbActive","UserFunnelFirstStep","UserFunnelStepVariationId","UserFunnelSecondStep","Id","Order","TemplateTypeId","TemplateId","LoadTemplates","Name","funnelDef","PDFFileURL","rawName","expression","attachPDFMsg","userFunnelId","isProjectCompleted","funnelPath","completeProjectMessage","temp","WebAPIURL","MainFolder","ParentFolder","FolderOne","UserStepId","TemplateFunnelId","TemplateFileName","IsUserTemplate","UseThisTemplate","TemplateUrl","staticStyle","firstStepURL","secondStepURL","CustomDomainId","CustomDomainVariationId","OpenSettingsModal","SubDomainURL","userFilesDir","CustomUserId","UserFunnelId","randomStr","StepTotalVisitors","ContactsCount","firstStepPageURL","secondStepPageURL","FunnelStepPageURL","FunnelStepURL","downloadHTML","resetProjectTemplate","StepProducts","addEditProduct","prodTablefields","externalQuery","prodSearchTerm","prodPageLength","_u","removeProduct","addEditEmail","StepFunnelEmails","emailTablefields","EmailDeliveryCount","EmailOpenCount","toFixed","EmailClickCount","IsScheduled","cloneFunnelEmail","deleteStepEmails","activeTab","UserFunnelSteps","$$selectedVal","onAutoRespChange","auto","lstResponseAccount","res","ResponseCampaignList","loadGetResponseAccount","lstSendLaneAccount","account","SubDomain","SendLaneLists","stopPropagation","$$v","SendLaneSubDomain","SendLaneAPIKey","SendLaneHashKey","loadSendLaneAccount","lstMailChimpAccount","mail","MailChimpList","ListId","loadMailChimpAccount","lstAWeberAccount","Lists","AWeberId","loadAWeberAccount","updateAutoResponder","webFormCode","onPopupTypeChange","PopupType","RedirectionType","saveFormCode","GeneratedHTMLCode","IsTwoStepOptin","saveDoubleOptinEmail","StepDoubleOptin","UserFromEmail","smtp","FromName","FromEmail","CurrStepID","snowOption","saveOptinEmail","resetModal","handleOk","CurrStepURL","currIndexSettings","ProductDetail","FFProduct","handleFormOk","ok","closeProductModal","CheckoutTempId","PaymentMethod","saveProduct","CurrencySymbol","CurrencyCode","openPaymentProcessor","pay","PaymentMethodId","PaymentProcessorId","AccountName","Email","Subscription","CustomProductID","PaymentFrequency","freq","ProductPaymentFrequency","FrequencyName","TrialDiv","fnEmailEnabled","EmailEnabled","FunnelUserSmtpConfiguration","SmtpConfigurationId","ColorOne","ChildFolder","TemplateName","UseThisCheckoutTemplate","ColorTwo","FolderTwo","ColorThree","FolderThree","ColorFour","FolderFour","SalePageVariation","ResetCheckoutTemplate","StepFunnelEmailDetail","FunnelEmail","handleEmailFormOk","closeEmailModal","openSendTestEmailModal","hideDraftBtn","saveDraftEmail","scheduleEmail","saveEmail","AttachmentFolderId","Delay","onDelayChange","onDayChange","DelayDays","DelayHours","resetTestEmailModal","closeTestEmailModal","sendTestEmail","TestToEmail","HandleTermsPrivacyPolicyOk","closeTermsPrivacyPolicyModal","updateTermPrivacyPolicy","copyTermToClipboard","termConditionsUrl","copyPrivacyPolicyToClipboard","privacyUrl","closeProjectSettingsModal","updateProjectSettings","PDFType","handleFileUpload","FunnelPDFFile","_createForOfIteratorHelper","allowArrayLike","unsupportedIterableToArray","F","normalCompletion","didErr","_e2","CurrStepURLFormRules","axios","projects","productRules","$swal","emailId","emailRules","IsSchedule","AutoResponderID","sendLaneRules","loginToSqrrindleRules","projectSettingsRules","projectTermsPrivacyPolicyRules","HTML","CurrentStepId","UserFunnelStepId","SalePageTemplateName","LoadCheckoutPageTemplates","SalePageTemplateId","SalePageTemplates","noop","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","MAX_SAFE_INTEGER","argsTag","funcTag","genTag","reIsUint","arrayEach","iteratee","baseTimes","overArg","func","objectProto","objectToString","nativeKeys","arrayLikeKeys","inherited","skipIndexes","isIndex","baseEach","createBaseEach","baseForOwn","baseFor","createBaseFor","baseKeys","isPrototype","eachFunc","fromRight","isArrayLike","iterable","keysFunc","isArrayLikeObject","isLength","isFunction","isObjectLike","lodash_foreach","MAX_SAFE_INTEGER$1","argsTag$1","funcTag$1","genTag$1","reIsUint$1","baseTimes$1","overArg$1","objectProto$1","hasOwnProperty$1","objectToString$1","propertyIsEnumerable$1","nativeKeys$1","nativeMax","nonEnumShadows","arrayLikeKeys$1","isArray$1","isArguments$1","isIndex$1","assignValue","objValue","eq","baseKeys$1","isPrototype$1","baseRest","otherArgs","copyObject","customizer","createAssigner","assigner","guard","isIterateeCall","isObject$1","isArrayLike$1","isArrayLikeObject$1","isLength$1","isFunction$1","isObjectLike$1","keys$1","lodash_assign","commonjsGlobal","globalThis","createCommonjsModule","lodash_clonedeep","LARGE_ARRAY_SIZE","HASH_UNDEFINED","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reRegExpChar","reFlags","reIsHostCtor","cloneableTags","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","addMapEntry","addSetEntry","arrayPush","arrayReduce","accumulator","initAccum","getValue","isHostObject","mapToArray","setToArray","arrayProto","funcProto","coreJsData","maskSrcKey","uid","exec","IE_PROTO","funcToString","reIsNative","getPrototype","objectCreate","nativeGetSymbols","nativeIsBuffer","DataView","getNative","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","hashClear","__data__","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","baseAssign","baseClone","isDeep","isFull","isArr","initCloneArray","copyArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbols","initCloneByTag","getAllKeys","subValue","baseCreate","baseGetAllKeys","symbolsFunc","baseGetTag","baseIsNative","isMasked","buffer","cloneArrayBuffer","arrayBuffer","byteLength","cloneDataView","dataView","byteOffset","cloneMap","cloneFunc","cloneRegExp","regexp","cloneSet","cloneSymbol","cloneTypedArray","typedArray","getSymbols","isKeyable","stubArray","cloneDeep","ArrayBuffer","ctorString","stubFalse","lodash_filter","FUNC_ERROR_TEXT","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","INFINITY","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","typedArrayTags","freeProcess","process","nodeUtil","nodeIsTypedArray","isTypedArray","arrayFilter","resIndex","arraySome","baseProperty","baseUnary","symbolToString","SetCache","setCacheAdd","setCacheHas","baseFilter","baseGet","isKey","castPath","toKey","baseHasIn","baseIsEqual","bitmask","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMatch","matchData","noCustomizer","srcValue","baseIsTypedArray","baseIteratee","baseMatchesProperty","baseMatches","getMatchData","matchesStrictComparable","isStrictComparable","hasIn","basePropertyDeep","baseToString","isSymbol","stringToPath","isPartial","arrLength","othLength","seen","arrValue","othValue","compared","othIndex","objProps","objLength","othProps","skipCtor","objCtor","othCtor","hasPath","hasFunc","memoize","string","quote","resolver","memoized","Cache","lodash_isequal","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","asyncTag","nullTag","proxyTag","undefinedTag","cacheHas","nativeObjectToString","symToStringTag","toStringTag","isArg","isBuff","isType","getRawTag","baseIsArguments","isOwn","unmasked","diacritics","diacriticless","searchChar","foundChar","indexChar","escapeRegExp","defaultType","filterPredicate","rowval","skipDiacritics","fromDropdown","rowValue","searchTerm","cook","lastPage","totalRecords","ofText","pageText","pageInfo","changePage","normalizeComponent","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","shadowRoot","originalRender","existing","__vue_script__","__vue_render__","_k","__vue_staticRenderFns__","__vue_inject_styles__","__vue_scope_id__","__vue_module_identifier__","__vue_is_functional_template__","__vue_component__","DEFAULT_ROWS_PER_PAGE_DROPDOWN","script$1","total","rtl","customRowsPerPageDropdown","paginateDropdownAllowAll","rowsPerPageText","allText","prevPage","currentPerPage","rowsPerPageOptions","handlePerPage","perPageChanged","pagesCount","quotient","remainder","paginatedInfo","nextIsPossible","prevIsPossible","pageChanged","nextPage","previousPage","found","__vue_script__$1","__vue_render__$1","__vue_staticRenderFns__$1","__vue_inject_styles__$1","__vue_scope_id__$1","__vue_module_identifier__$1","__vue_is_functional_template__$1","__vue_component__$1","script$2","globalSearchTerm","showControlBar","searchEnabled","entered","__vue_script__$2","__vue_render__$2","globalSearchPlaceholder","__vue_staticRenderFns__$2","__vue_inject_styles__$2","__vue_scope_id__$2","__vue_module_identifier__$2","__vue_is_functional_template__$2","__vue_component__$2","script$3","populateInitialFilters","columnFilters","hasFilterRow","col","filterOptions","isFilterable","filterDropdownItems","isDropdownObjects","isDropdownArray","getPlaceholder","updateFiltersOnEnter","updateFiltersImmediately","updateFiltersOnKeyup","updateFilters","updateSlotFilter","fieldToFilter","slotFilterField","filterValue","__vue_script__$3","__vue_render__$3","lineNumbers","hidden","__vue_staticRenderFns__$3","__vue_inject_styles__$3","__vue_scope_id__$3","__vue_module_identifier__$3","__vue_is_functional_template__$3","__vue_component__$3","DEFAULT_SORT_TYPE","getColumnFirstSortType","firstSortType","getCurrentPrimarySort","sortArray","getNextSort","currentSort","primarySort","currentPrimarySort","secondarySort","script$4","allSelected","allSelectedIndeterminate","typedColumns","getClasses","tableRef","paginated","setColumnStyles","checkBoxThStyle","lineNumberThStyle","columnStyles","sorts","toggleSelectAll","isSortableColumn","setInitialSort","getColumnSort","getHeaderClasses","filterRows","getWidthStyle","dom","cellStyle","colStyles","skip","cell","cells","minWidth","maxWidth","getColumnStyle","styleObject","__vue_script__$4","__vue_render__$4","__vue_staticRenderFns__$4","__vue_inject_styles__$4","__vue_scope_id__$4","__vue_module_identifier__$4","__vue_is_functional_template__$4","__vue_component__$4","script$5","headerRow","selectAllByGroup","collapsable","collectFormatted","fullColspan","groupIndex","groupChildObject","vgtSelected","columnCollapsable","currentIndex","toggleSelectGroup","__vue_script__$5","__vue_render__$5","vgtIsExpanded","__vue_staticRenderFns__$5","__vue_inject_styles__$5","__vue_scope_id__$5","__vue_module_identifier__$5","__vue_is_functional_template__$5","__vue_component__$5","toDate","argument","argStr","NaN","toInteger","dirtyNumber","addMilliseconds","dirtyDate","dirtyAmount","amount","MILLISECONDS_IN_MINUTE","getTimezoneOffsetInMilliseconds","date","baseTimezoneOffset","getTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","count","addSuffix","comparison","buildFormatLongFn","dirtyOptions","defaultWidth","dateFormats","full","long","medium","short","timeFormats","dateTimeFormats","formatLong","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","_date","_baseDate","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","eraValues","narrow","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","am","pm","midnight","noon","morning","afternoon","evening","night","formattingDayPeriodValues","ordinalNumber","_dirtyOptions","rem100","era","quarter","month","day","dayPeriod","buildMatchPatternFn","dirtyString","matchResult","matchPattern","matchedString","parseResult","parsePattern","valueCallback","buildMatchFn","matchPatterns","defaultMatchWidth","parsePatterns","defaultParseWidth","findKey","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","weekStartsOn","firstWeekContainsDate","subMilliseconds","addLeadingZeros","targetLength","sign","output","abs","formatters","signedYear","getUTCFullYear","year","M","getUTCMonth","getUTCDate","dayPeriodEnumValue","getUTCHours","H","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","fractionalSeconds","pow","MILLISECONDS_IN_DAY","getUTCDayOfYear","setUTCMonth","setUTCHours","startOfYearTimestamp","difference","startOfUTCISOWeek","getUTCDay","setUTCDate","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","round","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","MILLISECONDS_IN_WEEK$1","getUTCWeek","dayPeriodEnum","formatters$1","G","unit","Y","signedWeekYear","weekYear","twoDigitYear","R","isoWeekYear","Q","q","L","w","week","I","isoWeek","D","dayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","B","K","X","_localize","originalDate","_originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","T","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","dateTimeFormat","datePattern","timePattern","longFormatters","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","locale$1","utcDate","formatterOptions","firstCharacter","longFormatter","cleanEscapedString","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","assign$1","dirtyObject","setUTCDay","dirtyDay","currentDay","dayIndex","setUTCISODay","setUTCISOWeek","dirtyISOWeek","setUTCWeek","dirtyWeek","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE$1","MILLISECONDS_IN_SECOND","numericPatterns","hour23h","hour24h","hour11h","hour12h","minute","second","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basic","basicOptionalSeconds","extended","extendedOptionalSeconds","parseNumericPattern","parseTimezonePattern","seconds","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","parsers","parse","incompatibleTokens","isTwoDigitYear","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","isLeapYear","wholeWeekDays","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","timestampIsSet","_token","TIMEZONE_UNIT_PRIORITY","formattingTokensRegExp$1","longFormattingTokensRegExp$1","escapedStringRegExp$1","doubleQuoteRegExp$1","notWhitespaceRegExp","unescapedLatinCharacterRegExp$1","dirtyDateString","dirtyFormatString","dirtyBackupDate","dateString","formatString","subFnOptions","setters","dateToSystemTimezone","tokens","usedTokens","parser","incompatibleToken","usedToken","fullToken","cleanEscapedString$1","uniquePrioritySetters","setter","setterArray","convertedDate","setFullYear","setHours","isRight","dateInputFormat","dateOutputFormat","date$1","freeze","number$1","decimal","decimal$1","percentage","percentage$1","_boolean","_boolean$1","dataTypes","coreDataTypes","compName","script$6","isLoading","fixedHeader","rowStyleClass","compactMode","groupOptions","selectOptions","selectionInfoClass","selectionText","clearSelectionText","disableSelectInfo","sortOptions","initialSortBy","paginationOptions","perPageDropdown","dropdownAllowAll","searchOptions","searchFn","tableLoading","selectOnCheckboxOnly","selectAllByPage","maintainExpanded","expandedRowKeys","defaultSortBy","searchTrigger","externalSearchQuery","searchPlaceholder","searchSkipDiacritics","paginate","paginateOnTop","paginateOnBottom","paginationMode","filteredRows","forceSearch","initializeSelect","initializePagination","handleSearch","initializeSearch","initializeSort","tableStyles","tableStyleClasses","hasFooterSlot","overflow","rowKeyField","hasHeaderRowTemplate","showEmptySlot","selectedRowCount","selectedPageRowsCount","totalPageRowCount","totalRowCount","selectionInfo","selectedPageRows","processedRows","r1","r2","originalIndex","groupHeaderOnTop","headerPosition","groupHeaderOnBottom","wrapStyleClasses","globalSearchAllowed","allRows","globalSearchDisabled","foundMatch","matched","vgt_header_id","newHeaderRow","cRows","xRow","yRow","sortValue","getColumnForField","xvalue","collect","yvalue","sortFn","typeDef","paginatedRows","childRows","_paginatedRows","pageStart","pageEnd","reconstructedRows","flatRow","handleExpanded","hRow","vgt_id","originalRows","nestedRows","handleGrouped","hasRowClickListener","toggleExpand","expandAll","collapseAll","resetTable","emitSelectedRows","unselectAllInternal","forceAll","paginationWidget","paginationBottom","paginationTop","pageChangedEvent","pagination","perPageChangedEvent","changeSort","onCheckboxClicked","pageIndex","onRowDoubleClicked","onRowClicked","onRowAuxClicked","onCellClicked","onMouseenter","onMouseleave","searchTableOnEnter","searchTableOnKeyUp","dig","splitter","headerField","formatFn","isHeaderRow","_this$typedColumns$in","fromFilter","_loop","newChildren","getCurrentIndex","getRowStyleClass","rowStyleClasses","childRow","_this$paginationOptio","nextLabel","prevLabel","rowsPerPageLabel","ofLabel","pageLabel","allLabel","setCurrentPage","_perPageDropdown","_this$searchOptions","_this$sortOptions","hasField","_this$selectOptions","__vue_script__$6","__vue_render__$6","slot","table","__vue_staticRenderFns__$6","__vue_inject_styles__$6","__vue_scope_id__$6","__vue_module_identifier__$6","__vue_is_functional_template__$6","__vue_component__$6","VueGoodTablePlugin","Vue","use","notDisabled","tab","BVTabButton","noKeyNav","posInSet","setSize","handleEvt","_this$tab","titleItemClass","titleLinkClass","titleLinkAttributes","$link","activeNavItemClass","navProps","contentClass","navClass","navWrapperClass","noNavStyle","BTabs","currentTab","registeredTabs","localNavClass","$tab","previousTab","nextTab","updateTabs","$_observer","setObserver","$t","attributeFilter","getTabs","$tabs","$children","getButtonForTab","$btn","$forceUpdate","tabEvent","focusButton","emitTabClick","clickTab","lastTab","$activeTab","$fallbackTab","_on","$nav"],"mappings":"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","file":"js/chunk-4d49b420.2ee8e4d1.js","sourcesContent":["function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_SPINNER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_LABEL } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  label: makeProp(PROP_TYPE_STRING),\n  role: makeProp(PROP_TYPE_STRING, 'status'),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'span'),\n  type: makeProp(PROP_TYPE_STRING, 'border'),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_SPINNER); // --- Main component ---\n// @vue/component\n\nexport var BSpinner = /*#__PURE__*/Vue.extend({\n  name: NAME_SPINNER,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var $slots = slots();\n    var $scopedSlots = scopedSlots || {};\n    var $label = normalizeSlot(SLOT_NAME_LABEL, {}, $scopedSlots, $slots) || props.label;\n\n    if ($label) {\n      $label = h('span', {\n        staticClass: 'sr-only'\n      }, $label);\n    }\n\n    return h(props.tag, mergeData(data, {\n      attrs: {\n        role: $label ? props.role || 'status' : null,\n        'aria-hidden': $label ? null : 'true'\n      },\n      class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), props.type), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), props.variant), _class)\n    }), [$label || h()]);\n  }\n});","import { Vue } from '../vue'; // @vue/component\n\nexport var formSelectionMixin = Vue.extend({\n  computed: {\n    selectionStart: {\n      // Expose selectionStart for formatters, etc\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.selectionStart;\n      },\n\n      /* istanbul ignore next */\n      set: function set(val) {\n        this.$refs.input.selectionStart = val;\n      }\n    },\n    selectionEnd: {\n      // Expose selectionEnd for formatters, etc\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.selectionEnd;\n      },\n\n      /* istanbul ignore next */\n      set: function set(val) {\n        this.$refs.input.selectionEnd = val;\n      }\n    },\n    selectionDirection: {\n      // Expose selectionDirection for formatters, etc\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.selectionDirection;\n      },\n\n      /* istanbul ignore next */\n      set: function set(val) {\n        this.$refs.input.selectionDirection = val;\n      }\n    }\n  },\n  methods: {\n    /* istanbul ignore next */\n    select: function select() {\n      var _this$$refs$input;\n\n      // For external handler that may want a select() method\n      (_this$$refs$input = this.$refs.input).select.apply(_this$$refs$input, arguments);\n    },\n\n    /* istanbul ignore next */\n    setSelectionRange: function setSelectionRange() {\n      var _this$$refs$input2;\n\n      // For external handler that may want a setSelectionRange(a,b,c) method\n      (_this$$refs$input2 = this.$refs.input).setSelectionRange.apply(_this$$refs$input2, arguments);\n    },\n\n    /* istanbul ignore next */\n    setRangeText: function setRangeText() {\n      var _this$$refs$input3;\n\n      // For external handler that may want a setRangeText(a,b,c) method\n      (_this$$refs$input3 = this.$refs.input).setRangeText.apply(_this$$refs$input3, arguments);\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../vue';\nimport { NAME_ICON } from '../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { RX_ICON_PREFIX } from '../constants/regex';\nimport { omit, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { pascalCase, trim } from '../utils/string';\nimport { BIconBlank } from './icons';\nimport { props as BVIconBaseProps } from './helpers/icon-base'; // --- Helper methods ---\n\nvar findIconComponent = function findIconComponent(ctx, iconName) {\n  if (!ctx) {\n    return null;\n  }\n\n  var components = (ctx.$options || {}).components;\n  var iconComponent = components[iconName];\n  return iconComponent || findIconComponent(ctx.$parent, iconName);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, omit(BVIconBaseProps, ['content', 'stacked'])), {}, {\n  icon: makeProp(PROP_TYPE_STRING),\n  stacked: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_ICON); // --- Main component ---\n// Helper BIcon component\n// Requires the requested icon component to be installed\n// @vue/component\n\nexport var BIcon = /*#__PURE__*/Vue.extend({\n  name: NAME_ICON,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var data = _ref.data,\n        props = _ref.props,\n        parent = _ref.parent;\n    var icon = pascalCase(trim(props.icon || '')).replace(RX_ICON_PREFIX, ''); // If parent context exists, we check to see if the icon has been registered\n    // either locally in the parent component, or globally at the `$root` level\n    // If not registered, we render a blank icon\n\n    return h(icon ? findIconComponent(parent, \"BIcon\".concat(icon)) || BIconBlank : BIconBlank, mergeData(data, {\n      props: _objectSpread(_objectSpread({}, props), {}, {\n        icon: null\n      })\n    }));\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TABLE_CELL } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Helper methods ---\n// Parse a rowspan or colspan into a digit (or `null` if < `1` )\n\nvar parseSpan = function parseSpan(value) {\n  value = toInteger(value, 0);\n  return value > 0 ? value : null;\n};\n/* istanbul ignore next */\n\n\nvar spanValidator = function spanValidator(value) {\n  return isUndefinedOrNull(value) || parseSpan(value) > 0;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n  colspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  rowspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  stackedHeading: makeProp(PROP_TYPE_STRING),\n  stickyColumn: makeProp(PROP_TYPE_BOOLEAN, false),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TABLE_CELL); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTd = /*#__PURE__*/Vue.extend({\n  name: NAME_TABLE_CELL,\n  // Mixin order is important!\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  inject: {\n    bvTableTr: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return {};\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    // Overridden by `<b-th>`\n    tag: function tag() {\n      return 'td';\n    },\n    inTbody: function inTbody() {\n      return this.bvTableTr.inTbody;\n    },\n    inThead: function inThead() {\n      return this.bvTableTr.inThead;\n    },\n    inTfoot: function inTfoot() {\n      return this.bvTableTr.inTfoot;\n    },\n    isDark: function isDark() {\n      return this.bvTableTr.isDark;\n    },\n    isStacked: function isStacked() {\n      return this.bvTableTr.isStacked;\n    },\n    // We only support stacked-heading in tbody in stacked mode\n    isStackedCell: function isStackedCell() {\n      return this.inTbody && this.isStacked;\n    },\n    isResponsive: function isResponsive() {\n      return this.bvTableTr.isResponsive;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader: function isStickyHeader() {\n      return this.bvTableTr.isStickyHeader;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader: function hasStickyHeader() {\n      return this.bvTableTr.hasStickyHeader;\n    },\n    // Needed to handle background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky column cells are only available in responsive\n    // mode (horizontal scrolling) or when sticky header mode\n    // Applies to cells in `thead`, `tbody` and `tfoot`\n    isStickyColumn: function isStickyColumn() {\n      return !this.isStacked && (this.isResponsive || this.hasStickyHeader) && this.stickyColumn;\n    },\n    rowVariant: function rowVariant() {\n      return this.bvTableTr.variant;\n    },\n    headVariant: function headVariant() {\n      return this.bvTableTr.headVariant;\n    },\n    footVariant: function footVariant() {\n      return this.bvTableTr.footVariant;\n    },\n    tableVariant: function tableVariant() {\n      return this.bvTableTr.tableVariant;\n    },\n    computedColspan: function computedColspan() {\n      return parseSpan(this.colspan);\n    },\n    computedRowspan: function computedRowspan() {\n      return parseSpan(this.rowspan);\n    },\n    // We use computed props here for improved performance by caching\n    // the results of the string interpolation\n    cellClasses: function cellClasses() {\n      var variant = this.variant,\n          headVariant = this.headVariant,\n          isStickyColumn = this.isStickyColumn;\n\n      if (!variant && this.isStickyHeader && !headVariant || !variant && isStickyColumn && this.inTfoot && !this.footVariant || !variant && isStickyColumn && this.inThead && !headVariant || !variant && isStickyColumn && this.inTbody) {\n        // Needed for sticky-header mode as Bootstrap v4 table cells do\n        // not inherit parent's `background-color`\n        variant = this.rowVariant || this.tableVariant || 'b-table-default';\n      }\n\n      return [variant ? \"\".concat(this.isDark ? 'bg' : 'table', \"-\").concat(variant) : null, isStickyColumn ? 'b-table-sticky-column' : null];\n    },\n    cellAttrs: function cellAttrs() {\n      var stackedHeading = this.stackedHeading; // We use computed props here for improved performance by caching\n      // the results of the object spread (Object.assign)\n\n      var headOrFoot = this.inThead || this.inTfoot; // Make sure col/rowspan's are > 0 or null\n\n      var colspan = this.computedColspan;\n      var rowspan = this.computedRowspan; // Default role and scope\n\n      var role = 'cell';\n      var scope = null; // Compute role and scope\n      // We only add scopes with an explicit span of 1 or greater\n\n      if (headOrFoot) {\n        // Header or footer cells\n        role = 'columnheader';\n        scope = colspan > 0 ? 'colspan' : 'col';\n      } else if (isTag(this.tag, 'th')) {\n        // th's in tbody\n        role = 'rowheader';\n        scope = rowspan > 0 ? 'rowgroup' : 'row';\n      }\n\n      return _objectSpread(_objectSpread({\n        colspan: colspan,\n        rowspan: rowspan,\n        role: role,\n        scope: scope\n      }, this.bvAttrs), {}, {\n        // Add in the stacked cell label data-attribute if in\n        // stacked mode (if a stacked heading label is provided)\n        'data-label': this.isStackedCell && !isUndefinedOrNull(stackedHeading) ?\n        /* istanbul ignore next */\n        toString(stackedHeading) : null\n      });\n    }\n  },\n  render: function render(h) {\n    var $content = [this.normalizeSlot()];\n    return h(this.tag, {\n      class: this.cellClasses,\n      attrs: this.cellAttrs,\n      // Transfer any native listeners\n      on: this.bvListeners\n    }, [this.isStackedCell ? h('div', [$content]) : $content]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_THEAD } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  // Also sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n  // Supported values: 'lite', 'dark', or `null`\n  headVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_THEAD); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BThead = /*#__PURE__*/Vue.extend({\n  name: NAME_THEAD,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide: function provide() {\n    return {\n      bvTableRowGroup: this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    bvTable: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return {};\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isThead: function isThead() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark: function isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked: function isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive: function isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader: function isStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader: function hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant: function tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    theadClasses: function theadClasses() {\n      return [this.headVariant ? \"thead-\".concat(this.headVariant) : null];\n    },\n    theadAttrs: function theadAttrs() {\n      return _objectSpread({\n        role: 'rowgroup'\n      }, this.bvAttrs);\n    }\n  },\n  render: function render(h) {\n    return h('thead', {\n      class: this.theadClasses,\n      attrs: this.theadAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./projectdetail.vue?vue&type=style&index=0&lang=scss&\"","import { Vue } from '../vue';\nimport { PROP_TYPE_ARRAY_OBJECT, PROP_TYPE_STRING } from '../constants/props';\nimport { get } from '../utils/get';\nimport { stripTags } from '../utils/html';\nimport { isArray, isPlainObject, isUndefined } from '../utils/inspect';\nimport { keys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { warn } from '../utils/warn'; // --- Constants ---\n\nvar OPTIONS_OBJECT_DEPRECATED_MSG = 'Setting prop \"options\" to an object is deprecated. Use the array format instead.'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  disabledField: makeProp(PROP_TYPE_STRING, 'disabled'),\n  htmlField: makeProp(PROP_TYPE_STRING, 'html'),\n  options: makeProp(PROP_TYPE_ARRAY_OBJECT, []),\n  textField: makeProp(PROP_TYPE_STRING, 'text'),\n  valueField: makeProp(PROP_TYPE_STRING, 'value')\n}, 'formOptionControls'); // --- Mixin ---\n// @vue/component\n\nexport var formOptionsMixin = Vue.extend({\n  props: props,\n  computed: {\n    formOptions: function formOptions() {\n      return this.normalizeOptions(this.options);\n    }\n  },\n  methods: {\n    normalizeOption: function normalizeOption(option) {\n      var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      // When the option is an object, normalize it\n      if (isPlainObject(option)) {\n        var value = get(option, this.valueField);\n        var text = get(option, this.textField);\n        return {\n          value: isUndefined(value) ? key || text : value,\n          text: stripTags(String(isUndefined(text) ? key : text)),\n          html: get(option, this.htmlField),\n          disabled: Boolean(get(option, this.disabledField))\n        };\n      } // Otherwise create an `<option>` object from the given value\n\n\n      return {\n        value: key || option,\n        text: stripTags(String(option)),\n        disabled: false\n      };\n    },\n    normalizeOptions: function normalizeOptions(options) {\n      var _this = this;\n\n      // Normalize the given options array\n      if (isArray(options)) {\n        return options.map(function (option) {\n          return _this.normalizeOption(option);\n        });\n      } else if (isPlainObject(options)) {\n        // Deprecate the object options format\n        warn(OPTIONS_OBJECT_DEPRECATED_MSG, this.$options.name); // Normalize a `options` object to an array of options\n\n        return keys(options).map(function (key) {\n          return _this.normalizeOption(options[key] || {}, key);\n        });\n      } // If not an array or object, return an empty array\n\n      /* istanbul ignore next */\n\n\n      return [];\n    }\n  }\n});","import BCardCode from './BCardCode.vue'\n\nexport default BCardCode\n","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  id: makeProp(PROP_TYPE_STRING),\n  inline: makeProp(PROP_TYPE_BOOLEAN, false),\n  novalidate: makeProp(PROP_TYPE_BOOLEAN, false),\n  validated: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM); // --- Main component ---\n// @vue/component\n\nexport var BForm = /*#__PURE__*/Vue.extend({\n  name: NAME_FORM,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h('form', mergeData(data, {\n      class: {\n        'form-inline': props.inline,\n        'was-validated': props.validated\n      },\n      attrs: {\n        id: props.id,\n        novalidate: props.novalidate\n      }\n    }), children);\n  }\n});","import { Vue } from '../vue'; // @vue/component\n\nexport var formValidityMixin = Vue.extend({\n  computed: {\n    validity: {\n      // Expose validity property\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.validity;\n      }\n    },\n    validationMessage: {\n      // Expose validationMessage property\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.validationMessage;\n      }\n    },\n    willValidate: {\n      // Expose willValidate property\n      cache: false,\n\n      /* istanbul ignore next */\n      get: function get() {\n        return this.$refs.input.willValidate;\n      }\n    }\n  },\n  methods: {\n    /* istanbul ignore next */\n    setCustomValidity: function setCustomValidity() {\n      var _this$$refs$input;\n\n      // For external handler that may want a setCustomValidity(...) method\n      return (_this$$refs$input = this.$refs.input).setCustomValidity.apply(_this$$refs$input, arguments);\n    },\n\n    /* istanbul ignore next */\n    checkValidity: function checkValidity() {\n      var _this$$refs$input2;\n\n      // For external handler that may want a checkValidity(...) method\n      return (_this$$refs$input2 = this.$refs.input).checkValidity.apply(_this$$refs$input2, arguments);\n    },\n\n    /* istanbul ignore next */\n    reportValidity: function reportValidity() {\n      var _this$$refs$input3;\n\n      // For external handler that may want a reportValidity(...) method\n      return (_this$$refs$input3 = this.$refs.input).reportValidity.apply(_this$$refs$input3, arguments);\n    }\n  }\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"toastification\"},[_c('div',{staticClass:\"d-flex align-items-start\"},[_c('b-avatar',{staticClass:\"mr-75 flex-shrink-0\",attrs:{\"variant\":_vm.variant,\"size\":\"1.8rem\"}},[_c('feather-icon',{attrs:{\"icon\":_vm.icon,\"size\":\"15\"}})],1),_c('div',{staticClass:\"d-flex flex-grow-1\"},[_c('div',[(_vm.title)?_c('h5',{staticClass:\"mb-0 font-weight-bolder toastification-title\",class:(\"text-\" + _vm.variant),domProps:{\"textContent\":_vm._s(_vm.title)}}):_vm._e(),(_vm.text)?_c('small',{staticClass:\"d-inline-block text-body\",domProps:{\"textContent\":_vm._s(_vm.text)}}):_vm._e()]),_c('span',{staticClass:\"cursor-pointer toastification-close-icon ml-auto \",on:{\"click\":function($event){return _vm.$emit('close-toast')}}},[(!_vm.hideClose)?_c('feather-icon',{staticClass:\"text-body\",attrs:{\"icon\":\"XIcon\"}}):_vm._e()],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n    <div class=\"toastification\">\n        <div class=\"d-flex align-items-start\">\n            <b-avatar :variant=\"variant\"\n                      size=\"1.8rem\"\n                      class=\"mr-75 flex-shrink-0\">\n                <feather-icon :icon=\"icon\"\n                              size=\"15\" />\n            </b-avatar>\n            <div class=\"d-flex flex-grow-1\">\n                <div>\n                    <h5 v-if=\"title\"\n                        class=\"mb-0 font-weight-bolder toastification-title\"\n                        :class=\"`text-${variant}`\"\n                        v-text=\"title\" />\n                    <small v-if=\"text\"\n                           class=\"d-inline-block text-body\"\n                           v-text=\"text\" />\n                </div>\n                <span class=\"cursor-pointer toastification-close-icon ml-auto \"\n                      @click=\"$emit('close-toast')\">\n                    <feather-icon v-if=\"!hideClose\"\n                                  icon=\"XIcon\"\n                                  class=\"text-body\" />\n                </span>\n            </div>\n        </div>\n    </div>\n</template>\n\n<script>\n    import { BAvatar } from 'bootstrap-vue'\n\n    export default {\n        components: {\n            BAvatar,\n        },\n        props: {\n            variant: {\n                type: String,\n                default: 'primary',\n            },\n            icon: {\n                type: String,\n                default: null,\n            },\n            title: {\n                type: String,\n                default: null,\n            },\n            text: {\n                type: String,\n                default: null,\n            },\n            hideClose: {\n                type: Boolean,\n                default: false,\n            },\n        },\n\n    }\n</script>\n\n<style lang=\"scss\" scoped>\n    .toastification-close-icon,\n    .toastification-title {\n        line-height: 26px;\n    }\n\n    .toastification-title {\n        color: inherit;\n    }\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToastificationContent.vue?vue&type=template&id=00bc57af&scoped=true&\"\nimport script from \"./ToastificationContent.vue?vue&type=script&lang=js&\"\nexport * from \"./ToastificationContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ToastificationContent.vue?vue&type=style&index=0&id=00bc57af&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"00bc57af\",\n  null\n  \n)\n\nexport default component.exports","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_TOOLTIP } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_SHOW } from '../../constants/events';\nimport { concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { getScopeId } from '../../utils/get-scope-id';\nimport { identity } from '../../utils/identity';\nimport { isFunction, isNumber, isPlainObject, isString, isUndefined, isUndefinedOrNull } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { toInteger } from '../../utils/number';\nimport { keys } from '../../utils/object';\nimport { BVTooltip } from '../../components/tooltip/helpers/bv-tooltip'; // Key which we use to store tooltip object on element\n\nvar BV_TOOLTIP = '__BV_Tooltip__'; // Default trigger\n\nvar DefaultTrigger = 'hover focus'; // Valid event triggers\n\nvar validTriggers = {\n  focus: true,\n  hover: true,\n  click: true,\n  blur: true,\n  manual: true\n}; // Directive modifier test regular expressions. Pre-compile for performance\n\nvar htmlRE = /^html$/i;\nvar noninteractiveRE = /^noninteractive$/i;\nvar noFadeRE = /^nofade$/i;\nvar placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\nvar boundaryRE = /^(window|viewport|scrollParent)$/i;\nvar delayRE = /^d\\d+$/i;\nvar delayShowRE = /^ds\\d+$/i;\nvar delayHideRE = /^dh\\d+$/i;\nvar offsetRE = /^o-?\\d+$/i;\nvar variantRE = /^v-.+$/i;\nvar spacesRE = /\\s+/; // Build a Tooltip config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\nvar parseBindings = function parseBindings(bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n  // We start out with a basic config\n  var config = {\n    title: undefined,\n    trigger: '',\n    // Default set below if needed\n    placement: 'top',\n    fallbackPlacement: 'flip',\n    container: false,\n    // Default of body\n    animation: true,\n    offset: 0,\n    id: null,\n    html: false,\n    interactive: true,\n    disabled: false,\n    delay: getComponentConfig(NAME_TOOLTIP, 'delay', 50),\n    boundary: String(getComponentConfig(NAME_TOOLTIP, 'boundary', 'scrollParent')),\n    boundaryPadding: toInteger(getComponentConfig(NAME_TOOLTIP, 'boundaryPadding', 5), 0),\n    variant: getComponentConfig(NAME_TOOLTIP, 'variant'),\n    customClass: getComponentConfig(NAME_TOOLTIP, 'customClass')\n  }; // Process `bindings.value`\n\n  if (isString(bindings.value) || isNumber(bindings.value)) {\n    // Value is tooltip content (HTML optionally supported)\n    config.title = bindings.value;\n  } else if (isFunction(bindings.value)) {\n    // Title generator function\n    config.title = bindings.value;\n  } else if (isPlainObject(bindings.value)) {\n    // Value is config object, so merge\n    config = _objectSpread(_objectSpread({}, config), bindings.value);\n  } // If title is not provided, try title attribute\n\n\n  if (isUndefined(config.title)) {\n    // Try attribute\n    var data = vnode.data || {};\n    config.title = data.attrs && !isUndefinedOrNull(data.attrs.title) ? data.attrs.title : undefined;\n  } // Normalize delay\n\n\n  if (!isPlainObject(config.delay)) {\n    config.delay = {\n      show: toInteger(config.delay, 0),\n      hide: toInteger(config.delay, 0)\n    };\n  } // If argument, assume element ID of container element\n\n\n  if (bindings.arg) {\n    // Element ID specified as arg\n    // We must prepend '#' to become a CSS selector\n    config.container = \"#\".concat(bindings.arg);\n  } // Process modifiers\n\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    if (htmlRE.test(mod)) {\n      // Title allows HTML\n      config.html = true;\n    } else if (noninteractiveRE.test(mod)) {\n      // Noninteractive\n      config.interactive = false;\n    } else if (noFadeRE.test(mod)) {\n      // No animation\n      config.animation = false;\n    } else if (placementRE.test(mod)) {\n      // Placement of tooltip\n      config.placement = mod;\n    } else if (boundaryRE.test(mod)) {\n      // Boundary of tooltip\n      mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n      config.boundary = mod;\n    } else if (delayRE.test(mod)) {\n      // Delay value\n      var delay = toInteger(mod.slice(1), 0);\n      config.delay.show = delay;\n      config.delay.hide = delay;\n    } else if (delayShowRE.test(mod)) {\n      // Delay show value\n      config.delay.show = toInteger(mod.slice(2), 0);\n    } else if (delayHideRE.test(mod)) {\n      // Delay hide value\n      config.delay.hide = toInteger(mod.slice(2), 0);\n    } else if (offsetRE.test(mod)) {\n      // Offset value, negative allowed\n      config.offset = toInteger(mod.slice(1), 0);\n    } else if (variantRE.test(mod)) {\n      // Variant\n      config.variant = mod.slice(2) || null;\n    }\n  }); // Special handling of event trigger modifiers trigger is\n  // a space separated list\n\n  var selectedTriggers = {}; // Parse current config object trigger\n\n  concat(config.trigger || '').filter(identity).join(' ').trim().toLowerCase().split(spacesRE).forEach(function (trigger) {\n    if (validTriggers[trigger]) {\n      selectedTriggers[trigger] = true;\n    }\n  }); // Parse modifiers for triggers\n\n  keys(bindings.modifiers).forEach(function (mod) {\n    mod = mod.toLowerCase();\n\n    if (validTriggers[mod]) {\n      // If modifier is a valid trigger\n      selectedTriggers[mod] = true;\n    }\n  }); // Sanitize triggers\n\n  config.trigger = keys(selectedTriggers).join(' ');\n\n  if (config.trigger === 'blur') {\n    // Blur by itself is useless, so convert it to 'focus'\n    config.trigger = 'focus';\n  }\n\n  if (!config.trigger) {\n    // Use default trigger\n    config.trigger = DefaultTrigger;\n  } // Return the config\n\n\n  return config;\n}; // Add/update Tooltip on our element\n\n\nvar applyTooltip = function applyTooltip(el, bindings, vnode) {\n  if (!IS_BROWSER) {\n    /* istanbul ignore next */\n    return;\n  }\n\n  var config = parseBindings(bindings, vnode);\n\n  if (!el[BV_TOOLTIP]) {\n    var $parent = vnode.context;\n    el[BV_TOOLTIP] = new BVTooltip({\n      parent: $parent,\n      // Add the parent's scoped style attribute data\n      _scopeId: getScopeId($parent, undefined)\n    });\n    el[BV_TOOLTIP].__bv_prev_data__ = {};\n    el[BV_TOOLTIP].$on(EVENT_NAME_SHOW, function ()\n    /* istanbul ignore next: for now */\n    {\n      // Before showing the tooltip, we update the title if it is a function\n      if (isFunction(config.title)) {\n        el[BV_TOOLTIP].updateData({\n          title: config.title(el)\n        });\n      }\n    });\n  }\n\n  var data = {\n    title: config.title,\n    triggers: config.trigger,\n    placement: config.placement,\n    fallbackPlacement: config.fallbackPlacement,\n    variant: config.variant,\n    customClass: config.customClass,\n    container: config.container,\n    boundary: config.boundary,\n    delay: config.delay,\n    offset: config.offset,\n    noFade: !config.animation,\n    id: config.id,\n    interactive: config.interactive,\n    disabled: config.disabled,\n    html: config.html\n  };\n  var oldData = el[BV_TOOLTIP].__bv_prev_data__;\n  el[BV_TOOLTIP].__bv_prev_data__ = data;\n\n  if (!looseEqual(data, oldData)) {\n    // We only update the instance if data has changed\n    var newData = {\n      target: el\n    };\n    keys(data).forEach(function (prop) {\n      // We only pass data properties that have changed\n      if (data[prop] !== oldData[prop]) {\n        // if title is a function, we execute it here\n        newData[prop] = prop === 'title' && isFunction(data[prop]) ? data[prop](el) : data[prop];\n      }\n    });\n    el[BV_TOOLTIP].updateData(newData);\n  }\n}; // Remove Tooltip on our element\n\n\nvar removeTooltip = function removeTooltip(el) {\n  if (el[BV_TOOLTIP]) {\n    el[BV_TOOLTIP].$destroy();\n    el[BV_TOOLTIP] = null;\n  }\n\n  delete el[BV_TOOLTIP];\n}; // Export our directive\n\n\nexport var VBTooltip = {\n  bind: function bind(el, bindings, vnode) {\n    applyTooltip(el, bindings, vnode);\n  },\n  // We use `componentUpdated` here instead of `update`, as the former\n  // waits until the containing component and children have finished updating\n  componentUpdated: function componentUpdated(el, bindings, vnode) {\n    // Performed in a `$nextTick()` to prevent render update loops\n    vnode.context.$nextTick(function () {\n      applyTooltip(el, bindings, vnode);\n    });\n  },\n  unbind: function unbind(el) {\n    removeTooltip(el);\n  }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_PAGINATION } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_PAGE_CLICK } from '../../constants/events';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, isVisible } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { mathCeil, mathMax } from '../../utils/math';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { MODEL_PROP_NAME, paginationMixin, props as paginationProps } from '../../mixins/pagination'; // --- Constants ---\n\nvar DEFAULT_PER_PAGE = 20;\nvar DEFAULT_TOTAL_ROWS = 0; // --- Helper methods ---\n// Sanitize the provided per page number (converting to a number)\n\nvar sanitizePerPage = function sanitizePerPage(value) {\n  return mathMax(toInteger(value) || DEFAULT_PER_PAGE, 1);\n}; // Sanitize the provided total rows number (converting to a number)\n\n\nvar sanitizeTotalRows = function sanitizeTotalRows(value) {\n  return mathMax(toInteger(value) || DEFAULT_TOTAL_ROWS, 0);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, paginationProps), {}, {\n  ariaControls: makeProp(PROP_TYPE_STRING),\n  perPage: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_PER_PAGE),\n  totalRows: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_TOTAL_ROWS)\n})), NAME_PAGINATION); // --- Main component ---\n// @vue/component\n\nexport var BPagination = /*#__PURE__*/Vue.extend({\n  name: NAME_PAGINATION,\n  // The render function is brought in via the `paginationMixin`\n  mixins: [paginationMixin],\n  props: props,\n  computed: {\n    numberOfPages: function numberOfPages() {\n      var result = mathCeil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage));\n      return result < 1 ? 1 : result;\n    },\n    // Used for watching changes to `perPage` and `numberOfPages`\n    pageSizeNumberOfPages: function pageSizeNumberOfPages() {\n      return {\n        perPage: sanitizePerPage(this.perPage),\n        totalRows: sanitizeTotalRows(this.totalRows),\n        numberOfPages: this.numberOfPages\n      };\n    }\n  },\n  watch: {\n    pageSizeNumberOfPages: function pageSizeNumberOfPages(newValue, oldValue) {\n      if (!isUndefinedOrNull(oldValue)) {\n        if (newValue.perPage !== oldValue.perPage && newValue.totalRows === oldValue.totalRows) {\n          // If the page size changes, reset to page 1\n          this.currentPage = 1;\n        } else if (newValue.numberOfPages !== oldValue.numberOfPages && this.currentPage > newValue.numberOfPages) {\n          // If `numberOfPages` changes and is less than\n          // the `currentPage` number, reset to page 1\n          this.currentPage = 1;\n        }\n      }\n\n      this.localNumberOfPages = newValue.numberOfPages;\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    // Set the initial page count\n    this.localNumberOfPages = this.numberOfPages; // Set the initial page value\n\n    var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n\n    if (currentPage > 0) {\n      this.currentPage = currentPage;\n    } else {\n      this.$nextTick(function () {\n        // If this value parses to `NaN` or a value less than `1`\n        // trigger an initial emit of `null` if no page specified\n        _this.currentPage = 0;\n      });\n    }\n  },\n  methods: {\n    // These methods are used by the render function\n    onClick: function onClick(event, pageNumber) {\n      var _this2 = this;\n\n      // Dont do anything if clicking the current active page\n      if (pageNumber === this.currentPage) {\n        return;\n      }\n\n      var target = event.target; // Emit a user-cancelable `page-click` event\n\n      var clickEvt = new BvEvent(EVENT_NAME_PAGE_CLICK, {\n        cancelable: true,\n        vueTarget: this,\n        target: target\n      });\n      this.$emit(clickEvt.type, clickEvt, pageNumber);\n\n      if (clickEvt.defaultPrevented) {\n        return;\n      } // Update the `v-model`\n\n\n      this.currentPage = pageNumber; // Emit event triggered by user interaction\n\n      this.$emit(EVENT_NAME_CHANGE, this.currentPage); // Keep the current button focused if possible\n\n      this.$nextTick(function () {\n        if (isVisible(target) && _this2.$el.contains(target)) {\n          attemptFocus(target);\n        } else {\n          _this2.focusCurrent();\n        }\n      });\n    },\n    makePage: function makePage(pageNum) {\n      return pageNum;\n    },\n\n    /* istanbul ignore next */\n    linkProps: function linkProps() {\n      // No props, since we render a plain button\n      return {};\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  // Supported values: 'lite', 'dark', or null\n  footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTfoot = /*#__PURE__*/Vue.extend({\n  name: NAME_TFOOT,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide: function provide() {\n    return {\n      bvTableRowGroup: this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    bvTable: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return {};\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTfoot: function isTfoot() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark: function isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked: function isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive: function isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader: function isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader: function hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant: function tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    tfootClasses: function tfootClasses() {\n      return [this.footVariant ? \"thead-\".concat(this.footVariant) : null];\n    },\n    tfootAttrs: function tfootAttrs() {\n      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n        role: 'rowgroup'\n      });\n    }\n  },\n  render: function render(h) {\n    return h('tfoot', {\n      class: this.tfootClasses,\n      attrs: this.tfootAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_BOTTOM_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var bottomRowMixin = Vue.extend({\n  props: props,\n  methods: {\n    renderBottomRow: function renderBottomRow() {\n      var fields = this.computedFields,\n          stacked = this.stacked,\n          tbodyTrClass = this.tbodyTrClass,\n          tbodyTrAttr = this.tbodyTrAttr;\n      var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n      // If in *always* stacked mode, we don't bother rendering the row\n\n      if (!this.hasNormalizedSlot(SLOT_NAME_BOTTOM_ROW) || stacked === true || stacked === '') {\n        return h();\n      }\n\n      return h(BTr, {\n        staticClass: 'b-table-bottom-row',\n        class: [isFunction(tbodyTrClass) ?\n        /* istanbul ignore next */\n        tbodyTrClass(null, 'row-bottom') : tbodyTrClass],\n        attrs: isFunction(tbodyTrAttr) ?\n        /* istanbul ignore next */\n        tbodyTrAttr(null, 'row-bottom') : tbodyTrAttr,\n        key: 'b-bottom-row'\n      }, this.normalizeSlot(SLOT_NAME_BOTTOM_ROW, {\n        columns: fields.length,\n        fields: fields\n      }));\n    }\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Constants ---\n\nvar MODEL_PROP_NAME_BUSY = 'busy';\nvar MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY; // --- Props ---\n\nexport var props = _defineProperty({}, MODEL_PROP_NAME_BUSY, makeProp(PROP_TYPE_BOOLEAN, false)); // --- Mixin ---\n// @vue/component\n\nexport var busyMixin = Vue.extend({\n  props: props,\n  data: function data() {\n    return {\n      localBusy: false\n    };\n  },\n  computed: {\n    computedBusy: function computedBusy() {\n      return this[MODEL_PROP_NAME_BUSY] || this.localBusy;\n    }\n  },\n  watch: {\n    localBusy: function localBusy(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.$emit(MODEL_EVENT_NAME_BUSY, newValue);\n      }\n    }\n  },\n  methods: {\n    // Event handler helper\n    stopIfBusy: function stopIfBusy(event) {\n      // If table is busy (via provider) then don't propagate\n      if (this.computedBusy) {\n        stopEvent(event);\n        return true;\n      }\n\n      return false;\n    },\n    // Render the busy indicator or return `null` if not busy\n    renderBusy: function renderBusy() {\n      var tbodyTrClass = this.tbodyTrClass,\n          tbodyTrAttr = this.tbodyTrAttr;\n      var h = this.$createElement; // Return a busy indicator row, or `null` if not busy\n\n      if (this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY)) {\n        return h(BTr, {\n          staticClass: 'b-table-busy-slot',\n          class: [isFunction(tbodyTrClass) ?\n          /* istanbul ignore next */\n          tbodyTrClass(null, SLOT_NAME_TABLE_BUSY) : tbodyTrClass],\n          attrs: isFunction(tbodyTrAttr) ?\n          /* istanbul ignore next */\n          tbodyTrAttr(null, SLOT_NAME_TABLE_BUSY) : tbodyTrAttr,\n          key: 'table-busy-slot'\n        }, [h(BTd, {\n          props: {\n            colspan: this.computedFields.length || null\n          }\n        }, [this.normalizeSlot(SLOT_NAME_TABLE_BUSY)])]);\n      } // We return `null` here so that we can determine if we need to\n      // render the table items rows or not\n\n\n      return null;\n    }\n  }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_EMPTYFILTERED, SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Props ---\n\nexport var props = {\n  emptyFilteredHtml: makeProp(PROP_TYPE_STRING),\n  emptyFilteredText: makeProp(PROP_TYPE_STRING, 'There are no records matching your request'),\n  emptyHtml: makeProp(PROP_TYPE_STRING),\n  emptyText: makeProp(PROP_TYPE_STRING, 'There are no records to show'),\n  showEmpty: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var emptyMixin = Vue.extend({\n  props: props,\n  methods: {\n    renderEmpty: function renderEmpty() {\n      var items = this.computedItems;\n      var h = this.$createElement;\n      var $empty = h();\n\n      if (this.showEmpty && (!items || items.length === 0) && !(this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY))) {\n        var fields = this.computedFields,\n            isFiltered = this.isFiltered,\n            emptyText = this.emptyText,\n            emptyHtml = this.emptyHtml,\n            emptyFilteredText = this.emptyFilteredText,\n            emptyFilteredHtml = this.emptyFilteredHtml,\n            tbodyTrClass = this.tbodyTrClass,\n            tbodyTrAttr = this.tbodyTrAttr;\n        $empty = this.normalizeSlot(isFiltered ? SLOT_NAME_EMPTYFILTERED : SLOT_NAME_EMPTY, {\n          emptyFilteredHtml: emptyFilteredHtml,\n          emptyFilteredText: emptyFilteredText,\n          emptyHtml: emptyHtml,\n          emptyText: emptyText,\n          fields: fields,\n          // Not sure why this is included, as it will always be an empty array\n          items: items\n        });\n\n        if (!$empty) {\n          $empty = h('div', {\n            class: ['text-center', 'my-2'],\n            domProps: isFiltered ? htmlOrText(emptyFilteredHtml, emptyFilteredText) : htmlOrText(emptyHtml, emptyText)\n          });\n        }\n\n        $empty = h(BTd, {\n          props: {\n            colspan: fields.length || null\n          }\n        }, [h('div', {\n          attrs: {\n            role: 'alert',\n            'aria-live': 'polite'\n          }\n        }, [$empty])]);\n        $empty = h(BTr, {\n          staticClass: 'b-table-empty-row',\n          class: [isFunction(tbodyTrClass) ?\n          /* istanbul ignore next */\n          tbodyTrClass(null, 'row-empty') : tbodyTrClass],\n          attrs: isFunction(tbodyTrAttr) ?\n          /* istanbul ignore next */\n          tbodyTrAttr(null, 'row-empty') : tbodyTrAttr,\n          key: isFiltered ? 'b-empty-filtered-row' : 'b-empty-row'\n        }, [$empty]);\n      }\n\n      return $empty;\n    }\n  }\n});","import { isDate, isObject, isUndefinedOrNull } from './inspect';\nimport { keys } from './object';\nimport { toString } from './string'; // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n//   ex:\n//     { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n//   becomes\n//     'one 3 2 zzz 10 12 11'\n//\n// Strings are returned as-is\n// Numbers get converted to string\n// `null` and `undefined` values are filtered out\n// Dates are converted to their native string format\n\nexport var stringifyObjectValues = function stringifyObjectValues(value) {\n  if (isUndefinedOrNull(value)) {\n    return '';\n  } // Arrays are also object, and keys just returns the array indexes\n  // Date objects we convert to strings\n\n\n  if (isObject(value) && !isDate(value)) {\n    return keys(value).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n    .map(function (k) {\n      return stringifyObjectValues(value[k]);\n    }).filter(function (v) {\n      return !!v;\n    }) // Ignore empty strings\n    .join(' ');\n  }\n\n  return toString(value);\n};","import { arrayIncludes } from '../../../utils/array';\nimport { isArray, isFunction } from '../../../utils/inspect';\nimport { clone, keys, pick } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Return a copy of a row after all reserved fields have been filtered out\n\nexport var sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n  var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  // We first need to format the row based on the field configurations\n  // This ensures that we add formatted values for keys that may not\n  // exist in the row itself\n  var formattedRow = keys(fieldsObj).reduce(function (result, key) {\n    var field = fieldsObj[key];\n    var filterByFormatted = field.filterByFormatted;\n    var formatter = isFunction(filterByFormatted) ?\n    /* istanbul ignore next */\n    filterByFormatted : filterByFormatted ?\n    /* istanbul ignore next */\n    field.formatter : null;\n\n    if (isFunction(formatter)) {\n      result[key] = formatter(row[key], key, row);\n    }\n\n    return result;\n  }, clone(row)); // Determine the allowed keys:\n  //   - Ignore special fields that start with `_`\n  //   - Ignore fields in the `ignoreFields` array\n  //   - Include only fields in the `includeFields` array\n\n  var allowedKeys = keys(formattedRow).filter(function (key) {\n    return !IGNORED_FIELD_KEYS[key] && !(isArray(ignoreFields) && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) && !(isArray(includeFields) && includeFields.length > 0 && !arrayIncludes(includeFields, key));\n  });\n  return pick(formattedRow, allowedKeys);\n};","import { isObject } from '../../../utils/inspect';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\nimport { sanitizeRow } from './sanitize-row'; // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nexport var stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n  return isObject(row) ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj)) :\n  /* istanbul ignore next */\n  '';\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_FILTERED } from '../../../constants/events';\nimport { PROP_TYPE_REG_EXP, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_ARRAY, PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { RX_DIGITS, RX_SPACES } from '../../../constants/regex';\nimport { concat } from '../../../utils/array';\nimport { cloneDeep } from '../../../utils/clone-deep';\nimport { identity } from '../../../utils/identity';\nimport { isFunction, isString, isRegExp } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { toInteger } from '../../../utils/number';\nimport { hasPropFunction, makeProp } from '../../../utils/props';\nimport { escapeRegExp } from '../../../utils/string';\nimport { warn } from '../../../utils/warn';\nimport { stringifyRecordValues } from './stringify-record-values'; // --- Constants ---\n\nvar DEBOUNCE_DEPRECATED_MSG = 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"<b-form-input>\" instead.'; // --- Props ---\n\nexport var props = {\n  filter: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_REG_EXP])),\n  filterDebounce: makeProp(PROP_TYPE_NUMBER_STRING, 0, function (value) {\n    return RX_DIGITS.test(String(value));\n  }),\n  filterFunction: makeProp(PROP_TYPE_FUNCTION),\n  filterIgnoredFields: makeProp(PROP_TYPE_ARRAY, []),\n  filterIncludedFields: makeProp(PROP_TYPE_ARRAY, [])\n}; // --- Mixin ---\n// @vue/component\n\nexport var filteringMixin = Vue.extend({\n  props: props,\n  data: function data() {\n    return {\n      // Flag for displaying which empty slot to show and some event triggering\n      isFiltered: false,\n      // Where we store the copy of the filter criteria after debouncing\n      // We pre-set it with the sanitized filter value\n      localFilter: this.filterSanitize(this.filter)\n    };\n  },\n  computed: {\n    computedFilterIgnored: function computedFilterIgnored() {\n      return concat(this.filterIgnoredFields || []).filter(identity);\n    },\n    computedFilterIncluded: function computedFilterIncluded() {\n      return concat(this.filterIncludedFields || []).filter(identity);\n    },\n    computedFilterDebounce: function computedFilterDebounce() {\n      var ms = toInteger(this.filterDebounce, 0);\n      /* istanbul ignore next */\n\n      if (ms > 0) {\n        warn(DEBOUNCE_DEPRECATED_MSG, NAME_TABLE);\n      }\n\n      return ms;\n    },\n    localFiltering: function localFiltering() {\n      return this.hasProvider ? !!this.noProviderFiltering : true;\n    },\n    // For watching changes to `filteredItems` vs `localItems`\n    filteredCheck: function filteredCheck() {\n      var filteredItems = this.filteredItems,\n          localItems = this.localItems,\n          localFilter = this.localFilter;\n      return {\n        filteredItems: filteredItems,\n        localItems: localItems,\n        localFilter: localFilter\n      };\n    },\n    // Sanitized/normalize filter-function prop\n    localFilterFn: function localFilterFn() {\n      // Return `null` to signal to use internal filter function\n      var filterFunction = this.filterFunction;\n      return hasPropFunction(filterFunction) ? filterFunction : null;\n    },\n    // Returns the records in `localItems` that match the filter criteria\n    // Returns the original `localItems` array if not sorting\n    filteredItems: function filteredItems() {\n      // Note the criteria is debounced and sanitized\n      var items = this.localItems,\n          criteria = this.localFilter; // Resolve the filtering function, when requested\n      // We prefer the provided filtering function and fallback to the internal one\n      // When no filtering criteria is specified the filtering factories will return `null`\n\n      var filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null; // We only do local filtering when requested and there are records to filter\n\n      return filterFn && items.length > 0 ? items.filter(filterFn) : items;\n    }\n  },\n  watch: {\n    // Watch for debounce being set to 0\n    computedFilterDebounce: function computedFilterDebounce(newValue) {\n      if (!newValue && this.$_filterTimer) {\n        this.clearFilterTimer();\n        this.localFilter = this.filterSanitize(this.filter);\n      }\n    },\n    // Watch for changes to the filter criteria, and debounce if necessary\n    filter: {\n      // We need a deep watcher in case the user passes\n      // an object when using `filter-function`\n      deep: true,\n      handler: function handler(newCriteria) {\n        var _this = this;\n\n        var timeout = this.computedFilterDebounce;\n        this.clearFilterTimer();\n\n        if (timeout && timeout > 0) {\n          // If we have a debounce time, delay the update of `localFilter`\n          this.$_filterTimer = setTimeout(function () {\n            _this.localFilter = _this.filterSanitize(newCriteria);\n          }, timeout);\n        } else {\n          // Otherwise, immediately update `localFilter` with `newFilter` value\n          this.localFilter = this.filterSanitize(newCriteria);\n        }\n      }\n    },\n    // Watch for changes to the filter criteria and filtered items vs `localItems`\n    // Set visual state and emit events as required\n    filteredCheck: function filteredCheck(_ref) {\n      var filteredItems = _ref.filteredItems,\n          localFilter = _ref.localFilter;\n      // Determine if the dataset is filtered or not\n      var isFiltered = false;\n\n      if (!localFilter) {\n        // If filter criteria is falsey\n        isFiltered = false;\n      } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n        // If filter criteria is an empty array or object\n        isFiltered = false;\n      } else if (localFilter) {\n        // If filter criteria is truthy\n        isFiltered = true;\n      }\n\n      if (isFiltered) {\n        this.$emit(EVENT_NAME_FILTERED, filteredItems, filteredItems.length);\n      }\n\n      this.isFiltered = isFiltered;\n    },\n    isFiltered: function isFiltered(newValue, oldValue) {\n      if (newValue === false && oldValue === true) {\n        // We need to emit a filtered event if `isFiltered` transitions from `true` to\n        // `false` so that users can update their pagination controls\n        var localItems = this.localItems;\n        this.$emit(EVENT_NAME_FILTERED, localItems, localItems.length);\n      }\n    }\n  },\n  created: function created() {\n    var _this2 = this;\n\n    // Create private non-reactive props\n    this.$_filterTimer = null; // If filter is \"pre-set\", set the criteria\n    // This will trigger any watchers/dependents\n    // this.localFilter = this.filterSanitize(this.filter)\n    // Set the initial filtered state in a `$nextTick()` so that\n    // we trigger a filtered event if needed\n\n    this.$nextTick(function () {\n      _this2.isFiltered = Boolean(_this2.localFilter);\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearFilterTimer();\n  },\n  methods: {\n    clearFilterTimer: function clearFilterTimer() {\n      clearTimeout(this.$_filterTimer);\n      this.$_filterTimer = null;\n    },\n    filterSanitize: function filterSanitize(criteria) {\n      // Sanitizes filter criteria based on internal or external filtering\n      if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {\n        // If using internal filter function, which only accepts string or RegExp,\n        // return '' to signify no filter\n        return '';\n      } // Could be a string, object or array, as needed by external filter function\n      // We use `cloneDeep` to ensure we have a new copy of an object or array\n      // without Vue's reactive observers\n\n\n      return cloneDeep(criteria);\n    },\n    // Filter Function factories\n    filterFnFactory: function filterFnFactory(filterFn, criteria) {\n      // Wrapper factory for external filter functions\n      // Wrap the provided filter-function and return a new function\n      // Returns `null` if no filter-function defined or if criteria is falsey\n      // Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`\n      // we have it passed, so that the caller computed prop will be reactive to changes\n      // in the original filter-function (as this routine is a method)\n      if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n        return null;\n      } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n      var fn = function fn(item) {\n        // Generated function returns true if the criteria matches part\n        // of the serialized data, otherwise false\n        return filterFn(item, criteria);\n      }; // Return the wrapped function\n\n\n      return fn;\n    },\n    defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n      var _this3 = this;\n\n      // Generates the default filter function, using the given filter criteria\n      // Returns `null` if no criteria or criteria format not supported\n      if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n        // Built in filter can only support strings or RegExp criteria (at the moment)\n        return null;\n      } // Build the RegExp needed for filtering\n\n\n      var regExp = criteria;\n\n      if (isString(regExp)) {\n        // Escape special RegExp characters in the string and convert contiguous\n        // whitespace to \\s+ matches\n        var pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n        // to find the value once in the string)\n\n        regExp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n      } // Generate the wrapped filter test function to use\n\n\n      var fn = function fn(item) {\n        // This searches all row values (and sub property values) in the entire (excluding\n        // special `_` prefixed keys), because we convert the record to a space-separated\n        // string containing all the value properties (recursively), even ones that are\n        // not visible (not specified in this.fields)\n        // Users can ignore filtering on specific fields, or on only certain fields,\n        // and can optionall specify searching results of fields with formatter\n        //\n        // TODO: Enable searching on scoped slots (optional, as it will be SLOW)\n        //\n        // Generated function returns true if the criteria matches part of\n        // the serialized data, otherwise false\n        //\n        // We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag\n        regExp.lastIndex = 0;\n        return regExp.test(stringifyRecordValues(item, _this3.computedFilterIgnored, _this3.computedFilterIncluded, _this3.computedFieldsObj));\n      }; // Return the generated function\n\n\n      return fn;\n    }\n  }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { mathMax } from '../../../utils/math';\nimport { toInteger } from '../../../utils/number';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n  currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n  perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)\n}; // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n  props: props,\n  computed: {\n    localPaging: function localPaging() {\n      return this.hasProvider ? !!this.noProviderPaging : true;\n    },\n    paginatedItems: function paginatedItems() {\n      var items = this.sortedItems || this.filteredItems || this.localItems || [];\n      var currentPage = mathMax(toInteger(this.currentPage, 1), 1);\n      var perPage = mathMax(toInteger(this.perPage, 0), 0); // Apply local pagination\n\n      if (this.localPaging && perPage) {\n        // Grab the current page of data (which may be past filtered items limit)\n        items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n      } // Return the items to display in the table\n\n\n      return items;\n    }\n  }\n});","import { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_REFRESH, EVENT_NAME_REFRESHED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { getRootActionEventName, getRootEventName } from '../../../utils/events';\nimport { isArray, isFunction, isPromise } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { warn } from '../../../utils/warn';\nimport { listenOnRootMixin } from '../../../mixins/listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_REFRESHED = getRootEventName(NAME_TABLE, EVENT_NAME_REFRESHED);\nvar ROOT_ACTION_EVENT_NAME_REFRESH = getRootActionEventName(NAME_TABLE, EVENT_NAME_REFRESH); // --- Props ---\n\nexport var props = {\n  // Passed to the context object\n  // Not used by `<b-table>` directly\n  apiUrl: makeProp(PROP_TYPE_STRING),\n  // Adds in 'Function' support\n  items: makeProp(PROP_TYPE_ARRAY_FUNCTION, []),\n  noProviderFiltering: makeProp(PROP_TYPE_BOOLEAN, false),\n  noProviderPaging: makeProp(PROP_TYPE_BOOLEAN, false),\n  noProviderSorting: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var providerMixin = Vue.extend({\n  mixins: [listenOnRootMixin],\n  props: props,\n  computed: {\n    hasProvider: function hasProvider() {\n      return isFunction(this.items);\n    },\n    providerTriggerContext: function providerTriggerContext() {\n      // Used to trigger the provider function via a watcher. Only the fields that\n      // are needed for triggering a provider update are included. Note that the\n      // regular this.context is sent to the provider during fetches though, as they\n      // may need all the prop info.\n      var ctx = {\n        apiUrl: this.apiUrl,\n        filter: null,\n        sortBy: null,\n        sortDesc: null,\n        perPage: null,\n        currentPage: null\n      };\n\n      if (!this.noProviderFiltering) {\n        // Either a string, or could be an object or array.\n        ctx.filter = this.localFilter;\n      }\n\n      if (!this.noProviderSorting) {\n        ctx.sortBy = this.localSortBy;\n        ctx.sortDesc = this.localSortDesc;\n      }\n\n      if (!this.noProviderPaging) {\n        ctx.perPage = this.perPage;\n        ctx.currentPage = this.currentPage;\n      }\n\n      return clone(ctx);\n    }\n  },\n  watch: {\n    // Provider update triggering\n    items: function items(newValue) {\n      // If a new provider has been specified, trigger an update\n      if (this.hasProvider || isFunction(newValue)) {\n        this.$nextTick(this._providerUpdate);\n      }\n    },\n    providerTriggerContext: function providerTriggerContext(newValue, oldValue) {\n      // Trigger the provider to update as the relevant context values have changed.\n      if (!looseEqual(newValue, oldValue)) {\n        this.$nextTick(this._providerUpdate);\n      }\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    // Call the items provider if necessary\n    if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n      // Fetch on mount if localItems is empty\n      this._providerUpdate();\n    } // Listen for global messages to tell us to force refresh the table\n\n\n    this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REFRESH, function (id) {\n      if (id === _this.id || id === _this) {\n        _this.refresh();\n      }\n    });\n  },\n  methods: {\n    refresh: function refresh() {\n      var items = this.items,\n          refresh = this.refresh; // Public Method: Force a refresh of the provider function\n\n      this.$off(EVENT_NAME_REFRESHED, refresh);\n\n      if (this.computedBusy) {\n        // Can't force an update when forced busy by user (busy prop === true)\n        if (this.localBusy && this.hasProvider) {\n          // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n          this.$on(EVENT_NAME_REFRESHED, refresh);\n        }\n      } else {\n        this.clearSelected();\n\n        if (this.hasProvider) {\n          this.$nextTick(this._providerUpdate);\n        } else {\n          /* istanbul ignore next */\n          this.localItems = isArray(items) ? items.slice() : [];\n        }\n      }\n    },\n    // Provider related methods\n    _providerSetLocal: function _providerSetLocal(items) {\n      this.localItems = isArray(items) ? items.slice() : [];\n      this.localBusy = false;\n      this.$emit(EVENT_NAME_REFRESHED); // New root emit\n\n      if (this.id) {\n        this.emitOnRoot(ROOT_EVENT_NAME_REFRESHED, this.id);\n      }\n    },\n    _providerUpdate: function _providerUpdate() {\n      var _this2 = this;\n\n      // Refresh the provider function items.\n      if (!this.hasProvider) {\n        // Do nothing if no provider\n        return;\n      } // If table is busy, wait until refreshed before calling again\n\n\n      if (this.computedBusy) {\n        // Schedule a new refresh once `refreshed` is emitted\n        this.$nextTick(this.refresh);\n        return;\n      } // Set internal busy state\n\n\n      this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n      this.$nextTick(function () {\n        try {\n          // Call provider function passing it the context and optional callback\n          var data = _this2.items(_this2.context, _this2._providerSetLocal);\n\n          if (isPromise(data)) {\n            // Provider returned Promise\n            data.then(function (items) {\n              // Provider resolved with items\n              _this2._providerSetLocal(items);\n            });\n          } else if (isArray(data)) {\n            // Provider returned Array data\n            _this2._providerSetLocal(data);\n          } else {\n            /* istanbul ignore if */\n            if (_this2.items.length !== 2) {\n              // Check number of arguments provider function requested\n              // Provider not using callback (didn't request second argument), so we clear\n              // busy state as most likely there was an error in the provider function\n\n              /* istanbul ignore next */\n              warn(\"Provider function didn't request callback and did not return a promise or data.\", NAME_TABLE);\n              _this2.localBusy = false;\n            }\n          }\n        } catch (e)\n        /* istanbul ignore next */\n        {\n          // Provider function borked on us, so we spew out a warning\n          // and clear the busy state\n          warn(\"Provider function error [\".concat(e.name, \"] \").concat(e.message, \".\"), NAME_TABLE);\n          _this2.localBusy = false;\n\n          _this2.$off(EVENT_NAME_REFRESHED, _this2.refresh);\n        }\n      });\n    }\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED, EVENT_NAME_FILTERED, EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_SELECTED } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes, createArray } from '../../../utils/array';\nimport { identity } from '../../../utils/identity';\nimport { isArray, isNumber } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax, mathMin } from '../../../utils/math';\nimport { makeProp } from '../../../utils/props';\nimport { sanitizeRow } from './sanitize-row'; // --- Constants ---\n\nvar SELECT_MODES = ['range', 'multi', 'single']; // --- Props ---\n\nexport var props = {\n  // Disable use of click handlers for row selection\n  noSelectOnClick: makeProp(PROP_TYPE_BOOLEAN, false),\n  selectMode: makeProp(PROP_TYPE_STRING, 'multi', function (value) {\n    return arrayIncludes(SELECT_MODES, value);\n  }),\n  selectable: makeProp(PROP_TYPE_BOOLEAN, false),\n  selectedVariant: makeProp(PROP_TYPE_STRING, 'active')\n}; // --- Mixin ---\n// @vue/component\n\nexport var selectableMixin = Vue.extend({\n  props: props,\n  data: function data() {\n    return {\n      selectedRows: [],\n      selectedLastRow: -1\n    };\n  },\n  computed: {\n    isSelectable: function isSelectable() {\n      return this.selectable && this.selectMode;\n    },\n    hasSelectableRowClick: function hasSelectableRowClick() {\n      return this.isSelectable && !this.noSelectOnClick;\n    },\n    supportsSelectableRows: function supportsSelectableRows() {\n      return true;\n    },\n    selectableHasSelection: function selectableHasSelection() {\n      var selectedRows = this.selectedRows;\n      return this.isSelectable && selectedRows && selectedRows.length > 0 && selectedRows.some(identity);\n    },\n    selectableIsMultiSelect: function selectableIsMultiSelect() {\n      return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode);\n    },\n    selectableTableClasses: function selectableTableClasses() {\n      var _ref;\n\n      var isSelectable = this.isSelectable;\n      return _ref = {\n        'b-table-selectable': isSelectable\n      }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _defineProperty(_ref, 'b-table-selectable-no-click', isSelectable && !this.hasSelectableRowClick), _ref;\n    },\n    selectableTableAttrs: function selectableTableAttrs() {\n      return {\n        // TODO:\n        //   Should this attribute not be included when no-select-on-click is set\n        //   since this attribute implies keyboard navigation?\n        'aria-multiselectable': !this.isSelectable ? null : this.selectableIsMultiSelect ? 'true' : 'false'\n      };\n    }\n  },\n  watch: {\n    computedItems: function computedItems(newValue, oldValue) {\n      // Reset for selectable\n      var equal = false;\n\n      if (this.isSelectable && this.selectedRows.length > 0) {\n        // Quick check against array length\n        equal = isArray(newValue) && isArray(oldValue) && newValue.length === oldValue.length;\n\n        for (var i = 0; equal && i < newValue.length; i++) {\n          // Look for the first non-loosely equal row, after ignoring reserved fields\n          equal = looseEqual(sanitizeRow(newValue[i]), sanitizeRow(oldValue[i]));\n        }\n      }\n\n      if (!equal) {\n        this.clearSelected();\n      }\n    },\n    selectable: function selectable(newValue) {\n      this.clearSelected();\n      this.setSelectionHandlers(newValue);\n    },\n    selectMode: function selectMode() {\n      this.clearSelected();\n    },\n    hasSelectableRowClick: function hasSelectableRowClick(newValue) {\n      this.clearSelected();\n      this.setSelectionHandlers(!newValue);\n    },\n    selectedRows: function selectedRows(_selectedRows, oldValue) {\n      var _this = this;\n\n      if (this.isSelectable && !looseEqual(_selectedRows, oldValue)) {\n        var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n        _selectedRows.forEach(function (v, idx) {\n          if (v) {\n            items.push(_this.computedItems[idx]);\n          }\n        });\n\n        this.$emit(EVENT_NAME_ROW_SELECTED, items);\n      }\n    }\n  },\n  beforeMount: function beforeMount() {\n    // Set up handlers if needed\n    if (this.isSelectable) {\n      this.setSelectionHandlers(true);\n    }\n  },\n  methods: {\n    // Public methods\n    selectRow: function selectRow(index) {\n      // Select a particular row (indexed based on computedItems)\n      if (this.isSelectable && isNumber(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n        var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n        selectedRows[index] = true;\n        this.selectedLastClicked = -1;\n        this.selectedRows = selectedRows;\n      }\n    },\n    unselectRow: function unselectRow(index) {\n      // Un-select a particular row (indexed based on `computedItems`)\n      if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n        var selectedRows = this.selectedRows.slice();\n        selectedRows[index] = false;\n        this.selectedLastClicked = -1;\n        this.selectedRows = selectedRows;\n      }\n    },\n    selectAllRows: function selectAllRows() {\n      var length = this.computedItems.length;\n\n      if (this.isSelectable && length > 0) {\n        this.selectedLastClicked = -1;\n        this.selectedRows = this.selectableIsMultiSelect ? createArray(length, true) : [true];\n      }\n    },\n    isRowSelected: function isRowSelected(index) {\n      // Determine if a row is selected (indexed based on `computedItems`)\n      return !!(isNumber(index) && this.selectedRows[index]);\n    },\n    clearSelected: function clearSelected() {\n      // Clear any active selected row(s)\n      this.selectedLastClicked = -1;\n      this.selectedRows = [];\n    },\n    // Internal private methods\n    selectableRowClasses: function selectableRowClasses(index) {\n      if (this.isSelectable && this.isRowSelected(index)) {\n        var variant = this.selectedVariant;\n        return _defineProperty({\n          'b-table-row-selected': true\n        }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n      }\n\n      return {};\n    },\n    selectableRowAttrs: function selectableRowAttrs(index) {\n      return {\n        'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n      };\n    },\n    setSelectionHandlers: function setSelectionHandlers(on) {\n      var method = on && !this.noSelectOnClick ? '$on' : '$off'; // Handle row-clicked event\n\n      this[method](EVENT_NAME_ROW_CLICKED, this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n      this[method](EVENT_NAME_FILTERED, this.clearSelected);\n      this[method](EVENT_NAME_CONTEXT_CHANGED, this.clearSelected);\n    },\n    selectionHandler: function selectionHandler(item, index, event) {\n      /* istanbul ignore if: should never happen */\n      if (!this.isSelectable || this.noSelectOnClick) {\n        // Don't do anything if table is not in selectable mode\n        this.clearSelected();\n        return;\n      }\n\n      var selectMode = this.selectMode,\n          selectedLastRow = this.selectedLastRow;\n      var selectedRows = this.selectedRows.slice();\n      var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n      if (selectMode === 'single') {\n        selectedRows = [];\n      } else if (selectMode === 'range') {\n        if (selectedLastRow > -1 && event.shiftKey) {\n          // range\n          for (var idx = mathMin(selectedLastRow, index); idx <= mathMax(selectedLastRow, index); idx++) {\n            selectedRows[idx] = true;\n          }\n\n          selected = true;\n        } else {\n          if (!(event.ctrlKey || event.metaKey)) {\n            // Clear range selection if any\n            selectedRows = [];\n            selected = true;\n          }\n\n          this.selectedLastRow = selected ? index : -1;\n        }\n      }\n\n      selectedRows[index] = selected;\n      this.selectedRows = selectedRows;\n    }\n  }\n});","var _props, _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED, EVENT_NAME_SORT_CHANGED, MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { stableSort } from '../../../utils/stable-sort';\nimport { trim } from '../../../utils/string';\nimport { defaultSortCompare } from './default-sort-compare'; // --- Constants ---\n\nvar MODEL_PROP_NAME_SORT_BY = 'sortBy';\nvar MODEL_EVENT_NAME_SORT_BY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_BY;\nvar MODEL_PROP_NAME_SORT_DESC = 'sortDesc';\nvar MODEL_EVENT_NAME_SORT_DESC = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_DESC;\nvar SORT_DIRECTION_ASC = 'asc';\nvar SORT_DIRECTION_DESC = 'desc';\nvar SORT_DIRECTION_LAST = 'last';\nvar SORT_DIRECTIONS = [SORT_DIRECTION_ASC, SORT_DIRECTION_DESC, SORT_DIRECTION_LAST]; // --- Props ---\n\nexport var props = (_props = {\n  labelSortAsc: makeProp(PROP_TYPE_STRING, 'Click to sort Ascending'),\n  labelSortClear: makeProp(PROP_TYPE_STRING, 'Click to clear sorting'),\n  labelSortDesc: makeProp(PROP_TYPE_STRING, 'Click to sort Descending'),\n  noFooterSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n  noLocalSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Another prop that should have had a better name\n  // It should be `noSortClear` (on non-sortable headers)\n  // We will need to make sure the documentation is clear on what\n  // this prop does (as well as in the code for future reference)\n  noSortReset: makeProp(PROP_TYPE_BOOLEAN, false)\n}, _defineProperty(_props, MODEL_PROP_NAME_SORT_BY, makeProp(PROP_TYPE_STRING)), _defineProperty(_props, \"sortCompare\", makeProp(PROP_TYPE_FUNCTION)), _defineProperty(_props, \"sortCompareLocale\", makeProp(PROP_TYPE_ARRAY_STRING)), _defineProperty(_props, \"sortCompareOptions\", makeProp(PROP_TYPE_OBJECT, {\n  numeric: true\n})), _defineProperty(_props, MODEL_PROP_NAME_SORT_DESC, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortDirection\", makeProp(PROP_TYPE_STRING, SORT_DIRECTION_ASC, function (value) {\n  return arrayIncludes(SORT_DIRECTIONS, value);\n})), _defineProperty(_props, \"sortIconLeft\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortNullLast\", makeProp(PROP_TYPE_BOOLEAN, false)), _props); // --- Mixin ---\n// @vue/component\n\nexport var sortingMixin = Vue.extend({\n  props: props,\n  data: function data() {\n    return {\n      localSortBy: this[MODEL_PROP_NAME_SORT_BY] || '',\n      localSortDesc: this[MODEL_PROP_NAME_SORT_DESC] || false\n    };\n  },\n  computed: {\n    localSorting: function localSorting() {\n      return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n    },\n    isSortable: function isSortable() {\n      return this.computedFields.some(function (f) {\n        return f.sortable;\n      });\n    },\n    // Sorts the filtered items and returns a new array of the sorted items\n    // When not sorted, the original items array will be returned\n    sortedItems: function sortedItems() {\n      var sortBy = this.localSortBy,\n          sortDesc = this.localSortDesc,\n          locale = this.sortCompareLocale,\n          nullLast = this.sortNullLast,\n          sortCompare = this.sortCompare,\n          localSorting = this.localSorting;\n      var items = (this.filteredItems || this.localItems || []).slice();\n\n      var localeOptions = _objectSpread(_objectSpread({}, this.sortCompareOptions), {}, {\n        usage: 'sort'\n      });\n\n      if (sortBy && localSorting) {\n        var field = this.computedFieldsObj[sortBy] || {};\n        var sortByFormatted = field.sortByFormatted;\n        var formatter = isFunction(sortByFormatted) ?\n        /* istanbul ignore next */\n        sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n        return stableSort(items, function (a, b) {\n          var result = null; // Call user provided `sortCompare` routine first\n\n          if (isFunction(sortCompare)) {\n            // TODO:\n            //   Change the `sortCompare` signature to the one of `defaultSortCompare`\n            //   with the next major version bump\n            result = sortCompare(a, b, sortBy, sortDesc, formatter, localeOptions, locale);\n          } // Fallback to built-in `defaultSortCompare` if `sortCompare`\n          // is not defined or returns `null`/`false`\n\n\n          if (isUndefinedOrNull(result) || result === false) {\n            result = defaultSortCompare(a, b, {\n              sortBy: sortBy,\n              formatter: formatter,\n              locale: locale,\n              localeOptions: localeOptions,\n              nullLast: nullLast\n            });\n          } // Negate result if sorting in descending order\n\n\n          return (result || 0) * (sortDesc ? -1 : 1);\n        });\n      }\n\n      return items;\n    }\n  },\n  watch: (_watch = {\n    /* istanbul ignore next: pain in the butt to test */\n    isSortable: function isSortable(newValue) {\n      if (newValue) {\n        if (this.isSortable) {\n          this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n        }\n      } else {\n        this.$off(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n      }\n    }\n  }, _defineProperty(_watch, MODEL_PROP_NAME_SORT_DESC, function (newValue) {\n    /* istanbul ignore next */\n    if (newValue === this.localSortDesc) {\n      return;\n    }\n\n    this.localSortDesc = newValue || false;\n  }), _defineProperty(_watch, MODEL_PROP_NAME_SORT_BY, function (newValue) {\n    /* istanbul ignore next */\n    if (newValue === this.localSortBy) {\n      return;\n    }\n\n    this.localSortBy = newValue || '';\n  }), _defineProperty(_watch, \"localSortDesc\", function localSortDesc(newValue, oldValue) {\n    // Emit update to sort-desc.sync\n    if (newValue !== oldValue) {\n      this.$emit(MODEL_EVENT_NAME_SORT_DESC, newValue);\n    }\n  }), _defineProperty(_watch, \"localSortBy\", function localSortBy(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.$emit(MODEL_EVENT_NAME_SORT_BY, newValue);\n    }\n  }), _watch),\n  created: function created() {\n    if (this.isSortable) {\n      this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n    }\n  },\n  methods: {\n    // Handlers\n    // Need to move from thead-mixin\n    handleSort: function handleSort(key, field, event, isFoot) {\n      var _this = this;\n\n      if (!this.isSortable) {\n        /* istanbul ignore next */\n        return;\n      }\n\n      if (isFoot && this.noFooterSorting) {\n        return;\n      } // TODO: make this tri-state sorting\n      // cycle desc => asc => none => desc => ...\n\n\n      var sortChanged = false;\n\n      var toggleLocalSortDesc = function toggleLocalSortDesc() {\n        var sortDirection = field.sortDirection || _this.sortDirection;\n\n        if (sortDirection === SORT_DIRECTION_ASC) {\n          _this.localSortDesc = false;\n        } else if (sortDirection === SORT_DIRECTION_DESC) {\n          _this.localSortDesc = true;\n        } else {// sortDirection === 'last'\n          // Leave at last sort direction from previous column\n        }\n      };\n\n      if (field.sortable) {\n        var sortKey = !this.localSorting && field.sortKey ? field.sortKey : key;\n\n        if (this.localSortBy === sortKey) {\n          // Change sorting direction on current column\n          this.localSortDesc = !this.localSortDesc;\n        } else {\n          // Start sorting this column ascending\n          this.localSortBy = sortKey; // this.localSortDesc = false\n\n          toggleLocalSortDesc();\n        }\n\n        sortChanged = true;\n      } else if (this.localSortBy && !this.noSortReset) {\n        this.localSortBy = '';\n        toggleLocalSortDesc();\n        sortChanged = true;\n      }\n\n      if (sortChanged) {\n        // Sorting parameters changed\n        this.$emit(EVENT_NAME_SORT_CHANGED, this.context);\n      }\n    },\n    // methods to compute classes and attrs for thead>th cells\n    sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n      return {\n        // If sortable and sortIconLeft are true, then place sort icon on the left\n        'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n      };\n    },\n    sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n      if (!this.isSortable || isFoot && this.noFooterSorting) {\n        // No attributes if not a sortable table\n        return {};\n      }\n\n      var sortable = field.sortable; // Assemble the aria-sort attribute value\n\n      var ariaSort = sortable && this.localSortBy === key ? this.localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attribute\n\n      return {\n        'aria-sort': ariaSort\n      };\n    },\n    sortTheadThLabel: function sortTheadThLabel(key, field, isFoot) {\n      // A label to be placed in an `.sr-only` element in the header cell\n      if (!this.isSortable || isFoot && this.noFooterSorting) {\n        // No label if not a sortable table\n        return null;\n      }\n\n      var sortable = field.sortable; // The correctness of these labels is very important for screen-reader users.\n\n      var labelSorting = '';\n\n      if (sortable) {\n        if (this.localSortBy === key) {\n          // currently sorted sortable column.\n          labelSorting = this.localSortDesc ? this.labelSortAsc : this.labelSortDesc;\n        } else {\n          // Not currently sorted sortable column.\n          // Not using nested ternary's here for clarity/readability\n          // Default for ariaLabel\n          labelSorting = this.localSortDesc ? this.labelSortDesc : this.labelSortAsc; // Handle sortDirection setting\n\n          var sortDirection = this.sortDirection || field.sortDirection;\n\n          if (sortDirection === SORT_DIRECTION_ASC) {\n            labelSorting = this.labelSortAsc;\n          } else if (sortDirection === SORT_DIRECTION_DESC) {\n            labelSorting = this.labelSortDesc;\n          }\n        }\n      } else if (!this.noSortReset) {\n        // Non sortable column\n        labelSorting = this.localSortBy ? this.labelSortClear : '';\n      } // Return the sr-only sort label or null if no label\n\n\n      return trim(labelSorting) || null;\n    }\n  }\n});","import { get } from '../../../utils/get';\nimport { isDate, isFunction, isNumber, isNumeric, isUndefinedOrNull } from '../../../utils/inspect';\nimport { toFloat } from '../../../utils/number';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\n\nvar normalizeValue = function normalizeValue(value) {\n  if (isUndefinedOrNull(value)) {\n    return '';\n  }\n\n  if (isNumeric(value)) {\n    return toFloat(value, value);\n  }\n\n  return value;\n}; // Default sort compare routine\n//\n// TODO:\n//   Add option to sort by multiple columns (tri-state per column,\n//   plus order of columns in sort) where `sortBy` could be an array\n//   of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n//   or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n//   Multisort will most likely be handled in `mixin-sort.js` by\n//   calling this method for each sortBy\n\n\nexport var defaultSortCompare = function defaultSortCompare(a, b) {\n  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n      _ref$sortBy = _ref.sortBy,\n      sortBy = _ref$sortBy === void 0 ? null : _ref$sortBy,\n      _ref$formatter = _ref.formatter,\n      formatter = _ref$formatter === void 0 ? null : _ref$formatter,\n      _ref$locale = _ref.locale,\n      locale = _ref$locale === void 0 ? undefined : _ref$locale,\n      _ref$localeOptions = _ref.localeOptions,\n      localeOptions = _ref$localeOptions === void 0 ? {} : _ref$localeOptions,\n      _ref$nullLast = _ref.nullLast,\n      nullLast = _ref$nullLast === void 0 ? false : _ref$nullLast;\n\n  // Get the value by `sortBy`\n  var aa = get(a, sortBy, null);\n  var bb = get(b, sortBy, null); // Apply user-provided formatter\n\n  if (isFunction(formatter)) {\n    aa = formatter(aa, sortBy, a);\n    bb = formatter(bb, sortBy, b);\n  } // Internally normalize value\n  // `null` / `undefined` => ''\n  // `'0'` => `0`\n\n\n  aa = normalizeValue(aa);\n  bb = normalizeValue(bb);\n\n  if (isDate(aa) && isDate(bb) || isNumber(aa) && isNumber(bb)) {\n    // Special case for comparing dates and numbers\n    // Internally dates are compared via their epoch number values\n    return aa < bb ? -1 : aa > bb ? 1 : 0;\n  } else if (nullLast && aa === '' && bb !== '') {\n    // Special case when sorting `null` / `undefined` / '' last\n    return 1;\n  } else if (nullLast && aa !== '' && bb === '') {\n    // Special case when sorting `null` / `undefined` / '' last\n    return -1;\n  } // Do localized string comparison\n\n\n  return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOptions);\n};","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TOP_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var topRowMixin = Vue.extend({\n  methods: {\n    renderTopRow: function renderTopRow() {\n      var fields = this.computedFields,\n          stacked = this.stacked,\n          tbodyTrClass = this.tbodyTrClass,\n          tbodyTrAttr = this.tbodyTrAttr;\n      var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n      // If in *always* stacked mode, we don't bother rendering the row\n\n      if (!this.hasNormalizedSlot(SLOT_NAME_TOP_ROW) || stacked === true || stacked === '') {\n        return h();\n      }\n\n      return h(BTr, {\n        staticClass: 'b-table-top-row',\n        class: [isFunction(tbodyTrClass) ? tbodyTrClass(null, 'row-top') : tbodyTrClass],\n        attrs: isFunction(tbodyTrAttr) ? tbodyTrAttr(null, 'row-top') : tbodyTrAttr,\n        key: 'b-top-row'\n      }, [this.normalizeSlot(SLOT_NAME_TOP_ROW, {\n        columns: fields.length,\n        fields: fields\n      })]);\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TABLE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { bottomRowMixin, props as bottomRowProps } from './helpers/mixin-bottom-row';\nimport { busyMixin, props as busyProps } from './helpers/mixin-busy';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { emptyMixin, props as emptyProps } from './helpers/mixin-empty';\nimport { filteringMixin, props as filteringProps } from './helpers/mixin-filtering';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { paginationMixin, props as paginationProps } from './helpers/mixin-pagination';\nimport { providerMixin, props as providerProps } from './helpers/mixin-provider';\nimport { selectableMixin, props as selectableProps } from './helpers/mixin-selectable';\nimport { sortingMixin, props as sortingProps } from './helpers/mixin-sorting';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead';\nimport { topRowMixin, props as topRowProps } from './helpers/mixin-top-row'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), bottomRowProps), busyProps), captionProps), colgroupProps), emptyProps), filteringProps), itemsProps), paginationProps), providerProps), selectableProps), sortingProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps), topRowProps)), NAME_TABLE); // --- Main component ---\n// @vue/component\n\nexport var BTable = /*#__PURE__*/Vue.extend({\n  name: NAME_TABLE,\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component\n  mixins: [// General mixins\n  attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n  itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n  stackedMixin, filteringMixin, sortingMixin, paginationMixin, captionMixin, colgroupMixin, selectableMixin, emptyMixin, topRowMixin, bottomRowMixin, busyMixin, providerMixin],\n  props: props // Render function is provided by `tableRendererMixin`\n\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TR } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar LIGHT = 'light';\nvar DARK = 'dark'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TR); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTr = /*#__PURE__*/Vue.extend({\n  name: NAME_TR,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide: function provide() {\n    return {\n      bvTableTr: this\n    };\n  },\n  inject: {\n    bvTableRowGroup: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return {};\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTbody: function inTbody() {\n      return this.bvTableRowGroup.isTbody;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inThead: function inThead() {\n      return this.bvTableRowGroup.isThead;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTfoot: function inTfoot() {\n      return this.bvTableRowGroup.isTfoot;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isDark: function isDark() {\n      return this.bvTableRowGroup.isDark;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isStacked: function isStacked() {\n      return this.bvTableRowGroup.isStacked;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isResponsive: function isResponsive() {\n      return this.bvTableRowGroup.isResponsive;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader: function isStickyHeader() {\n      return this.bvTableRowGroup.isStickyHeader;\n    },\n    // Sniffed by <b-tr> / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader: function hasStickyHeader() {\n      return !this.isStacked && this.bvTableRowGroup.hasStickyHeader;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    tableVariant: function tableVariant() {\n      return this.bvTableRowGroup.tableVariant;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    headVariant: function headVariant() {\n      return this.inThead ? this.bvTableRowGroup.headVariant : null;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    footVariant: function footVariant() {\n      return this.inTfoot ? this.bvTableRowGroup.footVariant : null;\n    },\n    isRowDark: function isRowDark() {\n      return this.headVariant === LIGHT || this.footVariant === LIGHT ?\n      /* istanbul ignore next */\n      false : this.headVariant === DARK || this.footVariant === DARK ?\n      /* istanbul ignore next */\n      true : this.isDark;\n    },\n    trClasses: function trClasses() {\n      var variant = this.variant;\n      return [variant ? \"\".concat(this.isRowDark ? 'bg' : 'table', \"-\").concat(variant) : null];\n    },\n    trAttrs: function trAttrs() {\n      return _objectSpread({\n        role: 'row'\n      }, this.bvAttrs);\n    }\n  },\n  render: function render(h) {\n    return h('tr', {\n      class: this.trClasses,\n      attrs: this.trAttrs,\n      // Pass native listeners to child\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_LIST_GROUP } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { isString } from '../../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  flush: makeProp(PROP_TYPE_BOOLEAN, false),\n  horizontal: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_LIST_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BListGroup = /*#__PURE__*/Vue.extend({\n  name: NAME_LIST_GROUP,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var horizontal = props.horizontal === '' ? true : props.horizontal;\n    horizontal = props.flush ? false : horizontal;\n    var componentData = {\n      staticClass: 'list-group',\n      class: _defineProperty({\n        'list-group-flush': props.flush,\n        'list-group-horizontal': horizontal === true\n      }, \"list-group-horizontal-\".concat(horizontal), isString(horizontal))\n    };\n    return h(props.tag, mergeData(data, componentData), children);\n  }\n});","// Mixin to determine if an event listener has been registered\n// either via `v-on:name` (in the parent) or programmatically\n// via `vm.$on('name', ...)`\n// See: https://github.com/vuejs/vue/issues/10825\nimport { Vue } from '../vue';\nimport { isArray, isUndefined } from '../utils/inspect'; // @vue/component\n\nexport var hasListenerMixin = Vue.extend({\n  methods: {\n    hasListener: function hasListener(name) {\n      // Only includes listeners registered via `v-on:name`\n      var $listeners = this.$listeners || {}; // Includes `v-on:name` and `this.$on('name')` registered listeners\n      // Note this property is not part of the public Vue API, but it is\n      // the only way to determine if a listener was added via `vm.$on`\n\n      var $events = this._events || {}; // Registered listeners in `this._events` are always an array,\n      // but might be zero length\n\n      return !isUndefined($listeners[name]) || isArray($events[name]) && $events[name].length > 0;\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_PREPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_PREPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupPrepend = /*#__PURE__*/Vue.extend({\n  name: NAME_INPUT_GROUP_PREPEND,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    // Pass all our data down to child, and set `append` to `true`\n    return h(BInputGroupAddon, mergeData(data, {\n      props: _objectSpread(_objectSpread({}, props), {}, {\n        append: false\n      })\n    }), children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS } from './constants'; // --- Props ---\n\nexport var props = {\n  detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n  tbodyTrClass: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_FUNCTION]))\n}; // --- Mixin ---\n// @vue/component\n\nexport var tbodyRowMixin = Vue.extend({\n  props: props,\n  methods: {\n    // Methods for computing classes, attributes and styles for table cells\n    getTdValues: function getTdValues(item, key, tdValue, defaultValue) {\n      var $parent = this.$parent;\n\n      if (tdValue) {\n        var value = get(item, key, '');\n\n        if (isFunction(tdValue)) {\n          return tdValue(value, key, item);\n        } else if (isString(tdValue) && isFunction($parent[tdValue])) {\n          return $parent[tdValue](value, key, item);\n        }\n\n        return tdValue;\n      }\n\n      return defaultValue;\n    },\n    getThValues: function getThValues(item, key, thValue, type, defaultValue) {\n      var $parent = this.$parent;\n\n      if (thValue) {\n        var value = get(item, key, '');\n\n        if (isFunction(thValue)) {\n          return thValue(value, key, item, type);\n        } else if (isString(thValue) && isFunction($parent[thValue])) {\n          return $parent[thValue](value, key, item, type);\n        }\n\n        return thValue;\n      }\n\n      return defaultValue;\n    },\n    // Method to get the value for a field\n    getFormattedValue: function getFormattedValue(item, field) {\n      var key = field.key;\n      var formatter = this.getFieldFormatter(key);\n      var value = get(item, key, null);\n\n      if (isFunction(formatter)) {\n        value = formatter(value, key, item);\n      }\n\n      return isUndefinedOrNull(value) ? '' : value;\n    },\n    // Factory function methods\n    toggleDetailsFactory: function toggleDetailsFactory(hasDetailsSlot, item) {\n      var _this = this;\n\n      // Returns a function to toggle a row's details slot\n      return function () {\n        if (hasDetailsSlot) {\n          _this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n        }\n      };\n    },\n    // Row event handlers\n    rowHovered: function rowHovered(event) {\n      // `mouseenter` handler (non-bubbling)\n      // `this.tbodyRowEvtStopped` from tbody mixin\n      if (!this.tbodyRowEvtStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n      }\n    },\n    rowUnhovered: function rowUnhovered(event) {\n      // `mouseleave` handler (non-bubbling)\n      // `this.tbodyRowEvtStopped` from tbody mixin\n      if (!this.tbodyRowEvtStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n      }\n    },\n    // Renders a TD or TH for a row's field\n    renderTbodyRowCell: function renderTbodyRowCell(field, colIndex, item, rowIndex) {\n      var _this2 = this;\n\n      var isStacked = this.isStacked;\n      var key = field.key,\n          label = field.label,\n          isRowHeader = field.isRowHeader;\n      var h = this.$createElement;\n      var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      var formatted = this.getFormattedValue(item, field);\n      var stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn; // We only uses the helper components for sticky columns to\n      // improve performance of BTable/BTableLite by reducing the\n      // total number of vue instances created during render\n\n      var cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n      var cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n      var data = {\n        // For the Vue key, we concatenate the column index and\n        // field key (as field keys could be duplicated)\n        // TODO: Although we do prevent duplicate field keys...\n        //   So we could change this to: `row-${rowIndex}-cell-${key}`\n        class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n        props: {},\n        attrs: _objectSpread({\n          'aria-colindex': String(colIndex + 1)\n        }, isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {})),\n        key: \"row-\".concat(rowIndex, \"-cell-\").concat(colIndex, \"-\").concat(key)\n      };\n\n      if (stickyColumn) {\n        // We are using the helper BTd or BTh\n        data.props = {\n          stackedHeading: isStacked ? label : null,\n          stickyColumn: true,\n          variant: cellVariant\n        };\n      } else {\n        // Using native TD or TH element, so we need to\n        // add in the attributes and variant class\n        data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n        data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n        data.attrs.scope = isRowHeader ? 'row' : null; // Add in the variant class\n\n        if (cellVariant) {\n          data.class.push(\"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(cellVariant));\n        }\n      }\n\n      var slotScope = {\n        item: item,\n        index: rowIndex,\n        field: field,\n        unformatted: get(item, key, ''),\n        value: formatted,\n        toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n        detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n      }; // If table supports selectable mode, then add in the following scope\n      // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n      if (this.supportsSelectableRows) {\n        slotScope.rowSelected = this.isRowSelected(rowIndex);\n\n        slotScope.selectRow = function () {\n          return _this2.selectRow(rowIndex);\n        };\n\n        slotScope.unselectRow = function () {\n          return _this2.unselectRow(rowIndex);\n        };\n      } // The new `v-slot` syntax doesn't like a slot name starting with\n      // a square bracket and if using in-document HTML templates, the\n      // v-slot attributes are lower-cased by the browser.\n      // Switched to round bracket syntax to prevent confusion with\n      // dynamic slot name syntax.\n      // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n      // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n      // Will be `null` if no slot (or fallback slot) exists\n\n\n      var slotName = this.$_bodyFieldSlotNameCache[key];\n      var $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n\n      if (this.isStacked) {\n        // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n        $childNodes = [h('div', [$childNodes])];\n      } // Render either a td or th cell\n\n\n      return h(cellTag, data, [$childNodes]);\n    },\n    // Renders an item's row (or rows if details supported)\n    renderTbodyRow: function renderTbodyRow(item, rowIndex) {\n      var _this3 = this;\n\n      var fields = this.computedFields,\n          striped = this.striped,\n          primaryKey = this.primaryKey,\n          currentPage = this.currentPage,\n          perPage = this.perPage,\n          tbodyTrClass = this.tbodyTrClass,\n          tbodyTrAttr = this.tbodyTrAttr;\n      var h = this.$createElement;\n      var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      var rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n      var hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || this.hasSelectableRowClick; // We can return more than one TR if rowDetails enabled\n\n      var $rows = []; // Details ID needed for `aria-details` when details showing\n      // We set it to `null` when not showing so that attribute\n      // does not appear on the element\n\n      var detailsId = rowShowDetails ? this.safeId(\"_details_\".concat(rowIndex, \"_\")) : null; // For each item data field in row\n\n      var $tds = fields.map(function (field, colIndex) {\n        return _this3.renderTbodyRowCell(field, colIndex, item, rowIndex);\n      }); // Calculate the row number in the dataset (indexed from 1)\n\n      var ariaRowIndex = null;\n\n      if (currentPage && perPage && perPage > 0) {\n        ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n      } // Create a unique :key to help ensure that sub components are re-rendered rather than\n      // re-used, which can cause issues. If a primary key is not provided we use the rendered\n      // rows index within the tbody.\n      // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n\n\n      var primaryKeyValue = toString(get(item, primaryKey)) || null;\n      var rowKey = primaryKeyValue || toString(rowIndex); // If primary key is provided, use it to generate a unique ID on each tbody > tr\n      // In the format of '{tableId}__row_{primaryKeyValue}'\n\n      var rowId = primaryKeyValue ? this.safeId(\"_row_\".concat(primaryKeyValue)) : null; // Selectable classes and attributes\n\n      var selectableClasses = this.selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n      var selectableAttrs = this.selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {}; // Additional classes and attributes\n\n      var userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n      var userTrAttrs = isFunction(tbodyTrAttr) ?\n      /* istanbul ignore next */\n      tbodyTrAttr(item, 'row') : tbodyTrAttr; // Add the item row\n\n      $rows.push(h(BTr, {\n        class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n        props: {\n          variant: item[FIELD_KEY_ROW_VARIANT] || null\n        },\n        attrs: _objectSpread(_objectSpread({\n          id: rowId\n        }, userTrAttrs), {}, {\n          // Users cannot override the following attributes\n          tabindex: hasRowClickHandler ? '0' : null,\n          'data-pk': primaryKeyValue || null,\n          'aria-details': detailsId,\n          'aria-owns': detailsId,\n          'aria-rowindex': ariaRowIndex\n        }, selectableAttrs),\n        on: {\n          // Note: These events are not A11Y friendly!\n          mouseenter: this.rowHovered,\n          mouseleave: this.rowUnhovered\n        },\n        key: \"__b-table-row-\".concat(rowKey, \"__\"),\n        ref: 'item-rows',\n        refInFor: true\n      }, $tds)); // Row Details slot\n\n      if (rowShowDetails) {\n        var detailsScope = {\n          item: item,\n          index: rowIndex,\n          fields: fields,\n          toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n        }; // If table supports selectable mode, then add in the following scope\n        // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n        if (this.supportsSelectableRows) {\n          detailsScope.rowSelected = this.isRowSelected(rowIndex);\n\n          detailsScope.selectRow = function () {\n            return _this3.selectRow(rowIndex);\n          };\n\n          detailsScope.unselectRow = function () {\n            return _this3.unselectRow(rowIndex);\n          };\n        } // Render the details slot in a TD\n\n\n        var $details = h(BTd, {\n          props: {\n            colspan: fields.length\n          },\n          class: this.detailsTdClass\n        }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]); // Add a hidden row to keep table row striping consistent when details showing\n        // Only added if the table is striped\n\n        if (striped) {\n          $rows.push( // We don't use `BTr` here as we don't need the extra functionality\n          h('tr', {\n            staticClass: 'd-none',\n            attrs: {\n              'aria-hidden': 'true',\n              role: 'presentation'\n            },\n            key: \"__b-table-details-stripe__\".concat(rowKey)\n          }));\n        } // Add the actual details row\n\n\n        var userDetailsTrClasses = isFunction(this.tbodyTrClass) ?\n        /* istanbul ignore next */\n        this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n        var userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ?\n        /* istanbul ignore next */\n        this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n        $rows.push(h(BTr, {\n          staticClass: 'b-table-details',\n          class: [userDetailsTrClasses],\n          props: {\n            variant: item[FIELD_KEY_ROW_VARIANT] || null\n          },\n          attrs: _objectSpread(_objectSpread({}, userDetailsTrAttrs), {}, {\n            // Users cannot override the following attributes\n            id: detailsId,\n            tabindex: '-1'\n          }),\n          key: \"__b-table-details__\".concat(rowKey)\n        }, [$details]));\n      } else if (hasDetailsSlot) {\n        // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n        $rows.push(h());\n\n        if (striped) {\n          // Add extra placeholder if table is striped\n          $rows.push(h());\n        }\n      } // Return the row(s)\n\n\n      return $rows;\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED } from '../../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_SPACE, CODE_UP } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { arrayIncludes, from as arrayFrom } from '../../../utils/array';\nimport { attemptFocus, closest, isActiveElement, isElement } from '../../../utils/dom';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { BTbody, props as BTbodyProps } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { tbodyRowMixin, props as tbodyRowProps } from './mixin-tbody-row'; // --- Helper methods ---\n\nvar getCellSlotName = function getCellSlotName(value) {\n  return \"cell(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread({}, BTbodyProps), tbodyRowProps), {}, {\n  tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n})); // --- Mixin ---\n// @vue/component\n\nexport var tbodyMixin = Vue.extend({\n  mixins: [tbodyRowMixin],\n  props: props,\n  beforeDestroy: function beforeDestroy() {\n    this.$_bodyFieldSlotNameCache = null;\n  },\n  methods: {\n    // Returns all the item TR elements (excludes detail and spacer rows)\n    // `this.$refs['item-rows']` is an array of item TR components/elements\n    // Rows should all be `<b-tr>` components, but we map to TR elements\n    // Also note that `this.$refs['item-rows']` may not always be in document order\n    getTbodyTrs: function getTbodyTrs() {\n      var $refs = this.$refs;\n      var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n      var trs = ($refs['item-rows'] || []).map(function (tr) {\n        return tr.$el || tr;\n      });\n      return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? arrayFrom(tbody.children).filter(function (tr) {\n        return arrayIncludes(trs, tr);\n      }) :\n      /* istanbul ignore next */\n      [];\n    },\n    // Returns index of a particular TBODY item TR\n    // We set `true` on closest to include self in result\n    getTbodyTrIndex: function getTbodyTrIndex(el) {\n      /* istanbul ignore next: should not normally happen */\n      if (!isElement(el)) {\n        return -1;\n      }\n\n      var tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n      return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n    },\n    // Emits a row event, with the item object, row index and original event\n    emitTbodyRowEvent: function emitTbodyRowEvent(type, event) {\n      if (type && this.hasListener(type) && event && event.target) {\n        var rowIndex = this.getTbodyTrIndex(event.target);\n\n        if (rowIndex > -1) {\n          // The array of TRs correlate to the `computedItems` array\n          var item = this.computedItems[rowIndex];\n          this.$emit(type, item, rowIndex, event);\n        }\n      }\n    },\n    tbodyRowEvtStopped: function tbodyRowEvtStopped(event) {\n      return this.stopIfBusy && this.stopIfBusy(event);\n    },\n    // Delegated row event handlers\n    onTbodyRowKeydown: function onTbodyRowKeydown(event) {\n      // Keyboard navigation and row click emulation\n      var target = event.target,\n          keyCode = event.keyCode;\n\n      if (this.tbodyRowEvtStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n        // Early exit if not an item row TR\n        return;\n      }\n\n      if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n        // Emulated click for keyboard users, transfer to click handler\n        stopEvent(event);\n        this.onTBodyRowClicked(event);\n      } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n        // Keyboard navigation\n        var rowIndex = this.getTbodyTrIndex(target);\n\n        if (rowIndex > -1) {\n          stopEvent(event);\n          var trs = this.getTbodyTrs();\n          var shift = event.shiftKey;\n\n          if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n            // Focus first row\n            attemptFocus(trs[0]);\n          } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n            // Focus last row\n            attemptFocus(trs[trs.length - 1]);\n          } else if (keyCode === CODE_UP && rowIndex > 0) {\n            // Focus previous row\n            attemptFocus(trs[rowIndex - 1]);\n          } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n            // Focus next row\n            attemptFocus(trs[rowIndex + 1]);\n          }\n        }\n      }\n    },\n    onTBodyRowClicked: function onTBodyRowClicked(event) {\n      // Don't emit event when the table is busy, the user clicked\n      // on a non-disabled control or is selecting text\n      if (this.tbodyRowEvtStopped(event) || filterEvent(event) || textSelectionActive(this.$el)) {\n        return;\n      }\n\n      this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n    },\n    onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(event) {\n      if (!this.tbodyRowEvtStopped(event) && event.which === 2) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n      }\n    },\n    onTbodyRowContextmenu: function onTbodyRowContextmenu(event) {\n      if (!this.tbodyRowEvtStopped(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n      }\n    },\n    onTbodyRowDblClicked: function onTbodyRowDblClicked(event) {\n      if (!this.tbodyRowEvtStopped(event) && !filterEvent(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n      }\n    },\n    // Render the tbody element and children\n    // Note:\n    //   Row hover handlers are handled by the tbody-row mixin\n    //   As mouseenter/mouseleave events do not bubble\n    renderTbody: function renderTbody() {\n      var _this = this;\n\n      var items = this.computedItems,\n          renderBusy = this.renderBusy,\n          renderTopRow = this.renderTopRow,\n          renderEmpty = this.renderEmpty,\n          renderBottomRow = this.renderBottomRow;\n      var h = this.$createElement;\n      var hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || this.hasSelectableRowClick; // Prepare the tbody rows\n\n      var $rows = []; // Add the item data rows or the busy slot\n\n      var $busy = renderBusy ? renderBusy() : null;\n\n      if ($busy) {\n        // If table is busy and a busy slot, then return only the busy \"row\" indicator\n        $rows.push($busy);\n      } else {\n        // Table isn't busy, or we don't have a busy slot\n        // Create a slot cache for improved performance when looking up cell slot names\n        // Values will be keyed by the field's `key` and will store the slot's name\n        // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n        // Used by tbody-row mixin render helper\n        var cache = {};\n        var defaultSlotName = getCellSlotName();\n        defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n        this.computedFields.forEach(function (field) {\n          var key = field.key;\n          var slotName = getCellSlotName(key);\n          var lowercaseSlotName = getCellSlotName(key.toLowerCase());\n          cache[key] = _this.hasNormalizedSlot(slotName) ? slotName : _this.hasNormalizedSlot(lowercaseSlotName) ?\n          /* istanbul ignore next */\n          lowercaseSlotName : defaultSlotName;\n        }); // Created as a non-reactive property so to not trigger component updates\n        // Must be a fresh object each render\n\n        this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n\n        $rows.push(renderTopRow ? renderTopRow() : h()); // Render the rows\n\n        items.forEach(function (item, rowIndex) {\n          // Render the individual item row (rows if details slot)\n          $rows.push(_this.renderTbodyRow(item, rowIndex));\n        }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n        $rows.push(renderEmpty ? renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n\n        $rows.push(renderBottomRow ? renderBottomRow() : h());\n      } // Note: these events will only emit if a listener is registered\n\n\n      var handlers = {\n        auxclick: this.onTbodyRowMiddleMouseRowClicked,\n        // TODO:\n        //   Perhaps we do want to automatically prevent the\n        //   default context menu from showing if there is a\n        //   `row-contextmenu` listener registered\n        contextmenu: this.onTbodyRowContextmenu,\n        // The following event(s) is not considered A11Y friendly\n        dblclick: this.onTbodyRowDblClicked // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n\n      }; // Add in click/keydown listeners if needed\n\n      if (hasRowClickHandler) {\n        handlers.click = this.onTBodyRowClicked;\n        handlers.keydown = this.onTbodyRowKeydown;\n      } // Assemble rows into the tbody\n\n\n      var $tbody = h(BTbody, {\n        class: this.tbodyClass || null,\n        props: pluckProps(BTbodyProps, this.$props),\n        // BTbody transfers all native event listeners to the root element\n        // TODO: Only set the handlers if the table is not busy\n        on: handlers,\n        ref: 'tbody'\n      }, $rows); // Return the assembled tbody\n\n      return $tbody;\n    }\n  }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n  caption: makeProp(PROP_TYPE_STRING),\n  captionHtml: makeProp(PROP_TYPE_STRING) // `caption-top` is part of table-render mixin (styling)\n  // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n\n}; // --- Mixin ---\n// @vue/component\n\nexport var captionMixin = Vue.extend({\n  props: props,\n  computed: {\n    captionId: function captionId() {\n      // Even though `this.safeId` looks like a method, it is a computed prop\n      // that returns a new function if the underlying ID changes\n      return this.isStacked ? this.safeId('_caption_') : null;\n    }\n  },\n  methods: {\n    renderCaption: function renderCaption() {\n      var caption = this.caption,\n          captionHtml = this.captionHtml;\n      var h = this.$createElement;\n      var $caption = h();\n      var hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n\n      if (hasCaptionSlot || caption || captionHtml) {\n        $caption = h('caption', {\n          attrs: {\n            id: this.captionId\n          },\n          domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n          key: 'caption'\n        }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n      }\n\n      return $caption;\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../vue';\nimport { EVENT_NAME_BLUR, EVENT_NAME_CHANGE, EVENT_NAME_INPUT, EVENT_NAME_UPDATE, HOOK_EVENT_NAME_BEFORE_DESTROY } from '../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { mathMax } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger, toFloat } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_NUMBER_STRING,\n  defaultValue: '',\n  event: EVENT_NAME_UPDATE\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n  ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  autocomplete: makeProp(PROP_TYPE_STRING),\n  // Debounce timeout (in ms). Not applicable with `lazy` prop\n  debounce: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n  formatter: makeProp(PROP_TYPE_FUNCTION),\n  // Only update the `v-model` on blur/change events\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  lazyFormatter: makeProp(PROP_TYPE_BOOLEAN, false),\n  number: makeProp(PROP_TYPE_BOOLEAN, false),\n  placeholder: makeProp(PROP_TYPE_STRING),\n  plaintext: makeProp(PROP_TYPE_BOOLEAN, false),\n  readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n  trim: makeProp(PROP_TYPE_BOOLEAN, false)\n})), 'formTextControls'); // --- Mixin ---\n// @vue/component\n\nexport var formTextMixin = Vue.extend({\n  mixins: [modelMixin],\n  props: props,\n  data: function data() {\n    var value = this[MODEL_PROP_NAME];\n    return {\n      localValue: toString(value),\n      vModelValue: this.modifyValue(value)\n    };\n  },\n  computed: {\n    computedClass: function computedClass() {\n      var plaintext = this.plaintext,\n          type = this.type;\n      var isRange = type === 'range';\n      var isColor = type === 'color';\n      return [{\n        // Range input needs class `custom-range`\n        'custom-range': isRange,\n        // `plaintext` not supported by `type=\"range\"` or `type=\"color\"`\n        'form-control-plaintext': plaintext && !isRange && !isColor,\n        // `form-control` not used by `type=\"range\"` or `plaintext`\n        // Always used by `type=\"color\"`\n        'form-control': isColor || !plaintext && !isRange\n      }, this.sizeFormClass, this.stateClass];\n    },\n    computedDebounce: function computedDebounce() {\n      // Ensure we have a positive number equal to or greater than 0\n      return mathMax(toInteger(this.debounce, 0), 0);\n    },\n    hasFormatter: function hasFormatter() {\n      return hasPropFunction(this.formatter);\n    }\n  },\n  watch: _defineProperty({}, MODEL_PROP_NAME, function (newValue) {\n    var stringifyValue = toString(newValue);\n    var modifiedValue = this.modifyValue(newValue);\n\n    if (stringifyValue !== this.localValue || modifiedValue !== this.vModelValue) {\n      // Clear any pending debounce timeout, as we are overwriting the user input\n      this.clearDebounce(); // Update the local values\n\n      this.localValue = stringifyValue;\n      this.vModelValue = modifiedValue;\n    }\n  }),\n  created: function created() {\n    // Create private non-reactive props\n    this.$_inputDebounceTimer = null;\n  },\n  mounted: function mounted() {\n    // Set up destroy handler\n    this.$on(HOOK_EVENT_NAME_BEFORE_DESTROY, this.clearDebounce);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearDebounce();\n  },\n  methods: {\n    clearDebounce: function clearDebounce() {\n      clearTimeout(this.$_inputDebounceTimer);\n      this.$_inputDebounceTimer = null;\n    },\n    formatValue: function formatValue(value, event) {\n      var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      value = toString(value);\n\n      if (this.hasFormatter && (!this.lazyFormatter || force)) {\n        value = this.formatter(value, event);\n      }\n\n      return value;\n    },\n    modifyValue: function modifyValue(value) {\n      value = toString(value); // Emulate `.trim` modifier behaviour\n\n      if (this.trim) {\n        value = value.trim();\n      } // Emulate `.number` modifier behaviour\n\n\n      if (this.number) {\n        value = toFloat(value, value);\n      }\n\n      return value;\n    },\n    updateValue: function updateValue(value) {\n      var _this = this;\n\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var lazy = this.lazy;\n\n      if (lazy && !force) {\n        return;\n      } // Make sure to always clear the debounce when `updateValue()`\n      // is called, even when the v-model hasn't changed\n\n\n      this.clearDebounce(); // Define the shared update logic in a method to be able to use\n      // it for immediate and debounced value changes\n\n      var doUpdate = function doUpdate() {\n        value = _this.modifyValue(value);\n\n        if (value !== _this.vModelValue) {\n          _this.vModelValue = value;\n\n          _this.$emit(MODEL_EVENT_NAME, value);\n        } else if (_this.hasFormatter) {\n          // When the `vModelValue` hasn't changed but the actual input value\n          // is out of sync, make sure to change it to the given one\n          // Usually caused by browser autocomplete and how it triggers the\n          // change or input event, or depending on the formatter function\n          // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657\n          // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498\n\n          /* istanbul ignore next: hard to test */\n          var $input = _this.$refs.input;\n          /* istanbul ignore if: hard to test out of sync value */\n\n          if ($input && value !== $input.value) {\n            $input.value = value;\n          }\n        }\n      }; // Only debounce the value update when a value greater than `0`\n      // is set and we are not in lazy mode or this is a forced update\n\n\n      var debounce = this.computedDebounce;\n\n      if (debounce > 0 && !lazy && !force) {\n        this.$_inputDebounceTimer = setTimeout(doUpdate, debounce);\n      } else {\n        // Immediately update the v-model\n        doUpdate();\n      }\n    },\n    onInput: function onInput(event) {\n      // `event.target.composing` is set by Vue\n      // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n      // TODO: Is this needed now with the latest Vue?\n\n      /* istanbul ignore if: hard to test composition events */\n      if (event.target.composing) {\n        return;\n      }\n\n      var value = event.target.value;\n      var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n      // or prevented the input event\n\n      /* istanbul ignore next */\n\n      if (formattedValue === false || event.defaultPrevented) {\n        stopEvent(event, {\n          propagation: false\n        });\n        return;\n      }\n\n      this.localValue = formattedValue;\n      this.updateValue(formattedValue);\n      this.$emit(EVENT_NAME_INPUT, formattedValue);\n    },\n    onChange: function onChange(event) {\n      var value = event.target.value;\n      var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n      // or prevented the input event\n\n      /* istanbul ignore next */\n\n      if (formattedValue === false || event.defaultPrevented) {\n        stopEvent(event, {\n          propagation: false\n        });\n        return;\n      }\n\n      this.localValue = formattedValue;\n      this.updateValue(formattedValue, true);\n      this.$emit(EVENT_NAME_CHANGE, formattedValue);\n    },\n    onBlur: function onBlur(event) {\n      // Apply the `localValue` on blur to prevent cursor jumps\n      // on mobile browsers (e.g. caused by autocomplete)\n      var value = event.target.value;\n      var formattedValue = this.formatValue(value, event, true);\n\n      if (formattedValue !== false) {\n        // We need to use the modified value here to apply the\n        // `.trim` and `.number` modifiers properly\n        this.localValue = toString(this.modifyValue(formattedValue)); // We pass the formatted value here since the `updateValue` method\n        // handles the modifiers itself\n\n        this.updateValue(formattedValue, true);\n      } // Emit native blur event\n\n\n      this.$emit(EVENT_NAME_BLUR, event);\n    },\n    focus: function focus() {\n      // For external handler that may want a focus method\n      if (!this.disabled) {\n        attemptFocus(this.$el);\n      }\n    },\n    blur: function blur() {\n      // For external handler that may want a blur method\n      if (!this.disabled) {\n        attemptBlur(this.$el);\n      }\n    }\n  }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_ADDON } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  append: makeProp(PROP_TYPE_BOOLEAN, false),\n  id: makeProp(PROP_TYPE_STRING),\n  isText: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_ADDON); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAddon = /*#__PURE__*/Vue.extend({\n  name: NAME_INPUT_GROUP_ADDON,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var append = props.append;\n    return h(props.tag, mergeData(data, {\n      class: {\n        'input-group-append': append,\n        'input-group-prepend': !append\n      },\n      attrs: {\n        id: props.id\n      }\n    }), props.isText ? [h(BInputGroupText, children)] : children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_INPUT } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes } from '../../utils/array';\nimport { attemptBlur } from '../../utils/dom';\nimport { eventOn, eventOff, eventOnOff, stopEvent } from '../../utils/events';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSelectionMixin } from '../../mixins/form-selection';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { formTextMixin, props as formTextProps } from '../../mixins/form-text';\nimport { formValidityMixin } from '../../mixins/form-validity';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenersMixin } from '../../mixins/listeners'; // --- Constants ---\n// Valid supported input types\n\nvar TYPES = ['text', 'password', 'email', 'number', 'url', 'tel', 'search', 'range', 'color', 'date', 'time', 'datetime', 'datetime-local', 'month', 'week']; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formSizeProps), formStateProps), formTextProps), {}, {\n  list: makeProp(PROP_TYPE_STRING),\n  max: makeProp(PROP_TYPE_NUMBER_STRING),\n  min: makeProp(PROP_TYPE_NUMBER_STRING),\n  // Disable mousewheel to prevent wheel from changing values (i.e. number/date)\n  noWheel: makeProp(PROP_TYPE_BOOLEAN, false),\n  step: makeProp(PROP_TYPE_NUMBER_STRING),\n  type: makeProp(PROP_TYPE_STRING, 'text', function (type) {\n    return arrayIncludes(TYPES, type);\n  })\n})), NAME_FORM_INPUT); // --- Main component ---\n// @vue/component\n\nexport var BFormInput = /*#__PURE__*/Vue.extend({\n  name: NAME_FORM_INPUT,\n  // Mixin order is important!\n  mixins: [listenersMixin, idMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n  props: props,\n  computed: {\n    localType: function localType() {\n      // We only allow certain types\n      var type = this.type;\n      return arrayIncludes(TYPES, type) ? type : 'text';\n    },\n    computedAttrs: function computedAttrs() {\n      var type = this.localType,\n          name = this.name,\n          form = this.form,\n          disabled = this.disabled,\n          placeholder = this.placeholder,\n          required = this.required,\n          min = this.min,\n          max = this.max,\n          step = this.step;\n      return {\n        id: this.safeId(),\n        name: name,\n        form: form,\n        type: type,\n        disabled: disabled,\n        placeholder: placeholder,\n        required: required,\n        autocomplete: this.autocomplete || null,\n        readonly: this.readonly || this.plaintext,\n        min: min,\n        max: max,\n        step: step,\n        list: type !== 'password' ? this.list : null,\n        'aria-required': required ? 'true' : null,\n        'aria-invalid': this.computedAriaInvalid\n      };\n    },\n    computedListeners: function computedListeners() {\n      return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n        input: this.onInput,\n        change: this.onChange,\n        blur: this.onBlur\n      });\n    }\n  },\n  watch: {\n    noWheel: function noWheel(newValue) {\n      this.setWheelStopper(newValue);\n    }\n  },\n  mounted: function mounted() {\n    this.setWheelStopper(this.noWheel);\n  },\n\n  /* istanbul ignore next */\n  deactivated: function deactivated() {\n    // Turn off listeners when keep-alive component deactivated\n\n    /* istanbul ignore next */\n    this.setWheelStopper(false);\n  },\n\n  /* istanbul ignore next */\n  activated: function activated() {\n    // Turn on listeners (if no-wheel) when keep-alive component activated\n\n    /* istanbul ignore next */\n    this.setWheelStopper(this.noWheel);\n  },\n  beforeDestroy: function beforeDestroy() {\n    /* istanbul ignore next */\n    this.setWheelStopper(false);\n  },\n  methods: {\n    setWheelStopper: function setWheelStopper(on) {\n      var input = this.$el; // We use native events, so that we don't interfere with propagation\n\n      eventOnOff(on, input, 'focus', this.onWheelFocus);\n      eventOnOff(on, input, 'blur', this.onWheelBlur);\n\n      if (!on) {\n        eventOff(document, 'wheel', this.stopWheel);\n      }\n    },\n    onWheelFocus: function onWheelFocus() {\n      eventOn(document, 'wheel', this.stopWheel);\n    },\n    onWheelBlur: function onWheelBlur() {\n      eventOff(document, 'wheel', this.stopWheel);\n    },\n    stopWheel: function stopWheel(event) {\n      stopEvent(event, {\n        propagation: false\n      });\n      attemptBlur(this.$el);\n    }\n  },\n  render: function render(h) {\n    return h('input', {\n      class: this.computedClass,\n      attrs: this.computedAttrs,\n      domProps: {\n        value: this.localValue\n      },\n      on: this.computedListeners,\n      ref: 'input'\n    });\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN_STRING } from '../../../constants/props';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n  stacked: makeProp(PROP_TYPE_BOOLEAN_STRING, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var stackedMixin = Vue.extend({\n  props: props,\n  computed: {\n    isStacked: function isStacked() {\n      var stacked = this.stacked; // `true` when always stacked, or returns breakpoint specified\n\n      return stacked === '' ? true : stacked;\n    },\n    isStackedAlways: function isStackedAlways() {\n      return this.isStacked === true;\n    },\n    stackedTableClasses: function stackedTableClasses() {\n      var isStackedAlways = this.isStackedAlways;\n      return _defineProperty({\n        'b-table-stacked': isStackedAlways\n      }, \"b-table-stacked-\".concat(this.stacked), !isStackedAlways && this.isStacked);\n    }\n  }\n});","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports[\"v-clipboard\"]=t():e[\"v-clipboard\"]=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"/dist/\",t(t.s=0)}([function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){var t=void 0;if(\"string\"!=typeof e)try{t=JSON.stringify(e)}catch(e){throw\"Failed to copy value to clipboard. Unknown type.\"}else t=e;var r=document.createElement(\"textarea\");if(r.value=t,r.setAttribute(\"readonly\",\"\"),r.style.cssText=\"position:fixed;pointer-events:none;z-index:-9999;opacity:0;\",document.body.appendChild(r),navigator.userAgent.match(/ipad|ipod|iphone/i)){r.contentEditable=!0,r.readOnly=!0;var n=document.createRange();n.selectNodeContents(r);var o=window.getSelection();o.removeAllRanges(),o.addRange(n),r.setSelectionRange(0,999999)}else r.select();var a=!1;try{a=document.execCommand(\"copy\")}catch(e){console.warn(e)}return document.body.removeChild(r),a};t.default={install:function(e){e.prototype.$clipboard=n;var t=function(e){return function(){return\"$\"+e++}}(1),r={},o=function(e){e&&(r[e]=null,delete r[e])},a=function(e){var n=t();return r[n]=e,n};e.directive(\"clipboard\",{bind:function(e,t){var o=t.arg,i=t.value;switch(o){case\"error\":var c=a(i);return void(e.dataset.clipboardErrorHandler=c);case\"success\":var d=a(i);return void(e.dataset.clipboardSuccessHandler=d);default:var l=function(o){if(t.hasOwnProperty(\"value\")){var a={value:\"function\"==typeof i?i():i,event:o},c=n(a.value)?e.dataset.clipboardSuccessHandler:e.dataset.clipboardErrorHandler,d=r[c];d&&d(a)}},u=a(l);return e.dataset.clipboardClickHandler=u,void e.addEventListener(\"click\",r[u])}},unbind:function(e){var t=e.dataset,n=t.clipboardSuccessHandler,a=t.clipboardErrorHandler,i=t.clipboardClickHandler;o(n),o(a),i&&(e.removeEventListener(\"click\",r[i]),o(i))}})}}}])});\n//# sourceMappingURL=index.min.js.map","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setInternalState = require('../internals/internal-state').set;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n  re2[MATCH] = false;\n  // RegExp constructor can alter flags and IsRegExp works correct with @@match\n  return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n  var RegExpWrapper = function RegExp(pattern, flags) {\n    var thisIsRegExp = this instanceof RegExpWrapper;\n    var patternIsRegExp = isRegExp(pattern);\n    var flagsAreUndefined = flags === undefined;\n    var sticky;\n\n    if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n      return pattern;\n    }\n\n    if (CORRECT_NEW) {\n      if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n    } else if (pattern instanceof RegExpWrapper) {\n      if (flagsAreUndefined) flags = getFlags.call(pattern);\n      pattern = pattern.source;\n    }\n\n    if (UNSUPPORTED_Y) {\n      sticky = !!flags && flags.indexOf('y') > -1;\n      if (sticky) flags = flags.replace(/y/g, '');\n    }\n\n    var result = inheritIfRequired(\n      CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n      thisIsRegExp ? this : RegExpPrototype,\n      RegExpWrapper\n    );\n\n    if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n    return result;\n  };\n  var proxy = function (key) {\n    key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n      configurable: true,\n      get: function () { return NativeRegExp[key]; },\n      set: function (it) { NativeRegExp[key] = it; }\n    });\n  };\n  var keys = getOwnPropertyNames(NativeRegExp);\n  var index = 0;\n  while (keys.length > index) proxy(keys[index++]);\n  RegExpPrototype.constructor = RegExpWrapper;\n  RegExpWrapper.prototype = RegExpPrototype;\n  redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_NAV } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Helper methods ---\n\nvar computeJustifyContent = function computeJustifyContent(value) {\n  value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n  return \"justify-content-\".concat(value);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n  align: makeProp(PROP_TYPE_STRING),\n  // Set to `true` if placing in a card header\n  cardHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n  fill: makeProp(PROP_TYPE_BOOLEAN, false),\n  justified: makeProp(PROP_TYPE_BOOLEAN, false),\n  pills: makeProp(PROP_TYPE_BOOLEAN, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  tabs: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'ul'),\n  vertical: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_NAV); // --- Main component ---\n// @vue/component\n\nexport var BNav = /*#__PURE__*/Vue.extend({\n  name: NAME_NAV,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var tabs = props.tabs,\n        pills = props.pills,\n        vertical = props.vertical,\n        align = props.align,\n        cardHeader = props.cardHeader;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'nav',\n      class: (_class = {\n        'nav-tabs': tabs,\n        'nav-pills': pills && !tabs,\n        'card-header-tabs': !vertical && cardHeader && tabs,\n        'card-header-pills': !vertical && cardHeader && pills && !tabs,\n        'flex-column': vertical,\n        'nav-fill': !vertical && props.fill,\n        'nav-justified': !vertical && props.justified\n      }, _defineProperty(_class, computeJustifyContent(align), !vertical && align), _defineProperty(_class, \"small\", props.small), _class)\n    }), children);\n  }\n});","import { identity } from '../../../utils/identity';\nimport { isArray, isFunction, isObject, isString } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Private function to massage field entry into common object format\n\nvar processField = function processField(key, value) {\n  var field = null;\n\n  if (isString(value)) {\n    // Label shortcut\n    field = {\n      key: key,\n      label: value\n    };\n  } else if (isFunction(value)) {\n    // Formatter shortcut\n    field = {\n      key: key,\n      formatter: value\n    };\n  } else if (isObject(value)) {\n    field = clone(value);\n    field.key = field.key || key;\n  } else if (value !== false) {\n    // Fallback to just key\n\n    /* istanbul ignore next */\n    field = {\n      key: key\n    };\n  }\n\n  return field;\n}; // We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\n\n\nexport var normalizeFields = function normalizeFields(origFields, items) {\n  var fields = [];\n\n  if (isArray(origFields)) {\n    // Normalize array Form\n    origFields.filter(identity).forEach(function (f) {\n      if (isString(f)) {\n        fields.push({\n          key: f,\n          label: startCase(f)\n        });\n      } else if (isObject(f) && f.key && isString(f.key)) {\n        // Full object definition. We use assign so that we don't mutate the original\n        fields.push(clone(f));\n      } else if (isObject(f) && keys(f).length === 1) {\n        // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n        var key = keys(f)[0];\n        var field = processField(key, f[key]);\n\n        if (field) {\n          fields.push(field);\n        }\n      }\n    });\n  } // If no field provided, take a sample from first record (if exits)\n\n\n  if (fields.length === 0 && isArray(items) && items.length > 0) {\n    var sample = items[0];\n    keys(sample).forEach(function (k) {\n      if (!IGNORED_FIELD_KEYS[k]) {\n        fields.push({\n          key: k,\n          label: startCase(k)\n        });\n      }\n    });\n  } // Ensure we have a unique array of fields and that they have String labels\n\n\n  var memo = {};\n  return fields.filter(function (f) {\n    if (!memo[f.key]) {\n      memo[f.key] = true;\n      f.label = isString(f.label) ? f.label : startCase(f.key);\n      return true;\n    }\n\n    return false;\n  });\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { isArray, isFunction, isString } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { makeModelMixin } from '../../../utils/model';\nimport { toInteger } from '../../../utils/number';\nimport { clone, sortKeys } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { normalizeFields } from './normalize-fields'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_ARRAY,\n  defaultValue: []\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, _defineProperty({\n  fields: makeProp(PROP_TYPE_ARRAY, null),\n  // Provider mixin adds in `Function` type\n  items: makeProp(PROP_TYPE_ARRAY, []),\n  // Primary key for record\n  // If provided the value in each row must be unique!\n  primaryKey: makeProp(PROP_TYPE_STRING)\n}, MODEL_PROP_NAME, makeProp(PROP_TYPE_ARRAY, [])))); // --- Mixin ---\n// @vue/component\n\nexport var itemsMixin = Vue.extend({\n  mixins: [modelMixin],\n  props: props,\n  data: function data() {\n    var items = this.items;\n    return {\n      // Our local copy of the items\n      // Must be an array\n      localItems: isArray(items) ? items.slice() : []\n    };\n  },\n  computed: {\n    computedFields: function computedFields() {\n      // We normalize fields into an array of objects\n      // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n      return normalizeFields(this.fields, this.localItems);\n    },\n    computedFieldsObj: function computedFieldsObj() {\n      // Fields as a simple lookup hash object\n      // Mainly for formatter lookup and use in `scopedSlots` for convenience\n      // If the field has a formatter, it normalizes formatter to a\n      // function ref or `undefined` if no formatter\n      var $parent = this.$parent;\n      return this.computedFields.reduce(function (obj, f) {\n        // We use object spread here so we don't mutate the original field object\n        obj[f.key] = clone(f);\n\n        if (f.formatter) {\n          // Normalize formatter to a function ref or `undefined`\n          var formatter = f.formatter;\n\n          if (isString(formatter) && isFunction($parent[formatter])) {\n            formatter = $parent[formatter];\n          } else if (!isFunction(formatter)) {\n            /* istanbul ignore next */\n            formatter = undefined;\n          } // Return formatter function or `undefined` if none\n\n\n          obj[f.key].formatter = formatter;\n        }\n\n        return obj;\n      }, {});\n    },\n    computedItems: function computedItems() {\n      // Fallback if various mixins not provided\n      return (this.paginatedItems || this.sortedItems || this.filteredItems || this.localItems ||\n      /* istanbul ignore next */\n      []).slice();\n    },\n    context: function context() {\n      // Current state of sorting, filtering and pagination props/values\n      return {\n        filter: this.localFilter,\n        sortBy: this.localSortBy,\n        sortDesc: this.localSortDesc,\n        perPage: mathMax(toInteger(this.perPage, 0), 0),\n        currentPage: mathMax(toInteger(this.currentPage, 0), 1),\n        apiUrl: this.apiUrl\n      };\n    }\n  },\n  watch: {\n    items: function items(newValue) {\n      // Set `localItems`/`filteredItems` to a copy of the provided array\n      this.localItems = isArray(newValue) ? newValue.slice() : [];\n    },\n    // Watch for changes on `computedItems` and update the `v-model`\n    computedItems: function computedItems(newValue, oldValue) {\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n    },\n    // Watch for context changes\n    context: function context(newValue, oldValue) {\n      // Emit context information for external paging/filtering/sorting handling\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n      }\n    }\n  },\n  mounted: function mounted() {\n    // Initially update the `v-model` of displayed items\n    this.$emit(MODEL_EVENT_NAME, this.computedItems);\n  },\n  methods: {\n    // Method to get the formatter method for a given field key\n    getFieldFormatter: function getFieldFormatter(key) {\n      var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n      // function ref if present, otherwise `undefined`\n\n      return field ? field.formatter : undefined;\n    }\n  }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_APPEND, SLOT_NAME_DEFAULT, SLOT_NAME_PREPEND } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAppend } from './input-group-append';\nimport { BInputGroupPrepend } from './input-group-prepend';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  append: makeProp(PROP_TYPE_STRING),\n  appendHtml: makeProp(PROP_TYPE_STRING),\n  id: makeProp(PROP_TYPE_STRING),\n  prepend: makeProp(PROP_TYPE_STRING),\n  prependHtml: makeProp(PROP_TYPE_STRING),\n  size: makeProp(PROP_TYPE_STRING),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BInputGroup = /*#__PURE__*/Vue.extend({\n  name: NAME_INPUT_GROUP,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        slots = _ref.slots,\n        scopedSlots = _ref.scopedSlots;\n    var prepend = props.prepend,\n        prependHtml = props.prependHtml,\n        append = props.append,\n        appendHtml = props.appendHtml,\n        size = props.size;\n    var $scopedSlots = scopedSlots || {};\n    var $slots = slots();\n    var slotScope = {};\n    var $prepend = h();\n    var hasPrependSlot = hasNormalizedSlot(SLOT_NAME_PREPEND, $scopedSlots, $slots);\n\n    if (hasPrependSlot || prepend || prependHtml) {\n      $prepend = h(BInputGroupPrepend, [hasPrependSlot ? normalizeSlot(SLOT_NAME_PREPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n        domProps: htmlOrText(prependHtml, prepend)\n      })]);\n    }\n\n    var $append = h();\n    var hasAppendSlot = hasNormalizedSlot(SLOT_NAME_APPEND, $scopedSlots, $slots);\n\n    if (hasAppendSlot || append || appendHtml) {\n      $append = h(BInputGroupAppend, [hasAppendSlot ? normalizeSlot(SLOT_NAME_APPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n        domProps: htmlOrText(appendHtml, append)\n      })]);\n    }\n\n    return h(props.tag, mergeData(data, {\n      staticClass: 'input-group',\n      class: _defineProperty({}, \"input-group-\".concat(size), size),\n      attrs: {\n        id: props.id || null,\n        role: 'group'\n      }\n    }), [$prepend, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots), $append]);\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { COMPONENT_UID_KEY, Vue } from '../../vue';\nimport { NAME_ALERT } from '../../constants/components';\nimport { EVENT_NAME_DISMISSED, EVENT_NAME_DISMISS_COUNT_DOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DISMISS } from '../../constants/slots';\nimport { requestAF } from '../../utils/dom';\nimport { isBoolean, isNumeric } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('show', {\n  type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n  defaultValue: false\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // --- Helper methods ---\n// Convert `show` value to a number\n\n\nvar parseCountDown = function parseCountDown(show) {\n  if (show === '' || isBoolean(show)) {\n    return 0;\n  }\n\n  show = toInteger(show, 0);\n  return show > 0 ? show : 0;\n}; // Convert `show` value to a boolean\n\n\nvar parseShow = function parseShow(show) {\n  if (show === '' || show === true) {\n    return true;\n  }\n\n  if (toInteger(show, 0) < 1) {\n    // Boolean will always return false for the above comparison\n    return false;\n  }\n\n  return !!show;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n  dismissLabel: makeProp(PROP_TYPE_STRING, 'Close'),\n  dismissible: makeProp(PROP_TYPE_BOOLEAN, false),\n  fade: makeProp(PROP_TYPE_BOOLEAN, false),\n  variant: makeProp(PROP_TYPE_STRING, 'info')\n})), NAME_ALERT); // --- Main component ---\n// @vue/component\n\nexport var BAlert = /*#__PURE__*/Vue.extend({\n  name: NAME_ALERT,\n  mixins: [modelMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    return {\n      countDown: 0,\n      // If initially shown, we need to set these for SSR\n      localShow: parseShow(this[MODEL_PROP_NAME])\n    };\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n    this.countDown = parseCountDown(newValue);\n    this.localShow = parseShow(newValue);\n  }), _defineProperty(_watch, \"countDown\", function countDown(newValue) {\n    var _this = this;\n\n    this.clearCountDownInterval();\n    var show = this[MODEL_PROP_NAME]; // Ignore if `show` transitions to a boolean value\n\n    if (isNumeric(show)) {\n      this.$emit(EVENT_NAME_DISMISS_COUNT_DOWN, newValue); // Update the v-model if needed\n\n      if (show !== newValue) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n\n      if (newValue > 0) {\n        this.localShow = true;\n        this.$_countDownTimeout = setTimeout(function () {\n          _this.countDown--;\n        }, 1000);\n      } else {\n        // Slightly delay the hide to allow any UI updates\n        this.$nextTick(function () {\n          requestAF(function () {\n            _this.localShow = false;\n          });\n        });\n      }\n    }\n  }), _defineProperty(_watch, \"localShow\", function localShow(newValue) {\n    var show = this[MODEL_PROP_NAME]; // Only emit dismissed events for dismissible or auto-dismissing alerts\n\n    if (!newValue && (this.dismissible || isNumeric(show))) {\n      this.$emit(EVENT_NAME_DISMISSED);\n    } // Only emit booleans if we weren't passed a number via v-model\n\n\n    if (!isNumeric(show) && show !== newValue) {\n      this.$emit(MODEL_EVENT_NAME, newValue);\n    }\n  }), _watch),\n  created: function created() {\n    // Create private non-reactive props\n    this.$_filterTimer = null;\n    var show = this[MODEL_PROP_NAME];\n    this.countDown = parseCountDown(show);\n    this.localShow = parseShow(show);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.clearCountDownInterval();\n  },\n  methods: {\n    dismiss: function dismiss() {\n      this.clearCountDownInterval();\n      this.countDown = 0;\n      this.localShow = false;\n    },\n    clearCountDownInterval: function clearCountDownInterval() {\n      clearTimeout(this.$_countDownTimeout);\n      this.$_countDownTimeout = null;\n    }\n  },\n  render: function render(h) {\n    var $alert = h();\n\n    if (this.localShow) {\n      var dismissible = this.dismissible,\n          variant = this.variant;\n      var $dismissButton = h();\n\n      if (dismissible) {\n        // Add dismiss button\n        $dismissButton = h(BButtonClose, {\n          attrs: {\n            'aria-label': this.dismissLabel\n          },\n          on: {\n            click: this.dismiss\n          }\n        }, [this.normalizeSlot(SLOT_NAME_DISMISS)]);\n      }\n\n      $alert = h('div', {\n        staticClass: 'alert',\n        class: _defineProperty({\n          'alert-dismissible': dismissible\n        }, \"alert-\".concat(variant), variant),\n        attrs: {\n          role: 'alert',\n          'aria-live': 'polite',\n          'aria-atomic': true\n        },\n        key: this[COMPONENT_UID_KEY]\n      }, [$dismissButton, this.normalizeSlot()]);\n    }\n\n    return h(BVTransition, {\n      props: {\n        noFade: !this.fade\n      }\n    }, [$alert]);\n  }\n});","var _objectSpread2, _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TAB } from '../../constants/components';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar MODEL_PROP_NAME_ACTIVE = 'active';\nvar MODEL_EVENT_NAME_ACTIVE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ACTIVE; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, MODEL_PROP_NAME_ACTIVE, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"buttonId\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"disabled\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"lazy\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"noBody\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"tag\", makeProp(PROP_TYPE_STRING, 'div')), _defineProperty(_objectSpread2, \"title\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"titleItemClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _defineProperty(_objectSpread2, \"titleLinkAttributes\", makeProp(PROP_TYPE_OBJECT)), _defineProperty(_objectSpread2, \"titleLinkClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _objectSpread2))), NAME_TAB); // --- Main component ---\n// @vue/component\n\nexport var BTab = /*#__PURE__*/Vue.extend({\n  name: NAME_TAB,\n  mixins: [idMixin, normalizeSlotMixin],\n  inject: {\n    bvTabs: {\n      default: function _default() {\n        return {};\n      }\n    }\n  },\n  props: props,\n  data: function data() {\n    return {\n      localActive: this[MODEL_PROP_NAME_ACTIVE] && !this.disabled\n    };\n  },\n  computed: {\n    // For parent sniffing of child\n    _isTab: function _isTab() {\n      return true;\n    },\n    tabClasses: function tabClasses() {\n      var active = this.localActive,\n          disabled = this.disabled;\n      return [{\n        active: active,\n        disabled: disabled,\n        'card-body': this.bvTabs.card && !this.noBody\n      }, // Apply <b-tabs> `activeTabClass` styles when this tab is active\n      active ? this.bvTabs.activeTabClass : null];\n    },\n    controlledBy: function controlledBy() {\n      return this.buttonId || this.safeId('__BV_tab_button__');\n    },\n    computedNoFade: function computedNoFade() {\n      return !(this.bvTabs.fade || false);\n    },\n    computedLazy: function computedLazy() {\n      return this.bvTabs.lazy || this.lazy;\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME_ACTIVE, function (newValue, oldValue) {\n    if (newValue !== oldValue) {\n      if (newValue) {\n        // If activated post mount\n        this.activate();\n      } else {\n        /* istanbul ignore next */\n        if (!this.deactivate()) {\n          // Tab couldn't be deactivated, so we reset the synced active prop\n          // Deactivation will fail if no other tabs to activate\n          this.$emit(MODEL_EVENT_NAME_ACTIVE, this.localActive);\n        }\n      }\n    }\n  }), _defineProperty(_watch, \"disabled\", function disabled(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      var firstTab = this.bvTabs.firstTab;\n\n      if (newValue && this.localActive && firstTab) {\n        this.localActive = false;\n        firstTab();\n      }\n    }\n  }), _defineProperty(_watch, \"localActive\", function localActive(newValue) {\n    // Make `active` prop work with `.sync` modifier\n    this.$emit(MODEL_EVENT_NAME_ACTIVE, newValue);\n  }), _watch),\n  mounted: function mounted() {\n    // Inform `<b-tabs>` of our presence\n    this.registerTab();\n  },\n  updated: function updated() {\n    // Force the tab button content to update (since slots are not reactive)\n    // Only done if we have a title slot, as the title prop is reactive\n    var updateButton = this.bvTabs.updateButton;\n\n    if (updateButton && this.hasNormalizedSlot(SLOT_NAME_TITLE)) {\n      updateButton(this);\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Inform `<b-tabs>` of our departure\n    this.unregisterTab();\n  },\n  methods: {\n    // Private methods\n    registerTab: function registerTab() {\n      // Inform `<b-tabs>` of our presence\n      var registerTab = this.bvTabs.registerTab;\n\n      if (registerTab) {\n        registerTab(this);\n      }\n    },\n    unregisterTab: function unregisterTab() {\n      // Inform `<b-tabs>` of our departure\n      var unregisterTab = this.bvTabs.unregisterTab;\n\n      if (unregisterTab) {\n        unregisterTab(this);\n      }\n    },\n    // Public methods\n    activate: function activate() {\n      // Not inside a `<b-tabs>` component or tab is disabled\n      var activateTab = this.bvTabs.activateTab;\n      return activateTab && !this.disabled ? activateTab(this) : false;\n    },\n    deactivate: function deactivate() {\n      // Not inside a `<b-tabs>` component or not active to begin with\n      var deactivateTab = this.bvTabs.deactivateTab;\n      return deactivateTab && this.localActive ? deactivateTab(this) : false;\n    }\n  },\n  render: function render(h) {\n    var localActive = this.localActive;\n    var $content = h(this.tag, {\n      staticClass: 'tab-pane',\n      class: this.tabClasses,\n      directives: [{\n        name: 'show',\n        value: localActive\n      }],\n      attrs: {\n        role: 'tabpanel',\n        id: this.safeId(),\n        'aria-hidden': localActive ? 'false' : 'true',\n        'aria-labelledby': this.controlledBy || null\n      },\n      ref: 'panel'\n    }, // Render content lazily if requested\n    [localActive || !this.computedLazy ? this.normalizeSlot() : h()]);\n    return h(BVTransition, {\n      props: {\n        mode: 'out-in',\n        noFade: this.computedNoFade\n      }\n    }, [$content]);\n  }\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// v-b-visible\n// Private visibility check directive\n// Based on IntersectionObserver\n//\n// Usage:\n//  v-b-visibility.<margin>.<once>=\"<callback>\"\n//\n//  Value:\n//  <callback>: method to be called when visibility state changes, receives one arg:\n//     true:  element is visible\n//     false: element is not visible\n//     null:  IntersectionObserver not supported\n//\n//  Modifiers:\n//    <margin>: a positive decimal value of pixels away from viewport edge\n//              before being considered \"visible\". default is 0\n//    <once>:   keyword 'once', meaning when the element becomes visible and\n//              callback is called observation/notification will stop.\n//\n// When used in a render function:\n// export default {\n//   directives: { 'b-visible': VBVisible },\n//   render(h) {\n//     h(\n//       'div',\n//       {\n//         directives: [\n//           { name: 'b-visible', value=this.callback, modifiers: { '123':true, 'once':true } }\n//         ]\n//       }\n//     )\n//   }\nimport { RX_DIGITS } from '../../constants/regex';\nimport { requestAF } from '../../utils/dom';\nimport { isFunction } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { clone, keys } from '../../utils/object';\nvar OBSERVER_PROP_NAME = '__bv__visibility_observer';\n\nvar VisibilityObserver = /*#__PURE__*/function () {\n  function VisibilityObserver(el, options, vnode) {\n    _classCallCheck(this, VisibilityObserver);\n\n    this.el = el;\n    this.callback = options.callback;\n    this.margin = options.margin || 0;\n    this.once = options.once || false;\n    this.observer = null;\n    this.visible = undefined;\n    this.doneOnce = false; // Create the observer instance (if possible)\n\n    this.createObserver(vnode);\n  }\n\n  _createClass(VisibilityObserver, [{\n    key: \"createObserver\",\n    value: function createObserver(vnode) {\n      var _this = this;\n\n      // Remove any previous observer\n      if (this.observer) {\n        /* istanbul ignore next */\n        this.stop();\n      } // Should only be called once and `callback` prop should be a function\n\n\n      if (this.doneOnce || !isFunction(this.callback)) {\n        /* istanbul ignore next */\n        return;\n      } // Create the observer instance\n\n\n      try {\n        // Future: Possibly add in other modifiers for left/right/top/bottom\n        // offsets, root element reference, and thresholds\n        this.observer = new IntersectionObserver(this.handler.bind(this), {\n          // `null` = 'viewport'\n          root: null,\n          // Pixels away from view port to consider \"visible\"\n          rootMargin: this.margin,\n          // Intersection ratio of el and root (as a value from 0 to 1)\n          threshold: 0\n        });\n      } catch (_unused) {\n        // No IntersectionObserver support, so just stop trying to observe\n        this.doneOnce = true;\n        this.observer = undefined;\n        this.callback(null);\n        return;\n      } // Start observing in a `$nextTick()` (to allow DOM to complete rendering)\n\n      /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n\n\n      vnode.context.$nextTick(function () {\n        requestAF(function () {\n          // Placed in an `if` just in case we were destroyed before\n          // this `requestAnimationFrame` runs\n          if (_this.observer) {\n            _this.observer.observe(_this.el);\n          }\n        });\n      });\n    }\n    /* istanbul ignore next */\n\n  }, {\n    key: \"handler\",\n    value: function handler(entries) {\n      var entry = entries ? entries[0] : {};\n      var isIntersecting = Boolean(entry.isIntersecting || entry.intersectionRatio > 0.0);\n\n      if (isIntersecting !== this.visible) {\n        this.visible = isIntersecting;\n        this.callback(isIntersecting);\n\n        if (this.once && this.visible) {\n          this.doneOnce = true;\n          this.stop();\n        }\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      /* istanbul ignore next */\n      this.observer && this.observer.disconnect();\n      this.observer = null;\n    }\n  }]);\n\n  return VisibilityObserver;\n}();\n\nvar destroy = function destroy(el) {\n  var observer = el[OBSERVER_PROP_NAME];\n\n  if (observer && observer.stop) {\n    observer.stop();\n  }\n\n  delete el[OBSERVER_PROP_NAME];\n};\n\nvar bind = function bind(el, _ref, vnode) {\n  var value = _ref.value,\n      modifiers = _ref.modifiers;\n  // `value` is the callback function\n  var options = {\n    margin: '0px',\n    once: false,\n    callback: value\n  }; // Parse modifiers\n\n  keys(modifiers).forEach(function (mod) {\n    /* istanbul ignore else: Until <b-img-lazy> is switched to use this directive */\n    if (RX_DIGITS.test(mod)) {\n      options.margin = \"\".concat(mod, \"px\");\n    } else if (mod.toLowerCase() === 'once') {\n      options.once = true;\n    }\n  }); // Destroy any previous observer\n\n  destroy(el); // Create new observer\n\n  el[OBSERVER_PROP_NAME] = new VisibilityObserver(el, options, vnode); // Store the current modifiers on the object (cloned)\n\n  el[OBSERVER_PROP_NAME]._prevModifiers = clone(modifiers);\n}; // When the directive options may have been updated (or element)\n\n\nvar componentUpdated = function componentUpdated(el, _ref2, vnode) {\n  var value = _ref2.value,\n      oldValue = _ref2.oldValue,\n      modifiers = _ref2.modifiers;\n  // Compare value/oldValue and modifiers to see if anything has changed\n  // and if so, destroy old observer and create new observer\n\n  /* istanbul ignore next */\n  modifiers = clone(modifiers);\n  /* istanbul ignore next */\n\n  if (el && (value !== oldValue || !el[OBSERVER_PROP_NAME] || !looseEqual(modifiers, el[OBSERVER_PROP_NAME]._prevModifiers))) {\n    // Re-bind on element\n    bind(el, {\n      value: value,\n      modifiers: modifiers\n    }, vnode);\n  }\n}; // When directive un-binds from element\n\n\nvar unbind = function unbind(el) {\n  // Remove the observer\n  destroy(el);\n}; // Export the directive\n\n\nexport var VBVisible = {\n  bind: bind,\n  componentUpdated: componentUpdated,\n  unbind: unbind\n};","import { Vue } from '../../vue';\nimport { NAME_TH } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BTd, props as BTdProps } from './td'; // --- Props ---\n\nexport var props = makePropsConfigurable(BTdProps, NAME_TH); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTh = /*#__PURE__*/Vue.extend({\n  name: NAME_TH,\n  extends: BTd,\n  props: props,\n  computed: {\n    tag: function tag() {\n      return 'th';\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { identity } from '../../../utils/identity';\nimport { isBoolean } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { toString } from '../../../utils/string';\nimport { attrsMixin } from '../../../mixins/attrs'; // Main `<table>` render mixin\n// Includes all main table styling options\n// --- Props ---\n\nexport var props = {\n  bordered: makeProp(PROP_TYPE_BOOLEAN, false),\n  borderless: makeProp(PROP_TYPE_BOOLEAN, false),\n  captionTop: makeProp(PROP_TYPE_BOOLEAN, false),\n  dark: makeProp(PROP_TYPE_BOOLEAN, false),\n  fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n  hover: makeProp(PROP_TYPE_BOOLEAN, false),\n  noBorderCollapse: makeProp(PROP_TYPE_BOOLEAN, false),\n  outlined: makeProp(PROP_TYPE_BOOLEAN, false),\n  responsive: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  // If a string, it is assumed to be the table `max-height` value\n  stickyHeader: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  striped: makeProp(PROP_TYPE_BOOLEAN, false),\n  tableClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tableVariant: makeProp(PROP_TYPE_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tableRendererMixin = Vue.extend({\n  mixins: [attrsMixin],\n  provide: function provide() {\n    return {\n      bvTable: this\n    };\n  },\n  // Don't place attributes on root element automatically,\n  // as table could be wrapped in responsive `<div>`\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    // Layout related computed props\n    isResponsive: function isResponsive() {\n      var responsive = this.responsive;\n      responsive = responsive === '' ? true : responsive;\n      return this.isStacked ? false : responsive;\n    },\n    isStickyHeader: function isStickyHeader() {\n      var stickyHeader = this.stickyHeader;\n      stickyHeader = stickyHeader === '' ? true : stickyHeader;\n      return this.isStacked ? false : stickyHeader;\n    },\n    wrapperClasses: function wrapperClasses() {\n      var isResponsive = this.isResponsive;\n      return [this.isStickyHeader ? 'b-table-sticky-header' : '', isResponsive === true ? 'table-responsive' : isResponsive ? \"table-responsive-\".concat(this.responsive) : ''].filter(identity);\n    },\n    wrapperStyles: function wrapperStyles() {\n      var isStickyHeader = this.isStickyHeader;\n      return isStickyHeader && !isBoolean(isStickyHeader) ? {\n        maxHeight: isStickyHeader\n      } : {};\n    },\n    tableClasses: function tableClasses() {\n      var hover = this.hover,\n          tableVariant = this.tableVariant;\n      hover = this.isTableSimple ? hover : hover && this.computedItems.length > 0 && !this.computedBusy;\n      return [// User supplied classes\n      this.tableClass, // Styling classes\n      {\n        'table-striped': this.striped,\n        'table-hover': hover,\n        'table-dark': this.dark,\n        'table-bordered': this.bordered,\n        'table-borderless': this.borderless,\n        'table-sm': this.small,\n        // The following are b-table custom styles\n        border: this.outlined,\n        'b-table-fixed': this.fixed,\n        'b-table-caption-top': this.captionTop,\n        'b-table-no-border-collapse': this.noBorderCollapse\n      }, tableVariant ? \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(tableVariant) : '', // Stacked table classes\n      this.stackedTableClasses, // Selectable classes\n      this.selectableTableClasses];\n    },\n    tableAttrs: function tableAttrs() {\n      var items = this.computedItems,\n          filteredItems = this.filteredItems,\n          fields = this.computedFields,\n          selectableTableAttrs = this.selectableTableAttrs; // Preserve user supplied aria-describedby, if provided in `$attrs`\n\n      var adb = [(this.bvAttrs || {})['aria-describedby'], this.captionId].filter(identity).join(' ') || null;\n      var ariaAttrs = this.isTableSimple ? {} : {\n        'aria-busy': this.computedBusy ? 'true' : 'false',\n        'aria-colcount': toString(fields.length),\n        'aria-describedby': adb\n      };\n      var rowCount = items && filteredItems && filteredItems.length > items.length ? toString(filteredItems.length) : null;\n      return _objectSpread(_objectSpread(_objectSpread({\n        // We set `aria-rowcount` before merging in `$attrs`,\n        // in case user has supplied their own\n        'aria-rowcount': rowCount\n      }, this.bvAttrs), {}, {\n        // Now we can override any `$attrs` here\n        id: this.safeId(),\n        role: 'table'\n      }, ariaAttrs), selectableTableAttrs);\n    }\n  },\n  render: function render(h) {\n    var wrapperClasses = this.wrapperClasses,\n        renderCaption = this.renderCaption,\n        renderColgroup = this.renderColgroup,\n        renderThead = this.renderThead,\n        renderTbody = this.renderTbody,\n        renderTfoot = this.renderTfoot;\n    var $content = [];\n\n    if (this.isTableSimple) {\n      $content.push(this.normalizeSlot());\n    } else {\n      // Build the `<caption>` (from caption mixin)\n      $content.push(renderCaption ? renderCaption() : null); // Build the `<colgroup>`\n\n      $content.push(renderColgroup ? renderColgroup() : null); // Build the `<thead>`\n\n      $content.push(renderThead ? renderThead() : null); // Build the `<tbody>`\n\n      $content.push(renderTbody ? renderTbody() : null); // Build the `<tfoot>`\n\n      $content.push(renderTfoot ? renderTfoot() : null);\n    } // Assemble `<table>`\n\n\n    var $table = h('table', {\n      staticClass: 'table b-table',\n      class: this.tableClasses,\n      attrs: this.tableAttrs,\n      key: 'b-table'\n    }, $content.filter(identity)); // Add responsive/sticky wrapper if needed and return table\n\n    return wrapperClasses.length > 0 ? h('div', {\n      class: wrapperClasses,\n      style: this.wrapperStyles,\n      key: 'wrap'\n    }, [$table]) : $table;\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Constants used by table helpers\nexport var FIELD_KEY_CELL_VARIANT = '_cellVariants';\nexport var FIELD_KEY_ROW_VARIANT = '_rowVariant';\nexport var FIELD_KEY_SHOW_DETAILS = '_showDetails'; // Object of item keys that should be ignored for headers and\n// stringification and filter events\n\nexport var IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce(function (result, key) {\n  return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, true));\n}, {}); // Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\n\nexport var EVENT_FILTER = ['a', 'a *', // Include content inside links\n'button', 'button *', // Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');","/**\n  * vee-validate v3.4.5\n  * (c) 2020 Abdelrahman Awad\n  * @license MIT\n  */\nimport Vue from 'vue';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nfunction __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\n\nfunction isNaN(value) {\r\n    // NaN is the one value that does not equal itself.\r\n    // eslint-disable-next-line\r\n    return value !== value;\r\n}\r\nfunction isNullOrUndefined(value) {\r\n    return value === null || value === undefined;\r\n}\r\nfunction isEmptyArray(arr) {\r\n    return Array.isArray(arr) && arr.length === 0;\r\n}\r\nvar isObject = function (obj) {\r\n    return obj !== null && obj && typeof obj === 'object' && !Array.isArray(obj);\r\n};\r\n/**\r\n * A reference comparison function with NaN support\r\n */\r\nfunction isRefEqual(lhs, rhs) {\r\n    if (isNaN(lhs) && isNaN(rhs)) {\r\n        return true;\r\n    }\r\n    return lhs === rhs;\r\n}\r\n/**\r\n * Shallow object comparison.\r\n */\r\nfunction isEqual(lhs, rhs) {\r\n    if (lhs instanceof RegExp && rhs instanceof RegExp) {\r\n        return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);\r\n    }\r\n    if (Array.isArray(lhs) && Array.isArray(rhs)) {\r\n        if (lhs.length !== rhs.length)\r\n            return false;\r\n        for (var i = 0; i < lhs.length; i++) {\r\n            if (!isEqual(lhs[i], rhs[i])) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    // if both are objects, compare each key recursively.\r\n    if (isObject(lhs) && isObject(rhs)) {\r\n        return (Object.keys(lhs).every(function (key) {\r\n            return isEqual(lhs[key], rhs[key]);\r\n        }) &&\r\n            Object.keys(rhs).every(function (key) {\r\n                return isEqual(lhs[key], rhs[key]);\r\n            }));\r\n    }\r\n    return isRefEqual(lhs, rhs);\r\n}\r\n// Checks if a given value is not an empty string or null or undefined.\r\nfunction isSpecified(val) {\r\n    if (val === '') {\r\n        return false;\r\n    }\r\n    return !isNullOrUndefined(val);\r\n}\r\nfunction isCallable(fn) {\r\n    return typeof fn === 'function';\r\n}\r\nfunction isLocator(value) {\r\n    return isCallable(value) && !!value.__locatorRef;\r\n}\n\nfunction findIndex(arrayLike, predicate) {\r\n    var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n    if (isCallable(array.findIndex)) {\r\n        return array.findIndex(predicate);\r\n    }\r\n    /* istanbul ignore next */\r\n    for (var i = 0; i < array.length; i++) {\r\n        if (predicate(array[i], i)) {\r\n            return i;\r\n        }\r\n    }\r\n    /* istanbul ignore next */\r\n    return -1;\r\n}\r\n/**\r\n * finds the first element that satisfies the predicate callback, polyfills array.find\r\n */\r\nfunction find(arrayLike, predicate) {\r\n    var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n    var idx = findIndex(array, predicate);\r\n    return idx === -1 ? undefined : array[idx];\r\n}\r\nfunction includes(collection, item) {\r\n    return collection.indexOf(item) !== -1;\r\n}\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nfunction toArray(arrayLike) {\r\n    if (isCallable(Array.from)) {\r\n        return Array.from(arrayLike);\r\n    }\r\n    /* istanbul ignore next */\r\n    return _copyArray(arrayLike);\r\n}\r\n/* istanbul ignore next */\r\nfunction _copyArray(arrayLike) {\r\n    var array = [];\r\n    var length = arrayLike.length;\r\n    for (var i = 0; i < length; i++) {\r\n        array.push(arrayLike[i]);\r\n    }\r\n    return array;\r\n}\r\nfunction values(obj) {\r\n    if (isCallable(Object.values)) {\r\n        return Object.values(obj);\r\n    }\r\n    // fallback to keys()\r\n    /* istanbul ignore next */\r\n    return Object.keys(obj).map(function (k) { return obj[k]; });\r\n}\r\nfunction merge(target, source) {\r\n    Object.keys(source).forEach(function (key) {\r\n        if (isObject(source[key])) {\r\n            if (!target[key]) {\r\n                target[key] = {};\r\n            }\r\n            merge(target[key], source[key]);\r\n            return;\r\n        }\r\n        target[key] = source[key];\r\n    });\r\n    return target;\r\n}\n\nfunction createFlags() {\r\n    return {\r\n        untouched: true,\r\n        touched: false,\r\n        dirty: false,\r\n        pristine: true,\r\n        valid: false,\r\n        invalid: false,\r\n        validated: false,\r\n        pending: false,\r\n        required: false,\r\n        changed: false,\r\n        passed: false,\r\n        failed: false\r\n    };\r\n}\n\nfunction identity(x) {\r\n    return x;\r\n}\r\nfunction debounce(fn, wait, token) {\r\n    if (wait === void 0) { wait = 0; }\r\n    if (token === void 0) { token = { cancelled: false }; }\r\n    if (wait === 0) {\r\n        return fn;\r\n    }\r\n    var timeout;\r\n    return function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        var later = function () {\r\n            timeout = undefined;\r\n            // check if the fn call was cancelled.\r\n            if (!token.cancelled)\r\n                fn.apply(void 0, args);\r\n        };\r\n        // because we might want to use Node.js setTimout for SSR.\r\n        clearTimeout(timeout);\r\n        timeout = setTimeout(later, wait);\r\n    };\r\n}\n\n/**\r\n * Emits a warning to the console\r\n */\r\nfunction warn(message) {\r\n    console.warn(\"[vee-validate] \" + message);\r\n}\r\n/**\r\n * Replaces placeholder values in a string with their actual values\r\n */\r\nfunction interpolate(template, values) {\r\n    return template.replace(/{([^}]+)}/g, function (_, p) {\r\n        return p in values ? values[p] : \"{\" + p + \"}\";\r\n    });\r\n}\n\nvar RULES = {};\r\nfunction normalizeSchema(schema) {\r\n    var _a;\r\n    if ((_a = schema.params) === null || _a === void 0 ? void 0 : _a.length) {\r\n        schema.params = schema.params.map(function (param) {\r\n            if (typeof param === 'string') {\r\n                return { name: param };\r\n            }\r\n            return param;\r\n        });\r\n    }\r\n    return schema;\r\n}\r\nvar RuleContainer = /** @class */ (function () {\r\n    function RuleContainer() {\r\n    }\r\n    RuleContainer.extend = function (name, schema) {\r\n        // if rule already exists, overwrite it.\r\n        var rule = normalizeSchema(schema);\r\n        if (RULES[name]) {\r\n            RULES[name] = merge(RULES[name], schema);\r\n            return;\r\n        }\r\n        RULES[name] = __assign({ lazy: false, computesRequired: false }, rule);\r\n    };\r\n    RuleContainer.isLazy = function (name) {\r\n        var _a;\r\n        return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.lazy);\r\n    };\r\n    RuleContainer.isRequireRule = function (name) {\r\n        var _a;\r\n        return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.computesRequired);\r\n    };\r\n    RuleContainer.getRuleDefinition = function (ruleName) {\r\n        return RULES[ruleName];\r\n    };\r\n    return RuleContainer;\r\n}());\r\n/**\r\n * Adds a custom validator to the list of validation rules.\r\n */\r\nfunction extend(name, schema) {\r\n    // makes sure new rules are properly formatted.\r\n    guardExtend(name, schema);\r\n    // Full schema object.\r\n    if (typeof schema === 'object') {\r\n        RuleContainer.extend(name, schema);\r\n        return;\r\n    }\r\n    RuleContainer.extend(name, {\r\n        validate: schema\r\n    });\r\n}\r\n/**\r\n * Guards from extension violations.\r\n */\r\nfunction guardExtend(name, validator) {\r\n    if (isCallable(validator)) {\r\n        return;\r\n    }\r\n    if (isCallable(validator.validate)) {\r\n        return;\r\n    }\r\n    if (RuleContainer.getRuleDefinition(name)) {\r\n        return;\r\n    }\r\n    throw new Error(\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\");\r\n}\n\nvar DEFAULT_CONFIG = {\r\n    defaultMessage: \"{_field_} is not valid.\",\r\n    skipOptional: true,\r\n    classes: {\r\n        touched: 'touched',\r\n        untouched: 'untouched',\r\n        valid: 'valid',\r\n        invalid: 'invalid',\r\n        pristine: 'pristine',\r\n        dirty: 'dirty' // control has been interacted with\r\n    },\r\n    bails: true,\r\n    mode: 'aggressive',\r\n    useConstraintAttrs: true\r\n};\r\nvar currentConfig = __assign({}, DEFAULT_CONFIG);\r\nvar getConfig = function () { return currentConfig; };\r\nvar setConfig = function (newConf) {\r\n    currentConfig = __assign(__assign({}, currentConfig), newConf);\r\n};\r\nvar configure = function (cfg) {\r\n    setConfig(cfg);\r\n};\n\n/**\r\n * Normalizes the given rules expression.\r\n */\r\nfunction normalizeRules(rules) {\r\n    // if falsy value return an empty object.\r\n    var acc = {};\r\n    Object.defineProperty(acc, '_$$isNormalized', {\r\n        value: true,\r\n        writable: false,\r\n        enumerable: false,\r\n        configurable: false\r\n    });\r\n    if (!rules) {\r\n        return acc;\r\n    }\r\n    // Object is already normalized, skip.\r\n    if (isObject(rules) && rules._$$isNormalized) {\r\n        return rules;\r\n    }\r\n    if (isObject(rules)) {\r\n        return Object.keys(rules).reduce(function (prev, curr) {\r\n            var params = [];\r\n            if (rules[curr] === true) {\r\n                params = [];\r\n            }\r\n            else if (Array.isArray(rules[curr])) {\r\n                params = rules[curr];\r\n            }\r\n            else if (isObject(rules[curr])) {\r\n                params = rules[curr];\r\n            }\r\n            else {\r\n                params = [rules[curr]];\r\n            }\r\n            if (rules[curr] !== false) {\r\n                prev[curr] = buildParams(curr, params);\r\n            }\r\n            return prev;\r\n        }, acc);\r\n    }\r\n    /* istanbul ignore if */\r\n    if (typeof rules !== 'string') {\r\n        warn('rules must be either a string or an object.');\r\n        return acc;\r\n    }\r\n    return rules.split('|').reduce(function (prev, rule) {\r\n        var parsedRule = parseRule(rule);\r\n        if (!parsedRule.name) {\r\n            return prev;\r\n        }\r\n        prev[parsedRule.name] = buildParams(parsedRule.name, parsedRule.params);\r\n        return prev;\r\n    }, acc);\r\n}\r\nfunction buildParams(ruleName, provided) {\r\n    var ruleSchema = RuleContainer.getRuleDefinition(ruleName);\r\n    if (!ruleSchema) {\r\n        return provided;\r\n    }\r\n    var params = {};\r\n    if (!ruleSchema.params && !Array.isArray(provided)) {\r\n        throw new Error('You provided an object params to a rule that has no defined schema.');\r\n    }\r\n    // Rule probably uses an array for their args, keep it as is.\r\n    if (Array.isArray(provided) && !ruleSchema.params) {\r\n        return provided;\r\n    }\r\n    var definedParams;\r\n    // collect the params schema.\r\n    if (!ruleSchema.params || (ruleSchema.params.length < provided.length && Array.isArray(provided))) {\r\n        var lastDefinedParam_1;\r\n        // collect any additional parameters in the last item.\r\n        definedParams = provided.map(function (_, idx) {\r\n            var _a;\r\n            var param = (_a = ruleSchema.params) === null || _a === void 0 ? void 0 : _a[idx];\r\n            lastDefinedParam_1 = param || lastDefinedParam_1;\r\n            if (!param) {\r\n                param = lastDefinedParam_1;\r\n            }\r\n            return param;\r\n        });\r\n    }\r\n    else {\r\n        definedParams = ruleSchema.params;\r\n    }\r\n    // Match the provided array length with a temporary schema.\r\n    for (var i = 0; i < definedParams.length; i++) {\r\n        var options = definedParams[i];\r\n        var value = options.default;\r\n        // if the provided is an array, map element value.\r\n        if (Array.isArray(provided)) {\r\n            if (i in provided) {\r\n                value = provided[i];\r\n            }\r\n        }\r\n        else {\r\n            // If the param exists in the provided object.\r\n            if (options.name in provided) {\r\n                value = provided[options.name];\r\n                // if the provided is the first param value.\r\n            }\r\n            else if (definedParams.length === 1) {\r\n                value = provided;\r\n            }\r\n        }\r\n        // if the param is a target, resolve the target value.\r\n        if (options.isTarget) {\r\n            value = createLocator(value, options.cast);\r\n        }\r\n        // A target param using interpolation\r\n        if (typeof value === 'string' && value[0] === '@') {\r\n            value = createLocator(value.slice(1), options.cast);\r\n        }\r\n        // If there is a transformer defined.\r\n        if (!isLocator(value) && options.cast) {\r\n            value = options.cast(value);\r\n        }\r\n        // already been set, probably multiple values.\r\n        if (params[options.name]) {\r\n            params[options.name] = Array.isArray(params[options.name]) ? params[options.name] : [params[options.name]];\r\n            params[options.name].push(value);\r\n        }\r\n        else {\r\n            // set the value.\r\n            params[options.name] = value;\r\n        }\r\n    }\r\n    return params;\r\n}\r\n/**\r\n * Parses a rule string expression.\r\n */\r\nvar parseRule = function (rule) {\r\n    var params = [];\r\n    var name = rule.split(':')[0];\r\n    if (includes(rule, ':')) {\r\n        params = rule\r\n            .split(':')\r\n            .slice(1)\r\n            .join(':')\r\n            .split(',');\r\n    }\r\n    return { name: name, params: params };\r\n};\r\nfunction createLocator(value, castFn) {\r\n    var locator = function (crossTable) {\r\n        var val = crossTable[value];\r\n        return castFn ? castFn(val) : val;\r\n    };\r\n    locator.__locatorRef = value;\r\n    return locator;\r\n}\r\nfunction extractLocators(params) {\r\n    if (Array.isArray(params)) {\r\n        return params.filter(function (param) {\r\n            return isLocator(param) || (typeof param === 'string' && param[0] === '@');\r\n        });\r\n    }\r\n    return Object.keys(params)\r\n        .filter(function (key) { return isLocator(params[key]); })\r\n        .map(function (key) { return params[key]; });\r\n}\n\n/**\r\n * Validates a value against the rules.\r\n */\r\nfunction validate(value, rules, options) {\r\n    if (options === void 0) { options = {}; }\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var shouldBail, skipIfEmpty, field, result, errors, failedRules, regenerateMap;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    shouldBail = options === null || options === void 0 ? void 0 : options.bails;\r\n                    skipIfEmpty = options === null || options === void 0 ? void 0 : options.skipIfEmpty;\r\n                    field = {\r\n                        name: (options === null || options === void 0 ? void 0 : options.name) || '{field}',\r\n                        rules: normalizeRules(rules),\r\n                        bails: shouldBail !== null && shouldBail !== void 0 ? shouldBail : true,\r\n                        skipIfEmpty: skipIfEmpty !== null && skipIfEmpty !== void 0 ? skipIfEmpty : true,\r\n                        forceRequired: false,\r\n                        crossTable: (options === null || options === void 0 ? void 0 : options.values) || {},\r\n                        names: (options === null || options === void 0 ? void 0 : options.names) || {},\r\n                        customMessages: (options === null || options === void 0 ? void 0 : options.customMessages) || {}\r\n                    };\r\n                    return [4 /*yield*/, _validate(field, value, options)];\r\n                case 1:\r\n                    result = _a.sent();\r\n                    errors = [];\r\n                    failedRules = {};\r\n                    regenerateMap = {};\r\n                    result.errors.forEach(function (e) {\r\n                        var msg = e.msg();\r\n                        errors.push(msg);\r\n                        failedRules[e.rule] = msg;\r\n                        regenerateMap[e.rule] = e.msg;\r\n                    });\r\n                    return [2 /*return*/, {\r\n                            valid: result.valid,\r\n                            errors: errors,\r\n                            failedRules: failedRules,\r\n                            regenerateMap: regenerateMap\r\n                        }];\r\n            }\r\n        });\r\n    });\r\n}\r\n/**\r\n * Starts the validation process.\r\n */\r\nfunction _validate(field, value, _a) {\r\n    var _b = (_a === void 0 ? {} : _a).isInitial, isInitial = _b === void 0 ? false : _b;\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var _c, shouldSkip, errors, rules, length, i, rule, result;\r\n        return __generator(this, function (_d) {\r\n            switch (_d.label) {\r\n                case 0: return [4 /*yield*/, _shouldSkip(field, value)];\r\n                case 1:\r\n                    _c = _d.sent(), shouldSkip = _c.shouldSkip, errors = _c.errors;\r\n                    if (shouldSkip) {\r\n                        return [2 /*return*/, {\r\n                                valid: !errors.length,\r\n                                errors: errors\r\n                            }];\r\n                    }\r\n                    rules = Object.keys(field.rules).filter(function (rule) { return !RuleContainer.isRequireRule(rule); });\r\n                    length = rules.length;\r\n                    i = 0;\r\n                    _d.label = 2;\r\n                case 2:\r\n                    if (!(i < length)) return [3 /*break*/, 5];\r\n                    if (isInitial && RuleContainer.isLazy(rules[i])) {\r\n                        return [3 /*break*/, 4];\r\n                    }\r\n                    rule = rules[i];\r\n                    return [4 /*yield*/, _test(field, value, {\r\n                            name: rule,\r\n                            params: field.rules[rule]\r\n                        })];\r\n                case 3:\r\n                    result = _d.sent();\r\n                    if (!result.valid && result.error) {\r\n                        errors.push(result.error);\r\n                        if (field.bails) {\r\n                            return [2 /*return*/, {\r\n                                    valid: false,\r\n                                    errors: errors\r\n                                }];\r\n                        }\r\n                    }\r\n                    _d.label = 4;\r\n                case 4:\r\n                    i++;\r\n                    return [3 /*break*/, 2];\r\n                case 5: return [2 /*return*/, {\r\n                        valid: !errors.length,\r\n                        errors: errors\r\n                    }];\r\n            }\r\n        });\r\n    });\r\n}\r\nfunction _shouldSkip(field, value) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var requireRules, length, errors, isEmpty, isEmptyAndOptional, isRequired, i, rule, result;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);\r\n                    length = requireRules.length;\r\n                    errors = [];\r\n                    isEmpty = isNullOrUndefined(value) || value === '' || isEmptyArray(value);\r\n                    isEmptyAndOptional = isEmpty && field.skipIfEmpty;\r\n                    isRequired = false;\r\n                    i = 0;\r\n                    _a.label = 1;\r\n                case 1:\r\n                    if (!(i < length)) return [3 /*break*/, 4];\r\n                    rule = requireRules[i];\r\n                    return [4 /*yield*/, _test(field, value, {\r\n                            name: rule,\r\n                            params: field.rules[rule]\r\n                        })];\r\n                case 2:\r\n                    result = _a.sent();\r\n                    if (!isObject(result)) {\r\n                        throw new Error('Require rules has to return an object (see docs)');\r\n                    }\r\n                    if (result.required) {\r\n                        isRequired = true;\r\n                    }\r\n                    if (!result.valid && result.error) {\r\n                        errors.push(result.error);\r\n                        // Exit early as the field is required and failed validation.\r\n                        if (field.bails) {\r\n                            return [2 /*return*/, {\r\n                                    shouldSkip: true,\r\n                                    errors: errors\r\n                                }];\r\n                        }\r\n                    }\r\n                    _a.label = 3;\r\n                case 3:\r\n                    i++;\r\n                    return [3 /*break*/, 1];\r\n                case 4:\r\n                    if (isEmpty && !isRequired && !field.skipIfEmpty) {\r\n                        return [2 /*return*/, {\r\n                                shouldSkip: false,\r\n                                errors: errors\r\n                            }];\r\n                    }\r\n                    // field is configured to run through the pipeline regardless\r\n                    if (!field.bails && !isEmptyAndOptional) {\r\n                        return [2 /*return*/, {\r\n                                shouldSkip: false,\r\n                                errors: errors\r\n                            }];\r\n                    }\r\n                    // skip if the field is not required and has an empty value.\r\n                    return [2 /*return*/, {\r\n                            shouldSkip: !isRequired && isEmpty,\r\n                            errors: errors\r\n                        }];\r\n            }\r\n        });\r\n    });\r\n}\r\n/**\r\n * Tests a single input value against a rule.\r\n */\r\nfunction _test(field, value, rule) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var ruleSchema, normalizedValue, params, result, values_1;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    ruleSchema = RuleContainer.getRuleDefinition(rule.name);\r\n                    if (!ruleSchema || !ruleSchema.validate) {\r\n                        throw new Error(\"No such validator '\" + rule.name + \"' exists.\");\r\n                    }\r\n                    normalizedValue = ruleSchema.castValue ? ruleSchema.castValue(value) : value;\r\n                    params = fillTargetValues(rule.params, field.crossTable);\r\n                    return [4 /*yield*/, ruleSchema.validate(normalizedValue, params)];\r\n                case 1:\r\n                    result = _a.sent();\r\n                    if (typeof result === 'string') {\r\n                        values_1 = __assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: rule.name });\r\n                        return [2 /*return*/, {\r\n                                valid: false,\r\n                                error: { rule: rule.name, msg: function () { return interpolate(result, values_1); } }\r\n                            }];\r\n                    }\r\n                    if (!isObject(result)) {\r\n                        result = { valid: result };\r\n                    }\r\n                    return [2 /*return*/, {\r\n                            valid: result.valid,\r\n                            required: result.required,\r\n                            error: result.valid ? undefined : _generateFieldError(field, value, ruleSchema, rule.name, params)\r\n                        }];\r\n            }\r\n        });\r\n    });\r\n}\r\n/**\r\n * Generates error messages.\r\n */\r\nfunction _generateFieldError(field, value, ruleSchema, ruleName, params) {\r\n    var _a;\r\n    var message = (_a = field.customMessages[ruleName]) !== null && _a !== void 0 ? _a : ruleSchema.message;\r\n    var ruleTargets = _getRuleTargets(field, ruleSchema, ruleName);\r\n    var _b = _getUserTargets(field, ruleSchema, ruleName, message), userTargets = _b.userTargets, userMessage = _b.userMessage;\r\n    var values = __assign(__assign(__assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: ruleName }), ruleTargets), userTargets);\r\n    return {\r\n        msg: function () { return _normalizeMessage(userMessage || getConfig().defaultMessage, field.name, values); },\r\n        rule: ruleName\r\n    };\r\n}\r\nfunction _getRuleTargets(field, ruleSchema, ruleName) {\r\n    var params = ruleSchema.params;\r\n    if (!params) {\r\n        return {};\r\n    }\r\n    var numTargets = params.filter(function (param) { return param.isTarget; }).length;\r\n    if (numTargets <= 0) {\r\n        return {};\r\n    }\r\n    var names = {};\r\n    var ruleConfig = field.rules[ruleName];\r\n    if (!Array.isArray(ruleConfig) && isObject(ruleConfig)) {\r\n        ruleConfig = params.map(function (param) {\r\n            return ruleConfig[param.name];\r\n        });\r\n    }\r\n    for (var index = 0; index < params.length; index++) {\r\n        var param = params[index];\r\n        var key = ruleConfig[index];\r\n        if (!isLocator(key)) {\r\n            continue;\r\n        }\r\n        key = key.__locatorRef;\r\n        var name_1 = field.names[key] || key;\r\n        names[param.name] = name_1;\r\n        names[\"_\" + param.name + \"_\"] = field.crossTable[key];\r\n    }\r\n    return names;\r\n}\r\nfunction _getUserTargets(field, ruleSchema, ruleName, userMessage) {\r\n    var userTargets = {};\r\n    var rules = field.rules[ruleName];\r\n    var params = ruleSchema.params || [];\r\n    // early return if no rules\r\n    if (!rules) {\r\n        return {};\r\n    }\r\n    // check all rules to convert targets\r\n    Object.keys(rules).forEach(function (key, index) {\r\n        // get the rule\r\n        var rule = rules[key];\r\n        if (!isLocator(rule)) {\r\n            return {};\r\n        }\r\n        // get associated parameter\r\n        var param = params[index];\r\n        if (!param) {\r\n            return {};\r\n        }\r\n        // grab the name of the target\r\n        var name = rule.__locatorRef;\r\n        userTargets[param.name] = field.names[name] || name;\r\n        userTargets[\"_\" + param.name + \"_\"] = field.crossTable[name];\r\n    });\r\n    return {\r\n        userTargets: userTargets,\r\n        userMessage: userMessage\r\n    };\r\n}\r\nfunction _normalizeMessage(template, field, values) {\r\n    if (typeof template === 'function') {\r\n        return template(field, values);\r\n    }\r\n    return interpolate(template, __assign(__assign({}, values), { _field_: field }));\r\n}\r\nfunction fillTargetValues(params, crossTable) {\r\n    if (Array.isArray(params)) {\r\n        return params.map(function (param) {\r\n            var targetPart = typeof param === 'string' && param[0] === '@' ? param.slice(1) : param;\r\n            if (targetPart in crossTable) {\r\n                return crossTable[targetPart];\r\n            }\r\n            return param;\r\n        });\r\n    }\r\n    var values = {};\r\n    var normalize = function (value) {\r\n        if (isLocator(value)) {\r\n            return value(crossTable);\r\n        }\r\n        return value;\r\n    };\r\n    Object.keys(params).forEach(function (param) {\r\n        values[param] = normalize(params[param]);\r\n    });\r\n    return values;\r\n}\n\nvar aggressive = function () { return ({\r\n    on: ['input', 'blur']\r\n}); };\r\nvar lazy = function () { return ({\r\n    on: ['change', 'blur']\r\n}); };\r\nvar eager = function (_a) {\r\n    var errors = _a.errors;\r\n    if (errors.length) {\r\n        return {\r\n            on: ['input', 'change']\r\n        };\r\n    }\r\n    return {\r\n        on: ['change', 'blur']\r\n    };\r\n};\r\nvar passive = function () { return ({\r\n    on: []\r\n}); };\r\nvar modes = {\r\n    aggressive: aggressive,\r\n    eager: eager,\r\n    passive: passive,\r\n    lazy: lazy\r\n};\r\nvar setInteractionMode = function (mode, implementation) {\r\n    setConfig({ mode: mode });\r\n    if (!implementation) {\r\n        return;\r\n    }\r\n    if (!isCallable(implementation)) {\r\n        throw new Error('A mode implementation must be a function');\r\n    }\r\n    modes[mode] = implementation;\r\n};\n\nvar EVENT_BUS = new Vue();\r\nfunction localeChanged() {\r\n    EVENT_BUS.$emit('change:locale');\r\n}\n\nvar Dictionary = /** @class */ (function () {\r\n    function Dictionary(locale, dictionary) {\r\n        this.container = {};\r\n        this.locale = locale;\r\n        this.merge(dictionary);\r\n    }\r\n    Dictionary.prototype.resolve = function (field, rule, values) {\r\n        return this.format(this.locale, field, rule, values);\r\n    };\r\n    Dictionary.prototype.format = function (locale, field, rule, values) {\r\n        var _a, _b, _c, _d, _e, _f, _g, _h;\r\n        var message;\r\n        // find if specific message for that field was specified.\r\n        var fieldContainer = (_c = (_b = (_a = this.container[locale]) === null || _a === void 0 ? void 0 : _a.fields) === null || _b === void 0 ? void 0 : _b[field]) === null || _c === void 0 ? void 0 : _c[rule];\r\n        var messageContainer = (_e = (_d = this.container[locale]) === null || _d === void 0 ? void 0 : _d.messages) === null || _e === void 0 ? void 0 : _e[rule];\r\n        message = fieldContainer || messageContainer || '';\r\n        if (!message) {\r\n            message = '{_field_} is not valid';\r\n        }\r\n        field = (_h = (_g = (_f = this.container[locale]) === null || _f === void 0 ? void 0 : _f.names) === null || _g === void 0 ? void 0 : _g[field]) !== null && _h !== void 0 ? _h : field;\r\n        return isCallable(message) ? message(field, values) : interpolate(message, __assign(__assign({}, values), { _field_: field }));\r\n    };\r\n    Dictionary.prototype.merge = function (dictionary) {\r\n        merge(this.container, dictionary);\r\n    };\r\n    Dictionary.prototype.hasRule = function (name) {\r\n        var _a, _b;\r\n        return !!((_b = (_a = this.container[this.locale]) === null || _a === void 0 ? void 0 : _a.messages) === null || _b === void 0 ? void 0 : _b[name]);\r\n    };\r\n    return Dictionary;\r\n}());\r\nvar DICTIONARY;\r\nfunction localize(locale, dictionary) {\r\n    var _a;\r\n    if (!DICTIONARY) {\r\n        DICTIONARY = new Dictionary('en', {});\r\n        setConfig({\r\n            defaultMessage: function (field, values) {\r\n                return DICTIONARY.resolve(field, values === null || values === void 0 ? void 0 : values._rule_, values || {});\r\n            }\r\n        });\r\n    }\r\n    if (typeof locale === 'string') {\r\n        DICTIONARY.locale = locale;\r\n        if (dictionary) {\r\n            DICTIONARY.merge((_a = {}, _a[locale] = dictionary, _a));\r\n        }\r\n        localeChanged();\r\n        return;\r\n    }\r\n    DICTIONARY.merge(locale);\r\n}\n\nvar isEvent = function (evt) {\r\n    if (!evt) {\r\n        return false;\r\n    }\r\n    if (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) {\r\n        return true;\r\n    }\r\n    // this is for IE\r\n    /* istanbul ignore next */\r\n    if (evt && evt.srcElement) {\r\n        return true;\r\n    }\r\n    return false;\r\n};\r\nfunction normalizeEventValue(value) {\r\n    var _a, _b;\r\n    if (!isEvent(value)) {\r\n        return value;\r\n    }\r\n    var input = value.target;\r\n    if (input.type === 'file' && input.files) {\r\n        return toArray(input.files);\r\n    }\r\n    // If the input has a `v-model.number` modifier applied.\r\n    if ((_a = input._vModifiers) === null || _a === void 0 ? void 0 : _a.number) {\r\n        // as per the spec the v-model.number uses parseFloat\r\n        var valueAsNumber = parseFloat(input.value);\r\n        if (isNaN(valueAsNumber)) {\r\n            return input.value;\r\n        }\r\n        return valueAsNumber;\r\n    }\r\n    if ((_b = input._vModifiers) === null || _b === void 0 ? void 0 : _b.trim) {\r\n        var trimmedValue = typeof input.value === 'string' ? input.value.trim() : input.value;\r\n        return trimmedValue;\r\n    }\r\n    return input.value;\r\n}\n\nvar isTextInput = function (vnode) {\r\n    var _a;\r\n    var attrs = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) || vnode.elm;\r\n    // it will fallback to being a text input per browsers spec.\r\n    if (vnode.tag === 'input' && (!attrs || !attrs.type)) {\r\n        return true;\r\n    }\r\n    if (vnode.tag === 'textarea') {\r\n        return true;\r\n    }\r\n    return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'number'], attrs === null || attrs === void 0 ? void 0 : attrs.type);\r\n};\r\n// export const isCheckboxOrRadioInput = (vnode: VNode): boolean => {\r\n//   const attrs = (vnode.data && vnode.data.attrs) || vnode.elm;\r\n//   return includes(['radio', 'checkbox'], attrs && attrs.type);\r\n// };\r\n// Gets the model object on the vnode.\r\nfunction findModel(vnode) {\r\n    if (!vnode.data) {\r\n        return undefined;\r\n    }\r\n    // Component Model\r\n    // THIS IS NOT TYPED IN OFFICIAL VUE TYPINGS\r\n    // eslint-disable-next-line\r\n    var nonStandardVNodeData = vnode.data;\r\n    if ('model' in nonStandardVNodeData) {\r\n        return nonStandardVNodeData.model;\r\n    }\r\n    if (!vnode.data.directives) {\r\n        return undefined;\r\n    }\r\n    return find(vnode.data.directives, function (d) { return d.name === 'model'; });\r\n}\r\nfunction findValue(vnode) {\r\n    var _a, _b;\r\n    var model = findModel(vnode);\r\n    if (model) {\r\n        return { value: model.value };\r\n    }\r\n    var config = findModelConfig(vnode);\r\n    var prop = (config === null || config === void 0 ? void 0 : config.prop) || 'value';\r\n    if (((_a = vnode.componentOptions) === null || _a === void 0 ? void 0 : _a.propsData) && prop in vnode.componentOptions.propsData) {\r\n        var propsDataWithValue = vnode.componentOptions.propsData;\r\n        return { value: propsDataWithValue[prop] };\r\n    }\r\n    if (((_b = vnode.data) === null || _b === void 0 ? void 0 : _b.domProps) && 'value' in vnode.data.domProps) {\r\n        return { value: vnode.data.domProps.value };\r\n    }\r\n    return undefined;\r\n}\r\nfunction extractChildren(vnode) {\r\n    if (Array.isArray(vnode)) {\r\n        return vnode;\r\n    }\r\n    if (Array.isArray(vnode.children)) {\r\n        return vnode.children;\r\n    }\r\n    /* istanbul ignore next */\r\n    if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\r\n        return vnode.componentOptions.children;\r\n    }\r\n    return [];\r\n}\r\nfunction findInputNodes(vnode) {\r\n    if (!Array.isArray(vnode) && findValue(vnode) !== undefined) {\r\n        return [vnode];\r\n    }\r\n    var children = extractChildren(vnode);\r\n    return children.reduce(function (nodes, node) {\r\n        var candidates = findInputNodes(node);\r\n        if (candidates.length) {\r\n            nodes.push.apply(nodes, candidates);\r\n        }\r\n        return nodes;\r\n    }, []);\r\n}\r\n// Resolves v-model config if exists.\r\nfunction findModelConfig(vnode) {\r\n    /* istanbul ignore next */\r\n    if (!vnode.componentOptions)\r\n        return null;\r\n    // This is also not typed in the standard Vue TS.\r\n    return vnode.componentOptions.Ctor.options.model;\r\n}\r\n// Adds a listener to vnode listener object.\r\nfunction mergeVNodeListeners(obj, eventName, handler) {\r\n    // no listener at all.\r\n    if (isNullOrUndefined(obj[eventName])) {\r\n        obj[eventName] = [handler];\r\n        return;\r\n    }\r\n    // Is an invoker.\r\n    if (isCallable(obj[eventName]) && obj[eventName].fns) {\r\n        var invoker = obj[eventName];\r\n        invoker.fns = Array.isArray(invoker.fns) ? invoker.fns : [invoker.fns];\r\n        if (!includes(invoker.fns, handler)) {\r\n            invoker.fns.push(handler);\r\n        }\r\n        return;\r\n    }\r\n    if (isCallable(obj[eventName])) {\r\n        var prev = obj[eventName];\r\n        obj[eventName] = [prev];\r\n    }\r\n    if (Array.isArray(obj[eventName]) && !includes(obj[eventName], handler)) {\r\n        obj[eventName].push(handler);\r\n    }\r\n}\r\n// Adds a listener to a native HTML vnode.\r\nfunction addNativeNodeListener(node, eventName, handler) {\r\n    /* istanbul ignore next */\r\n    if (!node.data) {\r\n        node.data = {};\r\n    }\r\n    if (isNullOrUndefined(node.data.on)) {\r\n        node.data.on = {};\r\n    }\r\n    mergeVNodeListeners(node.data.on, eventName, handler);\r\n}\r\n// Adds a listener to a Vue component vnode.\r\nfunction addComponentNodeListener(node, eventName, handler) {\r\n    /* istanbul ignore next */\r\n    if (!node.componentOptions) {\r\n        return;\r\n    }\r\n    /* istanbul ignore next */\r\n    if (!node.componentOptions.listeners) {\r\n        node.componentOptions.listeners = {};\r\n    }\r\n    mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\r\n}\r\nfunction addVNodeListener(vnode, eventName, handler) {\r\n    if (vnode.componentOptions) {\r\n        addComponentNodeListener(vnode, eventName, handler);\r\n        return;\r\n    }\r\n    addNativeNodeListener(vnode, eventName, handler);\r\n}\r\n// Determines if `change` should be used over `input` for listeners.\r\nfunction getInputEventName(vnode, model) {\r\n    var _a;\r\n    // Is a component.\r\n    if (vnode.componentOptions) {\r\n        var event_1 = (findModelConfig(vnode) || { event: 'input' }).event;\r\n        return event_1;\r\n    }\r\n    // Lazy Models typically use change event\r\n    if ((_a = model === null || model === void 0 ? void 0 : model.modifiers) === null || _a === void 0 ? void 0 : _a.lazy) {\r\n        return 'change';\r\n    }\r\n    // is a textual-type input.\r\n    if (isTextInput(vnode)) {\r\n        return 'input';\r\n    }\r\n    return 'change';\r\n}\r\nfunction isHTMLNode(node) {\r\n    return includes(['input', 'select', 'textarea'], node.tag);\r\n}\r\n// TODO: Type this one properly.\r\nfunction normalizeSlots(slots, ctx) {\r\n    var acc = [];\r\n    return Object.keys(slots).reduce(function (arr, key) {\r\n        slots[key].forEach(function (vnode) {\r\n            if (!vnode.context) {\r\n                slots[key].context = ctx;\r\n                if (!vnode.data) {\r\n                    vnode.data = {};\r\n                }\r\n                vnode.data.slot = key;\r\n            }\r\n        });\r\n        return arr.concat(slots[key]);\r\n    }, acc);\r\n}\r\nfunction resolveTextualRules(vnode) {\r\n    var _a;\r\n    var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n    var rules = {};\r\n    if (!attrs)\r\n        return rules;\r\n    if (attrs.type === 'email' && RuleContainer.getRuleDefinition('email')) {\r\n        rules.email = ['multiple' in attrs];\r\n    }\r\n    if (attrs.pattern && RuleContainer.getRuleDefinition('regex')) {\r\n        rules.regex = attrs.pattern;\r\n    }\r\n    if (attrs.maxlength >= 0 && RuleContainer.getRuleDefinition('max')) {\r\n        rules.max = attrs.maxlength;\r\n    }\r\n    if (attrs.minlength >= 0 && RuleContainer.getRuleDefinition('min')) {\r\n        rules.min = attrs.minlength;\r\n    }\r\n    if (attrs.type === 'number') {\r\n        if (isSpecified(attrs.min) && RuleContainer.getRuleDefinition('min_value')) {\r\n            rules.min_value = Number(attrs.min);\r\n        }\r\n        if (isSpecified(attrs.max) && RuleContainer.getRuleDefinition('max_value')) {\r\n            rules.max_value = Number(attrs.max);\r\n        }\r\n    }\r\n    return rules;\r\n}\r\nfunction resolveRules(vnode) {\r\n    var _a;\r\n    var htmlTags = ['input', 'select', 'textarea'];\r\n    var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n    if (!includes(htmlTags, vnode.tag) || !attrs) {\r\n        return {};\r\n    }\r\n    var rules = {};\r\n    if ('required' in attrs && attrs.required !== false && RuleContainer.getRuleDefinition('required')) {\r\n        rules.required = attrs.type === 'checkbox' ? [true] : true;\r\n    }\r\n    if (isTextInput(vnode)) {\r\n        return normalizeRules(__assign(__assign({}, rules), resolveTextualRules(vnode)));\r\n    }\r\n    return normalizeRules(rules);\r\n}\r\nfunction normalizeChildren(context, slotProps) {\r\n    if (context.$scopedSlots.default) {\r\n        return context.$scopedSlots.default(slotProps) || [];\r\n    }\r\n    return context.$slots.default || [];\r\n}\n\n/**\r\n * Determines if a provider needs to run validation.\r\n */\r\nfunction shouldValidate(ctx, value) {\r\n    // when an immediate/initial validation is needed and wasn't done before.\r\n    if (!ctx._ignoreImmediate && ctx.immediate) {\r\n        return true;\r\n    }\r\n    // when the value changes for whatever reason.\r\n    if (!isRefEqual(ctx.value, value) && ctx.normalizedEvents.length) {\r\n        return true;\r\n    }\r\n    // when it needs validation due to props/cross-fields changes.\r\n    if (ctx._needsValidation) {\r\n        return true;\r\n    }\r\n    // when the initial value is undefined and the field wasn't rendered yet.\r\n    if (!ctx.initialized && value === undefined) {\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\nfunction createValidationCtx(ctx) {\r\n    return __assign(__assign({}, ctx.flags), { errors: ctx.errors, classes: ctx.classes, failedRules: ctx.failedRules, reset: function () { return ctx.reset(); }, validate: function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            return ctx.validate.apply(ctx, args);\r\n        }, ariaInput: {\r\n            'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\r\n            'aria-required': ctx.isRequired ? 'true' : 'false',\r\n            'aria-errormessage': \"vee_\" + ctx.id\r\n        }, ariaMsg: {\r\n            id: \"vee_\" + ctx.id,\r\n            'aria-live': ctx.errors.length ? 'assertive' : 'off'\r\n        } });\r\n}\r\nfunction onRenderUpdate(vm, value) {\r\n    if (!vm.initialized) {\r\n        vm.initialValue = value;\r\n    }\r\n    var validateNow = shouldValidate(vm, value);\r\n    vm._needsValidation = false;\r\n    vm.value = value;\r\n    vm._ignoreImmediate = true;\r\n    if (!validateNow) {\r\n        return;\r\n    }\r\n    var validate = function () {\r\n        if (vm.immediate || vm.flags.validated) {\r\n            return triggerThreadSafeValidation(vm);\r\n        }\r\n        vm.validateSilent();\r\n    };\r\n    if (vm.initialized) {\r\n        validate();\r\n        return;\r\n    }\r\n    vm.$once('hook:mounted', function () { return validate(); });\r\n}\r\nfunction computeModeSetting(ctx) {\r\n    var compute = (isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode]);\r\n    return compute(ctx);\r\n}\r\nfunction triggerThreadSafeValidation(vm) {\r\n    var pendingPromise = vm.validateSilent();\r\n    // avoids race conditions between successive validations.\r\n    vm._pendingValidation = pendingPromise;\r\n    return pendingPromise.then(function (result) {\r\n        if (pendingPromise === vm._pendingValidation) {\r\n            vm.applyResult(result);\r\n            vm._pendingValidation = undefined;\r\n        }\r\n        return result;\r\n    });\r\n}\r\n// Creates the common handlers for a validatable context.\r\nfunction createCommonHandlers(vm) {\r\n    if (!vm.$veeOnInput) {\r\n        vm.$veeOnInput = function (e) {\r\n            vm.syncValue(e); // track and keep the value updated.\r\n            vm.setFlags({ dirty: true, pristine: false });\r\n        };\r\n    }\r\n    var onInput = vm.$veeOnInput;\r\n    if (!vm.$veeOnBlur) {\r\n        vm.$veeOnBlur = function () {\r\n            vm.setFlags({ touched: true, untouched: false });\r\n        };\r\n    }\r\n    // Blur event listener.\r\n    var onBlur = vm.$veeOnBlur;\r\n    var onValidate = vm.$veeHandler;\r\n    var mode = computeModeSetting(vm);\r\n    // Handle debounce changes.\r\n    if (!onValidate || vm.$veeDebounce !== vm.debounce) {\r\n        onValidate = debounce(function () {\r\n            vm.$nextTick(function () {\r\n                if (!vm._pendingReset) {\r\n                    triggerThreadSafeValidation(vm);\r\n                }\r\n                vm._pendingReset = false;\r\n            });\r\n        }, mode.debounce || vm.debounce);\r\n        // Cache the handler so we don't create it each time.\r\n        vm.$veeHandler = onValidate;\r\n        // cache the debounce value so we detect if it was changed.\r\n        vm.$veeDebounce = vm.debounce;\r\n    }\r\n    return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };\r\n}\r\n// Adds all plugin listeners to the vnode.\r\nfunction addListeners(vm, node) {\r\n    var value = findValue(node);\r\n    // cache the input eventName.\r\n    vm._inputEventName = vm._inputEventName || getInputEventName(node, findModel(node));\r\n    onRenderUpdate(vm, value === null || value === void 0 ? void 0 : value.value);\r\n    var _a = createCommonHandlers(vm), onInput = _a.onInput, onBlur = _a.onBlur, onValidate = _a.onValidate;\r\n    addVNodeListener(node, vm._inputEventName, onInput);\r\n    addVNodeListener(node, 'blur', onBlur);\r\n    // add the validation listeners.\r\n    vm.normalizedEvents.forEach(function (evt) {\r\n        addVNodeListener(node, evt, onValidate);\r\n    });\r\n    vm.initialized = true;\r\n}\n\nvar PROVIDER_COUNTER = 0;\r\nfunction data() {\r\n    var errors = [];\r\n    var fieldName = '';\r\n    var defaultValues = {\r\n        errors: errors,\r\n        value: undefined,\r\n        initialized: false,\r\n        initialValue: undefined,\r\n        flags: createFlags(),\r\n        failedRules: {},\r\n        isActive: true,\r\n        fieldName: fieldName,\r\n        id: ''\r\n    };\r\n    return defaultValues;\r\n}\r\nvar ValidationProvider = Vue.extend({\r\n    inject: {\r\n        $_veeObserver: {\r\n            from: '$_veeObserver',\r\n            default: function () {\r\n                if (!this.$vnode.context.$_veeObserver) {\r\n                    this.$vnode.context.$_veeObserver = createObserver();\r\n                }\r\n                return this.$vnode.context.$_veeObserver;\r\n            }\r\n        }\r\n    },\r\n    props: {\r\n        vid: {\r\n            type: String,\r\n            default: ''\r\n        },\r\n        name: {\r\n            type: String,\r\n            default: null\r\n        },\r\n        mode: {\r\n            type: [String, Function],\r\n            default: function () {\r\n                return getConfig().mode;\r\n            }\r\n        },\r\n        rules: {\r\n            type: [Object, String],\r\n            default: null\r\n        },\r\n        immediate: {\r\n            type: Boolean,\r\n            default: false\r\n        },\r\n        bails: {\r\n            type: Boolean,\r\n            default: function () { return getConfig().bails; }\r\n        },\r\n        skipIfEmpty: {\r\n            type: Boolean,\r\n            default: function () { return getConfig().skipOptional; }\r\n        },\r\n        debounce: {\r\n            type: Number,\r\n            default: 0\r\n        },\r\n        tag: {\r\n            type: String,\r\n            default: 'span'\r\n        },\r\n        slim: {\r\n            type: Boolean,\r\n            default: false\r\n        },\r\n        disabled: {\r\n            type: Boolean,\r\n            default: false\r\n        },\r\n        customMessages: {\r\n            type: Object,\r\n            default: function () {\r\n                return {};\r\n            }\r\n        },\r\n        detectInput: {\r\n            type: Boolean,\r\n            default: true\r\n        }\r\n    },\r\n    watch: {\r\n        rules: {\r\n            deep: true,\r\n            handler: function (val, oldVal) {\r\n                this._needsValidation = !isEqual(val, oldVal);\r\n            }\r\n        }\r\n    },\r\n    data: data,\r\n    computed: {\r\n        fieldDeps: function () {\r\n            var _this = this;\r\n            return Object.keys(this.normalizedRules).reduce(function (acc, rule) {\r\n                var deps = extractLocators(_this.normalizedRules[rule]).map(function (dep) {\r\n                    return isLocator(dep) ? dep.__locatorRef : dep.slice(1);\r\n                });\r\n                acc.push.apply(acc, deps);\r\n                deps.forEach(function (depName) {\r\n                    watchCrossFieldDep(_this, depName);\r\n                });\r\n                return acc;\r\n            }, []);\r\n        },\r\n        normalizedEvents: function () {\r\n            var _this = this;\r\n            var on = computeModeSetting(this).on;\r\n            return (on || []).map(function (e) {\r\n                if (e === 'input') {\r\n                    return _this._inputEventName;\r\n                }\r\n                return e;\r\n            });\r\n        },\r\n        isRequired: function () {\r\n            var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n            var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);\r\n            this.flags.required = !!isRequired;\r\n            return isRequired;\r\n        },\r\n        classes: function () {\r\n            var names = getConfig().classes;\r\n            return computeClassObj(names, this.flags);\r\n        },\r\n        normalizedRules: function () {\r\n            return normalizeRules(this.rules);\r\n        }\r\n    },\r\n    mounted: function () {\r\n        var _this = this;\r\n        var onLocaleChanged = function () {\r\n            if (!_this.flags.validated) {\r\n                return;\r\n            }\r\n            var regenerateMap = _this._regenerateMap;\r\n            if (regenerateMap) {\r\n                var errors_1 = [];\r\n                var failedRules_1 = {};\r\n                Object.keys(regenerateMap).forEach(function (rule) {\r\n                    var msg = regenerateMap[rule]();\r\n                    errors_1.push(msg);\r\n                    failedRules_1[rule] = msg;\r\n                });\r\n                _this.applyResult({ errors: errors_1, failedRules: failedRules_1, regenerateMap: regenerateMap });\r\n                return;\r\n            }\r\n            _this.validate();\r\n        };\r\n        EVENT_BUS.$on('change:locale', onLocaleChanged);\r\n        this.$on('hook:beforeDestroy', function () {\r\n            EVENT_BUS.$off('change:locale', onLocaleChanged);\r\n        });\r\n    },\r\n    render: function (h) {\r\n        var _this = this;\r\n        this.registerField();\r\n        var ctx = createValidationCtx(this);\r\n        var children = normalizeChildren(this, ctx);\r\n        // Automatic v-model detection\r\n        if (this.detectInput) {\r\n            var inputs = findInputNodes(children);\r\n            if (inputs.length) {\r\n                inputs.forEach(function (input, idx) {\r\n                    var _a, _b, _c, _d, _e, _f;\r\n                    // If the elements are not checkboxes and there are more input nodes\r\n                    if (!includes(['checkbox', 'radio'], (_b = (_a = input.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.type) && idx > 0) {\r\n                        return;\r\n                    }\r\n                    var resolved = getConfig().useConstraintAttrs ? resolveRules(input) : {};\r\n                    if (!isEqual(_this._resolvedRules, resolved)) {\r\n                        _this._needsValidation = true;\r\n                    }\r\n                    if (isHTMLNode(input)) {\r\n                        _this.fieldName = ((_d = (_c = input.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d.name) || ((_f = (_e = input.data) === null || _e === void 0 ? void 0 : _e.attrs) === null || _f === void 0 ? void 0 : _f.id);\r\n                    }\r\n                    _this._resolvedRules = resolved;\r\n                    addListeners(_this, input);\r\n                });\r\n            }\r\n        }\r\n        return this.slim && children.length <= 1 ? children[0] : h(this.tag, children);\r\n    },\r\n    beforeDestroy: function () {\r\n        // cleanup reference.\r\n        this.$_veeObserver.unobserve(this.id);\r\n    },\r\n    activated: function () {\r\n        this.isActive = true;\r\n    },\r\n    deactivated: function () {\r\n        this.isActive = false;\r\n    },\r\n    methods: {\r\n        setFlags: function (flags) {\r\n            var _this = this;\r\n            Object.keys(flags).forEach(function (flag) {\r\n                _this.flags[flag] = flags[flag];\r\n            });\r\n        },\r\n        syncValue: function (v) {\r\n            var value = normalizeEventValue(v);\r\n            this.value = value;\r\n            this.flags.changed = this.initialValue !== value;\r\n        },\r\n        reset: function () {\r\n            var _this = this;\r\n            this.errors = [];\r\n            this.initialValue = this.value;\r\n            var flags = createFlags();\r\n            flags.required = this.isRequired;\r\n            this.setFlags(flags);\r\n            this.failedRules = {};\r\n            this.validateSilent();\r\n            this._pendingValidation = undefined;\r\n            this._pendingReset = true;\r\n            setTimeout(function () {\r\n                _this._pendingReset = false;\r\n            }, this.debounce);\r\n        },\r\n        validate: function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                return __generator(this, function (_a) {\r\n                    if (args.length > 0) {\r\n                        this.syncValue(args[0]);\r\n                    }\r\n                    return [2 /*return*/, triggerThreadSafeValidation(this)];\r\n                });\r\n            });\r\n        },\r\n        validateSilent: function () {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var rules, result;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            this.setFlags({ pending: true });\r\n                            rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n                            Object.defineProperty(rules, '_$$isNormalized', {\r\n                                value: true,\r\n                                writable: false,\r\n                                enumerable: false,\r\n                                configurable: false\r\n                            });\r\n                            return [4 /*yield*/, validate(this.value, rules, __assign(__assign({ name: this.name || this.fieldName }, createLookup(this)), { bails: this.bails, skipIfEmpty: this.skipIfEmpty, isInitial: !this.initialized, customMessages: this.customMessages }))];\r\n                        case 1:\r\n                            result = _a.sent();\r\n                            this.setFlags({\r\n                                pending: false,\r\n                                valid: result.valid,\r\n                                invalid: !result.valid\r\n                            });\r\n                            return [2 /*return*/, result];\r\n                    }\r\n                });\r\n            });\r\n        },\r\n        setErrors: function (errors) {\r\n            this.applyResult({ errors: errors, failedRules: {} });\r\n        },\r\n        applyResult: function (_a) {\r\n            var errors = _a.errors, failedRules = _a.failedRules, regenerateMap = _a.regenerateMap;\r\n            this.errors = errors;\r\n            this._regenerateMap = regenerateMap;\r\n            this.failedRules = __assign({}, (failedRules || {}));\r\n            this.setFlags({\r\n                valid: !errors.length,\r\n                passed: !errors.length,\r\n                invalid: !!errors.length,\r\n                failed: !!errors.length,\r\n                validated: true,\r\n                changed: this.value !== this.initialValue\r\n            });\r\n        },\r\n        registerField: function () {\r\n            updateRenderingContextRefs(this);\r\n        }\r\n    }\r\n});\r\nfunction computeClassObj(names, flags) {\r\n    var acc = {};\r\n    var keys = Object.keys(flags);\r\n    var length = keys.length;\r\n    var _loop_1 = function (i) {\r\n        var flag = keys[i];\r\n        var className = (names && names[flag]) || flag;\r\n        var value = flags[flag];\r\n        if (isNullOrUndefined(value)) {\r\n            return \"continue\";\r\n        }\r\n        if ((flag === 'valid' || flag === 'invalid') && !flags.validated) {\r\n            return \"continue\";\r\n        }\r\n        if (typeof className === 'string') {\r\n            acc[className] = value;\r\n        }\r\n        else if (Array.isArray(className)) {\r\n            className.forEach(function (cls) {\r\n                acc[cls] = value;\r\n            });\r\n        }\r\n    };\r\n    for (var i = 0; i < length; i++) {\r\n        _loop_1(i);\r\n    }\r\n    return acc;\r\n}\r\nfunction createLookup(vm) {\r\n    var providers = vm.$_veeObserver.refs;\r\n    var reduced = {\r\n        names: {},\r\n        values: {}\r\n    };\r\n    return vm.fieldDeps.reduce(function (acc, depName) {\r\n        if (!providers[depName]) {\r\n            return acc;\r\n        }\r\n        acc.values[depName] = providers[depName].value;\r\n        acc.names[depName] = providers[depName].name;\r\n        return acc;\r\n    }, reduced);\r\n}\r\nfunction extractId(vm) {\r\n    if (vm.vid) {\r\n        return vm.vid;\r\n    }\r\n    if (vm.name) {\r\n        return vm.name;\r\n    }\r\n    if (vm.id) {\r\n        return vm.id;\r\n    }\r\n    if (vm.fieldName) {\r\n        return vm.fieldName;\r\n    }\r\n    PROVIDER_COUNTER++;\r\n    return \"_vee_\" + PROVIDER_COUNTER;\r\n}\r\nfunction updateRenderingContextRefs(vm) {\r\n    var providedId = extractId(vm);\r\n    var id = vm.id;\r\n    // Nothing has changed.\r\n    if (!vm.isActive || (id === providedId && vm.$_veeObserver.refs[id])) {\r\n        return;\r\n    }\r\n    // vid was changed.\r\n    if (id !== providedId && vm.$_veeObserver.refs[id] === vm) {\r\n        vm.$_veeObserver.unobserve(id);\r\n    }\r\n    vm.id = providedId;\r\n    vm.$_veeObserver.observe(vm);\r\n}\r\nfunction createObserver() {\r\n    return {\r\n        refs: {},\r\n        observe: function (vm) {\r\n            this.refs[vm.id] = vm;\r\n        },\r\n        unobserve: function (id) {\r\n            delete this.refs[id];\r\n        }\r\n    };\r\n}\r\nfunction watchCrossFieldDep(ctx, depName, withHooks) {\r\n    if (withHooks === void 0) { withHooks = true; }\r\n    var providers = ctx.$_veeObserver.refs;\r\n    if (!ctx._veeWatchers) {\r\n        ctx._veeWatchers = {};\r\n    }\r\n    if (!providers[depName] && withHooks) {\r\n        return ctx.$once('hook:mounted', function () {\r\n            watchCrossFieldDep(ctx, depName, false);\r\n        });\r\n    }\r\n    if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {\r\n        ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {\r\n            if (ctx.flags.validated) {\r\n                ctx._needsValidation = true;\r\n                ctx.validate();\r\n            }\r\n        });\r\n    }\r\n}\n\nvar FLAGS_STRATEGIES = [\r\n    ['pristine', 'every'],\r\n    ['dirty', 'some'],\r\n    ['touched', 'some'],\r\n    ['untouched', 'every'],\r\n    ['valid', 'every'],\r\n    ['invalid', 'some'],\r\n    ['pending', 'some'],\r\n    ['validated', 'every'],\r\n    ['changed', 'some'],\r\n    ['passed', 'every'],\r\n    ['failed', 'some']\r\n];\r\nvar OBSERVER_COUNTER = 0;\r\nfunction data$1() {\r\n    var refs = {};\r\n    var errors = {};\r\n    var flags = createObserverFlags();\r\n    var fields = {};\r\n    // FIXME: Not sure of this one can be typed, circular type reference.\r\n    var observers = [];\r\n    return {\r\n        id: '',\r\n        refs: refs,\r\n        observers: observers,\r\n        errors: errors,\r\n        flags: flags,\r\n        fields: fields\r\n    };\r\n}\r\nfunction provideSelf() {\r\n    return {\r\n        $_veeObserver: this\r\n    };\r\n}\r\nvar ValidationObserver = Vue.extend({\r\n    name: 'ValidationObserver',\r\n    provide: provideSelf,\r\n    inject: {\r\n        $_veeObserver: {\r\n            from: '$_veeObserver',\r\n            default: function () {\r\n                if (!this.$vnode.context.$_veeObserver) {\r\n                    return null;\r\n                }\r\n                return this.$vnode.context.$_veeObserver;\r\n            }\r\n        }\r\n    },\r\n    props: {\r\n        tag: {\r\n            type: String,\r\n            default: 'span'\r\n        },\r\n        vid: {\r\n            type: String,\r\n            default: function () {\r\n                return \"obs_\" + OBSERVER_COUNTER++;\r\n            }\r\n        },\r\n        slim: {\r\n            type: Boolean,\r\n            default: false\r\n        },\r\n        disabled: {\r\n            type: Boolean,\r\n            default: false\r\n        }\r\n    },\r\n    data: data$1,\r\n    created: function () {\r\n        var _this = this;\r\n        this.id = this.vid;\r\n        register(this);\r\n        var onChange = debounce(function (_a) {\r\n            var errors = _a.errors, flags = _a.flags, fields = _a.fields;\r\n            _this.errors = errors;\r\n            _this.flags = flags;\r\n            _this.fields = fields;\r\n        }, 16);\r\n        this.$watch(computeObserverState, onChange);\r\n    },\r\n    activated: function () {\r\n        register(this);\r\n    },\r\n    deactivated: function () {\r\n        unregister(this);\r\n    },\r\n    beforeDestroy: function () {\r\n        unregister(this);\r\n    },\r\n    render: function (h) {\r\n        var children = normalizeChildren(this, prepareSlotProps(this));\r\n        return this.slim && children.length <= 1 ? children[0] : h(this.tag, { on: this.$listeners }, children);\r\n    },\r\n    methods: {\r\n        observe: function (subscriber, kind) {\r\n            var _a;\r\n            if (kind === void 0) { kind = 'provider'; }\r\n            if (kind === 'observer') {\r\n                this.observers.push(subscriber);\r\n                return;\r\n            }\r\n            this.refs = __assign(__assign({}, this.refs), (_a = {}, _a[subscriber.id] = subscriber, _a));\r\n        },\r\n        unobserve: function (id, kind) {\r\n            if (kind === void 0) { kind = 'provider'; }\r\n            if (kind === 'provider') {\r\n                var provider = this.refs[id];\r\n                if (!provider) {\r\n                    return;\r\n                }\r\n                this.$delete(this.refs, id);\r\n                return;\r\n            }\r\n            var idx = findIndex(this.observers, function (o) { return o.id === id; });\r\n            if (idx !== -1) {\r\n                this.observers.splice(idx, 1);\r\n            }\r\n        },\r\n        validateWithInfo: function (_a) {\r\n            var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var results, isValid, _c, errors, flags, fields;\r\n                return __generator(this, function (_d) {\r\n                    switch (_d.label) {\r\n                        case 0: return [4 /*yield*/, Promise.all(__spreadArrays(values(this.refs)\r\n                                .filter(function (r) { return !r.disabled; })\r\n                                .map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }), this.observers.filter(function (o) { return !o.disabled; }).map(function (obs) { return obs.validate({ silent: silent }); })))];\r\n                        case 1:\r\n                            results = _d.sent();\r\n                            isValid = results.every(function (r) { return r; });\r\n                            _c = computeObserverState.call(this), errors = _c.errors, flags = _c.flags, fields = _c.fields;\r\n                            this.errors = errors;\r\n                            this.flags = flags;\r\n                            this.fields = fields;\r\n                            return [2 /*return*/, {\r\n                                    errors: errors,\r\n                                    flags: flags,\r\n                                    fields: fields,\r\n                                    isValid: isValid\r\n                                }];\r\n                    }\r\n                });\r\n            });\r\n        },\r\n        validate: function (_a) {\r\n            var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var isValid;\r\n                return __generator(this, function (_c) {\r\n                    switch (_c.label) {\r\n                        case 0: return [4 /*yield*/, this.validateWithInfo({ silent: silent })];\r\n                        case 1:\r\n                            isValid = (_c.sent()).isValid;\r\n                            return [2 /*return*/, isValid];\r\n                    }\r\n                });\r\n            });\r\n        },\r\n        handleSubmit: function (cb) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var isValid;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0: return [4 /*yield*/, this.validate()];\r\n                        case 1:\r\n                            isValid = _a.sent();\r\n                            if (!isValid || !cb) {\r\n                                return [2 /*return*/];\r\n                            }\r\n                            return [2 /*return*/, cb()];\r\n                    }\r\n                });\r\n            });\r\n        },\r\n        reset: function () {\r\n            return __spreadArrays(values(this.refs), this.observers).forEach(function (ref) { return ref.reset(); });\r\n        },\r\n        setErrors: function (errors) {\r\n            var _this = this;\r\n            Object.keys(errors).forEach(function (key) {\r\n                var provider = _this.refs[key];\r\n                if (!provider)\r\n                    return;\r\n                var errorArr = errors[key] || [];\r\n                errorArr = typeof errorArr === 'string' ? [errorArr] : errorArr;\r\n                provider.setErrors(errorArr);\r\n            });\r\n            this.observers.forEach(function (observer) {\r\n                observer.setErrors(errors);\r\n            });\r\n        }\r\n    }\r\n});\r\nfunction unregister(vm) {\r\n    if (vm.$_veeObserver) {\r\n        vm.$_veeObserver.unobserve(vm.id, 'observer');\r\n    }\r\n}\r\nfunction register(vm) {\r\n    if (vm.$_veeObserver) {\r\n        vm.$_veeObserver.observe(vm, 'observer');\r\n    }\r\n}\r\nfunction prepareSlotProps(vm) {\r\n    return __assign(__assign({}, vm.flags), { errors: vm.errors, fields: vm.fields, validate: vm.validate, validateWithInfo: vm.validateWithInfo, passes: vm.handleSubmit, handleSubmit: vm.handleSubmit, reset: vm.reset });\r\n}\r\n// Creates a modified version of validation flags\r\nfunction createObserverFlags() {\r\n    return __assign(__assign({}, createFlags()), { valid: true, invalid: false });\r\n}\r\nfunction computeObserverState() {\r\n    var vms = __spreadArrays(values(this.refs), this.observers.filter(function (o) { return !o.disabled; }));\r\n    var errors = {};\r\n    var flags = createObserverFlags();\r\n    var fields = {};\r\n    var length = vms.length;\r\n    for (var i = 0; i < length; i++) {\r\n        var vm = vms[i];\r\n        // validation provider\r\n        if (Array.isArray(vm.errors)) {\r\n            errors[vm.id] = vm.errors;\r\n            fields[vm.id] = __assign({ id: vm.id, name: vm.name, failedRules: vm.failedRules }, vm.flags);\r\n            continue;\r\n        }\r\n        // Nested observer, merge errors and fields\r\n        errors = __assign(__assign({}, errors), vm.errors);\r\n        fields = __assign(__assign({}, fields), vm.fields);\r\n    }\r\n    FLAGS_STRATEGIES.forEach(function (_a) {\r\n        var flag = _a[0], method = _a[1];\r\n        flags[flag] = vms[method](function (vm) { return vm.flags[flag]; });\r\n    });\r\n    return { errors: errors, flags: flags, fields: fields };\r\n}\n\nfunction withValidation(component, mapProps) {\r\n    var _a;\r\n    if (mapProps === void 0) { mapProps = identity; }\r\n    var options = 'options' in component ? component.options : component;\r\n    var providerOpts = ValidationProvider.options;\r\n    var hoc = {\r\n        name: (options.name || 'AnonymousHoc') + \"WithValidation\",\r\n        props: __assign({}, providerOpts.props),\r\n        data: providerOpts.data,\r\n        computed: __assign({}, providerOpts.computed),\r\n        methods: __assign({}, providerOpts.methods),\r\n        beforeDestroy: providerOpts.beforeDestroy,\r\n        inject: providerOpts.inject\r\n    };\r\n    var eventName = ((_a = options === null || options === void 0 ? void 0 : options.model) === null || _a === void 0 ? void 0 : _a.event) || 'input';\r\n    hoc.render = function (h) {\r\n        var _a;\r\n        this.registerField();\r\n        var vctx = createValidationCtx(this);\r\n        var listeners = __assign({}, this.$listeners);\r\n        var model = findModel(this.$vnode);\r\n        this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\r\n        var value = findValue(this.$vnode);\r\n        onRenderUpdate(this, value === null || value === void 0 ? void 0 : value.value);\r\n        var _b = createCommonHandlers(this), onInput = _b.onInput, onBlur = _b.onBlur, onValidate = _b.onValidate;\r\n        mergeVNodeListeners(listeners, eventName, onInput);\r\n        mergeVNodeListeners(listeners, 'blur', onBlur);\r\n        this.normalizedEvents.forEach(function (evt) {\r\n            mergeVNodeListeners(listeners, evt, onValidate);\r\n        });\r\n        // Props are any attrs not associated with ValidationProvider Plus the model prop.\r\n        // WARNING: Accidental prop overwrite will probably happen.\r\n        var prop = (findModelConfig(this.$vnode) || { prop: 'value' }).prop;\r\n        var props = __assign(__assign(__assign({}, this.$attrs), (_a = {}, _a[prop] = model === null || model === void 0 ? void 0 : model.value, _a)), mapProps(vctx));\r\n        return h(options, {\r\n            attrs: this.$attrs,\r\n            props: props,\r\n            on: listeners,\r\n            scopedSlots: this.$scopedSlots\r\n        }, normalizeSlots(this.$slots, this.$vnode.context));\r\n    };\r\n    return hoc;\r\n}\n\nvar version = '3.4.5';\n\nexport { ValidationObserver, ValidationProvider, configure, extend, localeChanged, localize, normalizeRules, setInteractionMode, validate, version, withValidation };\n","import { makeModelMixin } from '../utils/model';\n\nvar _makeModelMixin = makeModelMixin('value'),\n    mixin = _makeModelMixin.mixin,\n    props = _makeModelMixin.props,\n    prop = _makeModelMixin.prop,\n    event = _makeModelMixin.event;\n\nexport { mixin as modelMixin, props, prop as MODEL_PROP_NAME, event as MODEL_EVENT_NAME };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { get } from '../../../utils/get';\nimport { isNull, isPlainObject, isUndefined } from '../../../utils/inspect';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../../utils/props';\nimport { formOptionsMixin, props as formOptionsProps } from '../../../mixins/form-options'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formOptionsProps), {}, {\n  labelField: makeProp(PROP_TYPE_STRING, 'label'),\n  optionsField: makeProp(PROP_TYPE_STRING, 'options')\n})), 'formOptions'); // --- Mixin ---\n// @vue/component\n\nexport var optionsMixin = Vue.extend({\n  mixins: [formOptionsMixin],\n  props: props,\n  methods: {\n    normalizeOption: function normalizeOption(option) {\n      var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      // When the option is an object, normalize it\n      if (isPlainObject(option)) {\n        var value = get(option, this.valueField);\n        var text = get(option, this.textField);\n        var options = get(option, this.optionsField, null); // When it has options, create an `<optgroup>` object\n\n        if (!isNull(options)) {\n          return {\n            label: String(get(option, this.labelField) || text),\n            options: this.normalizeOptions(options)\n          };\n        } // Otherwise create an `<option>` object\n\n\n        return {\n          value: isUndefined(value) ? key || text : value,\n          text: String(isUndefined(text) ? key : text),\n          html: get(option, this.htmlField),\n          disabled: Boolean(get(option, this.disabledField))\n        };\n      } // Otherwise create an `<option>` object from the given value\n\n\n      return {\n        value: key || option,\n        text: String(option),\n        disabled: false\n      };\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_SELECT_OPTION_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_FIRST } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formOptionsMixin, props as formOptionsProps } from '../../mixins/form-options';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BFormSelectOption } from './form-select-option'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formOptionsProps), {}, {\n  label: makeProp(PROP_TYPE_STRING, undefined, true) // Required\n\n})), NAME_FORM_SELECT_OPTION_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BFormSelectOptionGroup = /*#__PURE__*/Vue.extend({\n  name: NAME_FORM_SELECT_OPTION_GROUP,\n  mixins: [normalizeSlotMixin, formOptionsMixin],\n  props: props,\n  render: function render(h) {\n    var label = this.label;\n    var $options = this.formOptions.map(function (option, index) {\n      var value = option.value,\n          text = option.text,\n          html = option.html,\n          disabled = option.disabled;\n      return h(BFormSelectOption, {\n        attrs: {\n          value: value,\n          disabled: disabled\n        },\n        domProps: htmlOrText(html, text),\n        key: \"option_\".concat(index)\n      });\n    });\n    return h('optgroup', {\n      attrs: {\n        label: label\n      }\n    }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_SELECT } from '../../constants/components';\nimport { EVENT_NAME_CHANGE } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER } from '../../constants/props';\nimport { SLOT_NAME_FIRST } from '../../constants/slots';\nimport { from as arrayFrom } from '../../utils/array';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { htmlOrText } from '../../utils/html';\nimport { isArray } from '../../utils/inspect';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formCustomMixin, props as formCustomProps } from '../../mixins/form-custom';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { MODEL_EVENT_NAME, MODEL_PROP_NAME, modelMixin, props as modelProps } from '../../mixins/model';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { optionsMixin } from './helpers/mixin-options';\nimport { BFormSelectOption } from './form-select-option';\nimport { BFormSelectOptionGroup } from './form-select-option-group'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formCustomProps), formSizeProps), formStateProps), {}, {\n  ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  multiple: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Browsers default size to `0`, which shows 4 rows in most browsers in multiple mode\n  // Size of `1` can bork out Firefox\n  selectSize: makeProp(PROP_TYPE_NUMBER, 0)\n})), NAME_FORM_SELECT); // --- Main component ---\n// @vue/component\n\nexport var BFormSelect = /*#__PURE__*/Vue.extend({\n  name: NAME_FORM_SELECT,\n  mixins: [idMixin, modelMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin, optionsMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    return {\n      localValue: this[MODEL_PROP_NAME]\n    };\n  },\n  computed: {\n    computedSelectSize: function computedSelectSize() {\n      // Custom selects with a size of zero causes the arrows to be hidden,\n      // so dont render the size attribute in this case\n      return !this.plain && this.selectSize === 0 ? null : this.selectSize;\n    },\n    inputClass: function inputClass() {\n      return [this.plain ? 'form-control' : 'custom-select', this.size && this.plain ? \"form-control-\".concat(this.size) : null, this.size && !this.plain ? \"custom-select-\".concat(this.size) : null, this.stateClass];\n    }\n  },\n  watch: {\n    value: function value(newValue) {\n      this.localValue = newValue;\n    },\n    localValue: function localValue() {\n      this.$emit(MODEL_EVENT_NAME, this.localValue);\n    }\n  },\n  methods: {\n    focus: function focus() {\n      attemptFocus(this.$refs.input);\n    },\n    blur: function blur() {\n      attemptBlur(this.$refs.input);\n    },\n    onChange: function onChange(event) {\n      var _this = this;\n\n      var target = event.target;\n      var selectedValue = arrayFrom(target.options).filter(function (o) {\n        return o.selected;\n      }).map(function (o) {\n        return '_value' in o ? o._value : o.value;\n      });\n      this.localValue = target.multiple ? selectedValue : selectedValue[0];\n      this.$nextTick(function () {\n        _this.$emit(EVENT_NAME_CHANGE, _this.localValue);\n      });\n    }\n  },\n  render: function render(h) {\n    var name = this.name,\n        disabled = this.disabled,\n        required = this.required,\n        size = this.computedSelectSize,\n        value = this.localValue;\n    var $options = this.formOptions.map(function (option, index) {\n      var value = option.value,\n          label = option.label,\n          options = option.options,\n          disabled = option.disabled;\n      var key = \"option_\".concat(index);\n      return isArray(options) ? h(BFormSelectOptionGroup, {\n        props: {\n          label: label,\n          options: options\n        },\n        key: key\n      }) : h(BFormSelectOption, {\n        props: {\n          value: value,\n          disabled: disabled\n        },\n        domProps: htmlOrText(option.html, option.text),\n        key: key\n      });\n    });\n    return h('select', {\n      class: this.inputClass,\n      attrs: {\n        id: this.safeId(),\n        name: name,\n        form: this.form || null,\n        multiple: this.multiple || null,\n        size: size,\n        disabled: disabled,\n        required: required,\n        'aria-required': required ? 'true' : null,\n        'aria-invalid': this.computedAriaInvalid\n      },\n      on: {\n        change: this.onChange\n      },\n      directives: [{\n        name: 'model',\n        value: value\n      }],\n      ref: 'input'\n    }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n  }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot'; // --- Props ---\n\nexport var props = {\n  footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Any Bootstrap theme variant (or custom)\n  // Falls back to `headRowVariant`\n  footRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'dark', 'light', or `null` (or custom)\n  footVariant: makeProp(PROP_TYPE_STRING),\n  tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tfootMixin = Vue.extend({\n  props: props,\n  methods: {\n    renderTFootCustom: function renderTFootCustom() {\n      var h = this.$createElement;\n\n      if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n        return h(BTfoot, {\n          class: this.tfootClass || null,\n          props: {\n            footVariant: this.footVariant || this.headVariant || null\n          },\n          key: 'bv-tfoot-custom'\n        }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n          items: this.computedItems.slice(),\n          fields: this.computedFields.slice(),\n          columns: this.computedFields.length\n        }));\n      }\n\n      return h();\n    },\n    renderTfoot: function renderTfoot() {\n      // Passing true to renderThead will make it render a tfoot\n      return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n    }\n  }\n});","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in <b-table> if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n  // Using `.bind(compareFn)` on the wrapped anonymous function improves\n  // performance by avoiding the function call setup. We don't use an arrow\n  // function here as it binds `this` to the `stableSort` context rather than\n  // the `compareFn` context, which wouldn't give us the performance increase.\n  return array.map(function (a, index) {\n    return [index, a];\n  }).sort(function (a, b) {\n    return this(a[1], b[1]) || a[0] - b[0];\n  }.bind(compareFn)).map(function (e) {\n    return e[1];\n  });\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Tooltip \"Class\" (Built as a renderless Vue instance)\n//\n// Handles trigger events, etc.\n// Instantiates template on demand\nimport { COMPONENT_UID_KEY, Vue } from '../../../vue';\nimport { NAME_MODAL, NAME_TOOLTIP_HELPER } from '../../../constants/components';\nimport { EVENT_NAME_DISABLE, EVENT_NAME_DISABLED, EVENT_NAME_ENABLE, EVENT_NAME_ENABLED, EVENT_NAME_FOCUSIN, EVENT_NAME_FOCUSOUT, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_MOUSEENTER, EVENT_NAME_MOUSELEAVE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_OPTIONS_NO_CAPTURE, HOOK_EVENT_NAME_BEFORE_DESTROY, HOOK_EVENT_NAME_DESTROYED } from '../../../constants/events';\nimport { arrayIncludes, concat, from as arrayFrom } from '../../../utils/array';\nimport { attemptFocus, closest, contains, getAttr, getById, hasAttr, hasClass, isDisabled, isElement, isVisible, removeAttr, requestAF, select, setAttr } from '../../../utils/dom';\nimport { eventOff, eventOn, eventOnOff, getRootActionEventName, getRootEventName } from '../../../utils/events';\nimport { getScopeId } from '../../../utils/get-scope-id';\nimport { identity } from '../../../utils/identity';\nimport { isFunction, isNumber, isPlainObject, isString, isUndefined, isUndefinedOrNull } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { noop } from '../../../utils/noop';\nimport { toInteger } from '../../../utils/number';\nimport { keys } from '../../../utils/object';\nimport { warn } from '../../../utils/warn';\nimport { BvEvent } from '../../../utils/bv-event.class';\nimport { listenOnRootMixin } from '../../../mixins/listen-on-root';\nimport { BVTooltipTemplate } from './bv-tooltip-template'; // --- Constants ---\n// Modal container selector for appending tooltip/popover\n\nvar MODAL_SELECTOR = '.modal-content'; // Modal `$root` hidden event\n\nvar ROOT_EVENT_NAME_MODAL_HIDDEN = getRootEventName(NAME_MODAL, EVENT_NAME_HIDDEN); // Sidebar container selector for appending tooltip/popover\n\nvar SIDEBAR_SELECTOR = '.b-sidebar'; // For finding the container to append to\n\nvar CONTAINER_SELECTOR = [MODAL_SELECTOR, SIDEBAR_SELECTOR].join(', '); // For dropdown sniffing\n\nvar DROPDOWN_CLASS = 'dropdown';\nvar DROPDOWN_OPEN_SELECTOR = '.dropdown-menu.show'; // Data attribute to temporary store the `title` attribute's value\n\nvar DATA_TITLE_ATTR = 'data-original-title'; // Data specific to popper and template\n// We don't use props, as we need reactivity (we can't pass reactive props)\n\nvar templateData = {\n  // Text string or Scoped slot function\n  title: '',\n  // Text string or Scoped slot function\n  content: '',\n  // String\n  variant: null,\n  // String, Array, Object\n  customClass: null,\n  // String or array of Strings (overwritten by BVPopper)\n  triggers: '',\n  // String (overwritten by BVPopper)\n  placement: 'auto',\n  // String or array of strings\n  fallbackPlacement: 'flip',\n  // Element or Component reference (or function that returns element) of\n  // the element that will have the trigger events bound, and is also\n  // default element for positioning\n  target: null,\n  // HTML ID, Element or Component reference\n  container: null,\n  // 'body'\n  // Boolean\n  noFade: false,\n  // 'scrollParent', 'viewport', 'window', Element, or Component reference\n  boundary: 'scrollParent',\n  // Tooltip/popover will try and stay away from\n  // boundary edge by this many pixels (Number)\n  boundaryPadding: 5,\n  // Arrow offset (Number)\n  offset: 0,\n  // Hover/focus delay (Number or Object)\n  delay: 0,\n  // Arrow of Tooltip/popover will try and stay away from\n  // the edge of tooltip/popover edge by this many pixels\n  arrowPadding: 6,\n  // Interactive state (Boolean)\n  interactive: true,\n  // Disabled state (Boolean)\n  disabled: false,\n  // ID to use for tooltip/popover\n  id: null,\n  // Flag used by directives only, for HTML content\n  html: false\n}; // --- Main component ---\n// @vue/component\n\nexport var BVTooltip = /*#__PURE__*/Vue.extend({\n  name: NAME_TOOLTIP_HELPER,\n  mixins: [listenOnRootMixin],\n  data: function data() {\n    return _objectSpread(_objectSpread({}, templateData), {}, {\n      // State management data\n      activeTrigger: {\n        // manual: false,\n        hover: false,\n        click: false,\n        focus: false\n      },\n      localShow: false\n    });\n  },\n  computed: {\n    templateType: function templateType() {\n      // Overwritten by BVPopover\n      return 'tooltip';\n    },\n    computedId: function computedId() {\n      return this.id || \"__bv_\".concat(this.templateType, \"_\").concat(this[COMPONENT_UID_KEY], \"__\");\n    },\n    computedDelay: function computedDelay() {\n      // Normalizes delay into object form\n      var delay = {\n        show: 0,\n        hide: 0\n      };\n\n      if (isPlainObject(this.delay)) {\n        delay.show = mathMax(toInteger(this.delay.show, 0), 0);\n        delay.hide = mathMax(toInteger(this.delay.hide, 0), 0);\n      } else if (isNumber(this.delay) || isString(this.delay)) {\n        delay.show = delay.hide = mathMax(toInteger(this.delay, 0), 0);\n      }\n\n      return delay;\n    },\n    computedTriggers: function computedTriggers() {\n      // Returns the triggers in sorted array form\n      // TODO: Switch this to object form for easier lookup\n      return concat(this.triggers).filter(identity).join(' ').trim().toLowerCase().split(/\\s+/).sort();\n    },\n    isWithActiveTrigger: function isWithActiveTrigger() {\n      for (var trigger in this.activeTrigger) {\n        if (this.activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n    computedTemplateData: function computedTemplateData() {\n      var title = this.title,\n          content = this.content,\n          variant = this.variant,\n          customClass = this.customClass,\n          noFade = this.noFade,\n          interactive = this.interactive;\n      return {\n        title: title,\n        content: content,\n        variant: variant,\n        customClass: customClass,\n        noFade: noFade,\n        interactive: interactive\n      };\n    }\n  },\n  watch: {\n    computedTriggers: function computedTriggers(newTriggers, oldTriggers) {\n      var _this = this;\n\n      // Triggers have changed, so re-register them\n\n      /* istanbul ignore next */\n      if (!looseEqual(newTriggers, oldTriggers)) {\n        this.$nextTick(function () {\n          // Disable trigger listeners\n          _this.unListen(); // Clear any active triggers that are no longer in the list of triggers\n\n\n          oldTriggers.forEach(function (trigger) {\n            if (!arrayIncludes(newTriggers, trigger)) {\n              if (_this.activeTrigger[trigger]) {\n                _this.activeTrigger[trigger] = false;\n              }\n            }\n          }); // Re-enable the trigger listeners\n\n          _this.listen();\n        });\n      }\n    },\n    computedTemplateData: function computedTemplateData() {\n      // If any of the while open reactive \"props\" change,\n      // ensure that the template updates accordingly\n      this.handleTemplateUpdate();\n    },\n    title: function title(newValue, oldValue) {\n      // Make sure to hide the tooltip when the title is set empty\n      if (newValue !== oldValue && !newValue) {\n        this.hide();\n      }\n    },\n    disabled: function disabled(newValue) {\n      if (newValue) {\n        this.disable();\n      } else {\n        this.enable();\n      }\n    }\n  },\n  created: function created() {\n    var _this2 = this;\n\n    // Create non-reactive properties\n    this.$_tip = null;\n    this.$_hoverTimeout = null;\n    this.$_hoverState = '';\n    this.$_visibleInterval = null;\n    this.$_enabled = !this.disabled;\n    this.$_noop = noop.bind(this); // Destroy ourselves when the parent is destroyed\n\n    if (this.$parent) {\n      this.$parent.$once(HOOK_EVENT_NAME_BEFORE_DESTROY, function () {\n        _this2.$nextTick(function () {\n          // In a `requestAF()` to release control back to application\n          requestAF(function () {\n            _this2.$destroy();\n          });\n        });\n      });\n    }\n\n    this.$nextTick(function () {\n      var target = _this2.getTarget();\n\n      if (target && contains(document.body, target)) {\n        // Copy the parent's scoped style attribute\n        _this2.scopeId = getScopeId(_this2.$parent); // Set up all trigger handlers and listeners\n\n        _this2.listen();\n      } else {\n        /* istanbul ignore next */\n        warn(isString(_this2.target) ? \"Unable to find target element by ID \\\"#\".concat(_this2.target, \"\\\" in document.\") : 'The provided target is no valid HTML element.', _this2.templateType);\n      }\n    });\n  },\n\n  /* istanbul ignore next */\n  updated: function updated() {\n    // Usually called when the slots/data changes\n    this.$nextTick(this.handleTemplateUpdate);\n  },\n\n  /* istanbul ignore next */\n  deactivated: function deactivated() {\n    // In a keepalive that has been deactivated, so hide\n    // the tooltip/popover if it is showing\n    this.forceHide();\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Remove all handler/listeners\n    this.unListen();\n    this.setWhileOpenListeners(false); // Clear any timeouts/intervals\n\n    this.clearHoverTimeout();\n    this.clearVisibilityInterval(); // Destroy the template\n\n    this.destroyTemplate(); // Remove any other private properties created during create\n\n    this.$_noop = null;\n  },\n  methods: {\n    // --- Methods for creating and destroying the template ---\n    getTemplate: function getTemplate() {\n      // Overridden by BVPopover\n      return BVTooltipTemplate;\n    },\n    updateData: function updateData() {\n      var _this3 = this;\n\n      var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      // Method for updating popper/template data\n      // We only update data if it exists, and has not changed\n      var titleUpdated = false;\n      keys(templateData).forEach(function (prop) {\n        if (!isUndefined(data[prop]) && _this3[prop] !== data[prop]) {\n          _this3[prop] = data[prop];\n\n          if (prop === 'title') {\n            titleUpdated = true;\n          }\n        }\n      }); // If the title has updated, we may need to handle the `title`\n      // attribute on the trigger target\n      // We only do this while the template is open\n\n      if (titleUpdated && this.localShow) {\n        this.fixTitle();\n      }\n    },\n    createTemplateAndShow: function createTemplateAndShow() {\n      // Creates the template instance and show it\n      var container = this.getContainer();\n      var Template = this.getTemplate();\n      var $tip = this.$_tip = new Template({\n        parent: this,\n        // The following is not reactive to changes in the props data\n        propsData: {\n          // These values cannot be changed while template is showing\n          id: this.computedId,\n          html: this.html,\n          placement: this.placement,\n          fallbackPlacement: this.fallbackPlacement,\n          target: this.getPlacementTarget(),\n          boundary: this.getBoundary(),\n          // Ensure the following are integers\n          offset: toInteger(this.offset, 0),\n          arrowPadding: toInteger(this.arrowPadding, 0),\n          boundaryPadding: toInteger(this.boundaryPadding, 0)\n        }\n      }); // We set the initial reactive data (values that can be changed while open)\n\n      this.handleTemplateUpdate(); // Template transition phase events (handled once only)\n      // When the template has mounted, but not visibly shown yet\n\n      $tip.$once(EVENT_NAME_SHOW, this.onTemplateShow); // When the template has completed showing\n\n      $tip.$once(EVENT_NAME_SHOWN, this.onTemplateShown); // When the template has started to hide\n\n      $tip.$once(EVENT_NAME_HIDE, this.onTemplateHide); // When the template has completed hiding\n\n      $tip.$once(EVENT_NAME_HIDDEN, this.onTemplateHidden); // When the template gets destroyed for any reason\n\n      $tip.$once(HOOK_EVENT_NAME_DESTROYED, this.destroyTemplate); // Convenience events from template\n      // To save us from manually adding/removing DOM\n      // listeners to tip element when it is open\n\n      $tip.$on(EVENT_NAME_FOCUSIN, this.handleEvent);\n      $tip.$on(EVENT_NAME_FOCUSOUT, this.handleEvent);\n      $tip.$on(EVENT_NAME_MOUSEENTER, this.handleEvent);\n      $tip.$on(EVENT_NAME_MOUSELEAVE, this.handleEvent); // Mount (which triggers the `show`)\n\n      $tip.$mount(container.appendChild(document.createElement('div'))); // Template will automatically remove its markup from DOM when hidden\n    },\n    hideTemplate: function hideTemplate() {\n      // Trigger the template to start hiding\n      // The template will emit the `hide` event after this and\n      // then emit the `hidden` event once it is fully hidden\n      // The `hook:destroyed` will also be called (safety measure)\n      this.$_tip && this.$_tip.hide(); // Clear out any stragging active triggers\n\n      this.clearActiveTriggers(); // Reset the hover state\n\n      this.$_hoverState = '';\n    },\n    // Destroy the template instance and reset state\n    destroyTemplate: function destroyTemplate() {\n      this.setWhileOpenListeners(false);\n      this.clearHoverTimeout();\n      this.$_hoverState = '';\n      this.clearActiveTriggers();\n      this.localPlacementTarget = null;\n\n      try {\n        this.$_tip.$destroy();\n      } catch (_unused) {}\n\n      this.$_tip = null;\n      this.removeAriaDescribedby();\n      this.restoreTitle();\n      this.localShow = false;\n    },\n    getTemplateElement: function getTemplateElement() {\n      return this.$_tip ? this.$_tip.$el : null;\n    },\n    handleTemplateUpdate: function handleTemplateUpdate() {\n      var _this4 = this;\n\n      // Update our template title/content \"props\"\n      // So that the template updates accordingly\n      var $tip = this.$_tip;\n\n      if ($tip) {\n        var props = ['title', 'content', 'variant', 'customClass', 'noFade', 'interactive']; // Only update the values if they have changed\n\n        props.forEach(function (prop) {\n          if ($tip[prop] !== _this4[prop]) {\n            $tip[prop] = _this4[prop];\n          }\n        });\n      }\n    },\n    // --- Show/Hide handlers ---\n    // Show the tooltip\n    show: function show() {\n      var target = this.getTarget();\n\n      if (!target || !contains(document.body, target) || !isVisible(target) || this.dropdownOpen() || (isUndefinedOrNull(this.title) || this.title === '') && (isUndefinedOrNull(this.content) || this.content === '')) {\n        // If trigger element isn't in the DOM or is not visible, or\n        // is on an open dropdown toggle, or has no content, then\n        // we exit without showing\n        return;\n      } // If tip already exists, exit early\n\n\n      if (this.$_tip || this.localShow) {\n        /* istanbul ignore next */\n        return;\n      } // In the process of showing\n\n\n      this.localShow = true; // Create a cancelable BvEvent\n\n      var showEvt = this.buildEvent(EVENT_NAME_SHOW, {\n        cancelable: true\n      });\n      this.emitEvent(showEvt); // Don't show if event cancelled\n\n      /* istanbul ignore if */\n\n      if (showEvt.defaultPrevented) {\n        // Destroy the template (if for some reason it was created)\n        this.destroyTemplate();\n        return;\n      } // Fix the title attribute on target\n\n\n      this.fixTitle(); // Set aria-describedby on target\n\n      this.addAriaDescribedby(); // Create and show the tooltip\n\n      this.createTemplateAndShow();\n    },\n    hide: function hide() {\n      var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      // Hide the tooltip\n      var tip = this.getTemplateElement();\n      /* istanbul ignore if */\n\n      if (!tip || !this.localShow) {\n        this.restoreTitle();\n        return;\n      } // Emit cancelable BvEvent 'hide'\n      // We disable cancelling if `force` is true\n\n\n      var hideEvt = this.buildEvent(EVENT_NAME_HIDE, {\n        cancelable: !force\n      });\n      this.emitEvent(hideEvt);\n      /* istanbul ignore if: ignore for now */\n\n      if (hideEvt.defaultPrevented) {\n        // Don't hide if event cancelled\n        return;\n      } // Tell the template to hide\n\n\n      this.hideTemplate();\n    },\n    forceHide: function forceHide() {\n      // Forcefully hides/destroys the template, regardless of any active triggers\n      var tip = this.getTemplateElement();\n\n      if (!tip || !this.localShow) {\n        /* istanbul ignore next */\n        return;\n      } // Disable while open listeners/watchers\n      // This is also done in the template `hide` event handler\n\n\n      this.setWhileOpenListeners(false); // Clear any hover enter/leave event\n\n      this.clearHoverTimeout();\n      this.$_hoverState = '';\n      this.clearActiveTriggers(); // Disable the fade animation on the template\n\n      if (this.$_tip) {\n        this.$_tip.noFade = true;\n      } // Hide the tip (with force = true)\n\n\n      this.hide(true);\n    },\n    enable: function enable() {\n      this.$_enabled = true; // Create a non-cancelable BvEvent\n\n      this.emitEvent(this.buildEvent(EVENT_NAME_ENABLED));\n    },\n    disable: function disable() {\n      this.$_enabled = false; // Create a non-cancelable BvEvent\n\n      this.emitEvent(this.buildEvent(EVENT_NAME_DISABLED));\n    },\n    // --- Handlers for template events ---\n    // When template is inserted into DOM, but not yet shown\n    onTemplateShow: function onTemplateShow() {\n      // Enable while open listeners/watchers\n      this.setWhileOpenListeners(true);\n    },\n    // When template show transition completes\n    onTemplateShown: function onTemplateShown() {\n      var prevHoverState = this.$_hoverState;\n      this.$_hoverState = '';\n      /* istanbul ignore next: occasional Node 10 coverage error */\n\n      if (prevHoverState === 'out') {\n        this.leave(null);\n      } // Emit a non-cancelable BvEvent 'shown'\n\n\n      this.emitEvent(this.buildEvent(EVENT_NAME_SHOWN));\n    },\n    // When template is starting to hide\n    onTemplateHide: function onTemplateHide() {\n      // Disable while open listeners/watchers\n      this.setWhileOpenListeners(false);\n    },\n    // When template has completed closing (just before it self destructs)\n    onTemplateHidden: function onTemplateHidden() {\n      // Destroy the template\n      this.destroyTemplate(); // Emit a non-cancelable BvEvent 'shown'\n\n      this.emitEvent(this.buildEvent(EVENT_NAME_HIDDEN));\n    },\n    // --- Helper methods ---\n    getTarget: function getTarget() {\n      var target = this.target;\n\n      if (isString(target)) {\n        target = getById(target.replace(/^#/, ''));\n      } else if (isFunction(target)) {\n        target = target();\n      } else if (target) {\n        target = target.$el || target;\n      }\n\n      return isElement(target) ? target : null;\n    },\n    getPlacementTarget: function getPlacementTarget() {\n      // This is the target that the tooltip will be placed on, which may not\n      // necessarily be the same element that has the trigger event listeners\n      // For now, this is the same as target\n      // TODO:\n      //   Add in child selector support\n      //   Add in visibility checks for this element\n      //   Fallback to target if not found\n      return this.getTarget();\n    },\n    getTargetId: function getTargetId() {\n      // Returns the ID of the trigger element\n      var target = this.getTarget();\n      return target && target.id ? target.id : null;\n    },\n    getContainer: function getContainer() {\n      // Handle case where container may be a component ref\n      var container = this.container ? this.container.$el || this.container : false;\n      var body = document.body;\n      var target = this.getTarget(); // If we are in a modal, we append to the modal, If we\n      // are in a sidebar, we append to the sidebar, else append\n      // to body, unless a container is specified\n      // TODO:\n      //   Template should periodically check to see if it is in dom\n      //   And if not, self destruct (if container got v-if'ed out of DOM)\n      //   Or this could possibly be part of the visibility check\n\n      return container === false ? closest(CONTAINER_SELECTOR, target) || body :\n      /*istanbul ignore next */\n      isString(container) ?\n      /*istanbul ignore next */\n      getById(container.replace(/^#/, '')) || body :\n      /*istanbul ignore next */\n      body;\n    },\n    getBoundary: function getBoundary() {\n      return this.boundary ? this.boundary.$el || this.boundary : 'scrollParent';\n    },\n    isInModal: function isInModal() {\n      var target = this.getTarget();\n      return target && closest(MODAL_SELECTOR, target);\n    },\n    isDropdown: function isDropdown() {\n      // Returns true if trigger is a dropdown\n      var target = this.getTarget();\n      return target && hasClass(target, DROPDOWN_CLASS);\n    },\n    dropdownOpen: function dropdownOpen() {\n      // Returns true if trigger is a dropdown and the dropdown menu is open\n      var target = this.getTarget();\n      return this.isDropdown() && target && select(DROPDOWN_OPEN_SELECTOR, target);\n    },\n    clearHoverTimeout: function clearHoverTimeout() {\n      clearTimeout(this.$_hoverTimeout);\n      this.$_hoverTimeout = null;\n    },\n    clearVisibilityInterval: function clearVisibilityInterval() {\n      clearInterval(this.$_visibleInterval);\n      this.$_visibleInterval = null;\n    },\n    clearActiveTriggers: function clearActiveTriggers() {\n      for (var trigger in this.activeTrigger) {\n        this.activeTrigger[trigger] = false;\n      }\n    },\n    addAriaDescribedby: function addAriaDescribedby() {\n      // Add aria-describedby on trigger element, without removing any other IDs\n      var target = this.getTarget();\n      var desc = getAttr(target, 'aria-describedby') || '';\n      desc = desc.split(/\\s+/).concat(this.computedId).join(' ').trim(); // Update/add aria-described by\n\n      setAttr(target, 'aria-describedby', desc);\n    },\n    removeAriaDescribedby: function removeAriaDescribedby() {\n      var _this5 = this;\n\n      // Remove aria-describedby on trigger element, without removing any other IDs\n      var target = this.getTarget();\n      var desc = getAttr(target, 'aria-describedby') || '';\n      desc = desc.split(/\\s+/).filter(function (d) {\n        return d !== _this5.computedId;\n      }).join(' ').trim(); // Update or remove aria-describedby\n\n      if (desc) {\n        /* istanbul ignore next */\n        setAttr(target, 'aria-describedby', desc);\n      } else {\n        removeAttr(target, 'aria-describedby');\n      }\n    },\n    fixTitle: function fixTitle() {\n      // If the target has a `title` attribute,\n      // remove it and store it on a data attribute\n      var target = this.getTarget();\n\n      if (hasAttr(target, 'title')) {\n        // Get `title` attribute value and remove it from target\n        var title = getAttr(target, 'title');\n        setAttr(target, 'title', ''); // Only set the data attribute when the value is truthy\n\n        if (title) {\n          setAttr(target, DATA_TITLE_ATTR, title);\n        }\n      }\n    },\n    restoreTitle: function restoreTitle() {\n      // If the target had a `title` attribute,\n      // restore it and remove the data attribute\n      var target = this.getTarget();\n\n      if (hasAttr(target, DATA_TITLE_ATTR)) {\n        // Get data attribute value and remove it from target\n        var title = getAttr(target, DATA_TITLE_ATTR);\n        removeAttr(target, DATA_TITLE_ATTR); // Only restore the `title` attribute when the value is truthy\n\n        if (title) {\n          setAttr(target, 'title', title);\n        }\n      }\n    },\n    // --- BvEvent helpers ---\n    buildEvent: function buildEvent(type) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      // Defaults to a non-cancellable event\n      return new BvEvent(type, _objectSpread({\n        cancelable: false,\n        target: this.getTarget(),\n        relatedTarget: this.getTemplateElement() || null,\n        componentId: this.computedId,\n        vueTarget: this\n      }, options));\n    },\n    emitEvent: function emitEvent(bvEvent) {\n      var type = bvEvent.type;\n      this.emitOnRoot(getRootEventName(this.templateType, type), bvEvent);\n      this.$emit(type, bvEvent);\n    },\n    // --- Event handler setup methods ---\n    listen: function listen() {\n      var _this6 = this;\n\n      // Enable trigger event handlers\n      var el = this.getTarget();\n\n      if (!el) {\n        /* istanbul ignore next */\n        return;\n      } // Listen for global show/hide events\n\n\n      this.setRootListener(true); // Set up our listeners on the target trigger element\n\n      this.computedTriggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          eventOn(el, 'click', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        } else if (trigger === 'focus') {\n          eventOn(el, 'focusin', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n          eventOn(el, 'focusout', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        } else if (trigger === 'blur') {\n          // Used to close $tip when element looses focus\n\n          /* istanbul ignore next */\n          eventOn(el, 'focusout', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        } else if (trigger === 'hover') {\n          eventOn(el, 'mouseenter', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n          eventOn(el, 'mouseleave', _this6.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n        }\n      }, this);\n    },\n\n    /* istanbul ignore next */\n    unListen: function unListen() {\n      var _this7 = this;\n\n      // Remove trigger event handlers\n      var events = ['click', 'focusin', 'focusout', 'mouseenter', 'mouseleave'];\n      var target = this.getTarget(); // Stop listening for global show/hide/enable/disable events\n\n      this.setRootListener(false); // Clear out any active target listeners\n\n      events.forEach(function (event) {\n        target && eventOff(target, event, _this7.handleEvent, EVENT_OPTIONS_NO_CAPTURE);\n      }, this);\n    },\n    setRootListener: function setRootListener(on) {\n      // Listen for global `bv::{hide|show}::{tooltip|popover}` hide request event\n      var $root = this.$root;\n\n      if ($root) {\n        var method = on ? '$on' : '$off';\n        var type = this.templateType;\n        $root[method](getRootActionEventName(type, EVENT_NAME_HIDE), this.doHide);\n        $root[method](getRootActionEventName(type, EVENT_NAME_SHOW), this.doShow);\n        $root[method](getRootActionEventName(type, EVENT_NAME_DISABLE), this.doDisable);\n        $root[method](getRootActionEventName(type, EVENT_NAME_ENABLE), this.doEnable);\n      }\n    },\n    setWhileOpenListeners: function setWhileOpenListeners(on) {\n      // Events that are only registered when the template is showing\n      // Modal close events\n      this.setModalListener(on); // Dropdown open events (if we are attached to a dropdown)\n\n      this.setDropdownListener(on); // Periodic $element visibility check\n      // For handling when tip target is in <keepalive>, tabs, carousel, etc\n\n      this.visibleCheck(on); // On-touch start listeners\n\n      this.setOnTouchStartListener(on);\n    },\n    // Handler for periodic visibility check\n    visibleCheck: function visibleCheck(on) {\n      var _this8 = this;\n\n      this.clearVisibilityInterval();\n      var target = this.getTarget();\n      var tip = this.getTemplateElement();\n\n      if (on) {\n        this.$_visibleInterval = setInterval(function () {\n          if (tip && _this8.localShow && (!target.parentNode || !isVisible(target))) {\n            // Target element is no longer visible or not in DOM, so force-hide the tooltip\n            _this8.forceHide();\n          }\n        }, 100);\n      }\n    },\n    setModalListener: function setModalListener(on) {\n      // Handle case where tooltip/target is in a modal\n      if (this.isInModal()) {\n        // We can listen for modal hidden events on `$root`\n        this.$root[on ? '$on' : '$off'](ROOT_EVENT_NAME_MODAL_HIDDEN, this.forceHide);\n      }\n    },\n\n    /* istanbul ignore next: JSDOM doesn't support `ontouchstart` */\n    setOnTouchStartListener: function setOnTouchStartListener(on) {\n      var _this9 = this;\n\n      // If this is a touch-enabled device we add extra empty\n      // `mouseover` listeners to the body's immediate children\n      // Only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n      if ('ontouchstart' in document.documentElement) {\n        arrayFrom(document.body.children).forEach(function (el) {\n          eventOnOff(on, el, 'mouseover', _this9.$_noop);\n        });\n      }\n    },\n    setDropdownListener: function setDropdownListener(on) {\n      var target = this.getTarget();\n\n      if (!target || !this.$root || !this.isDropdown) {\n        return;\n      } // We can listen for dropdown shown events on its instance\n      // TODO:\n      //   We could grab the ID from the dropdown, and listen for\n      //   $root events for that particular dropdown id\n      //   Dropdown shown and hidden events will need to emit\n      //   Note: Dropdown auto-ID happens in a `$nextTick()` after mount\n      //         So the ID lookup would need to be done in a `$nextTick()`\n\n\n      if (target.__vue__) {\n        target.__vue__[on ? '$on' : '$off'](EVENT_NAME_SHOWN, this.forceHide);\n      }\n    },\n    // --- Event handlers ---\n    handleEvent: function handleEvent(event) {\n      // General trigger event handler\n      // target is the trigger element\n      var target = this.getTarget();\n\n      if (!target || isDisabled(target) || !this.$_enabled || this.dropdownOpen()) {\n        // If disabled or not enabled, or if a dropdown that is open, don't do anything\n        // If tip is shown before element gets disabled, then tip will not\n        // close until no longer disabled or forcefully closed\n        return;\n      }\n\n      var type = event.type;\n      var triggers = this.computedTriggers;\n\n      if (type === 'click' && arrayIncludes(triggers, 'click')) {\n        this.click(event);\n      } else if (type === 'mouseenter' && arrayIncludes(triggers, 'hover')) {\n        // `mouseenter` is a non-bubbling event\n        this.enter(event);\n      } else if (type === 'focusin' && arrayIncludes(triggers, 'focus')) {\n        // `focusin` is a bubbling event\n        // `event` includes `relatedTarget` (element losing focus)\n        this.enter(event);\n      } else if (type === 'focusout' && (arrayIncludes(triggers, 'focus') || arrayIncludes(triggers, 'blur')) || type === 'mouseleave' && arrayIncludes(triggers, 'hover')) {\n        // `focusout` is a bubbling event\n        // `mouseleave` is a non-bubbling event\n        // `tip` is the template (will be null if not open)\n        var tip = this.getTemplateElement(); // `eventTarget` is the element which is losing focus/hover and\n\n        var eventTarget = event.target; // `relatedTarget` is the element gaining focus/hover\n\n        var relatedTarget = event.relatedTarget;\n        /* istanbul ignore next */\n\n        if ( // From tip to target\n        tip && contains(tip, eventTarget) && contains(target, relatedTarget) || // From target to tip\n        tip && contains(target, eventTarget) && contains(tip, relatedTarget) || // Within tip\n        tip && contains(tip, eventTarget) && contains(tip, relatedTarget) || // Within target\n        contains(target, eventTarget) && contains(target, relatedTarget)) {\n          // If focus/hover moves within `tip` and `target`, don't trigger a leave\n          return;\n        } // Otherwise trigger a leave\n\n\n        this.leave(event);\n      }\n    },\n    doHide: function doHide(id) {\n      // Programmatically hide tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Close all tooltips or popovers, or this specific tip (with ID)\n        this.forceHide();\n      }\n    },\n    doShow: function doShow(id) {\n      // Programmatically show tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Open all tooltips or popovers, or this specific tip (with ID)\n        this.show();\n      }\n    },\n\n    /*istanbul ignore next: ignore for now */\n    doDisable: function doDisable(id)\n    /*istanbul ignore next: ignore for now */\n    {\n      // Programmatically disable tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Disable all tooltips or popovers (no ID), or this specific tip (with ID)\n        this.disable();\n      }\n    },\n\n    /*istanbul ignore next: ignore for now */\n    doEnable: function doEnable(id)\n    /*istanbul ignore next: ignore for now */\n    {\n      // Programmatically enable tooltip or popover\n      if (!id || this.getTargetId() === id || this.computedId === id) {\n        // Enable all tooltips or popovers (no ID), or this specific tip (with ID)\n        this.enable();\n      }\n    },\n    click: function click(event) {\n      if (!this.$_enabled || this.dropdownOpen()) {\n        /* istanbul ignore next */\n        return;\n      } // Get around a WebKit bug where `click` does not trigger focus events\n      // On most browsers, `click` triggers a `focusin`/`focus` event first\n      // Needed so that trigger 'click blur' works on iOS\n      // https://github.com/bootstrap-vue/bootstrap-vue/issues/5099\n      // We use `currentTarget` rather than `target` to trigger on the\n      // element, not the inner content\n\n\n      attemptFocus(event.currentTarget);\n      this.activeTrigger.click = !this.activeTrigger.click;\n\n      if (this.isWithActiveTrigger) {\n        this.enter(null);\n      } else {\n        /* istanbul ignore next */\n        this.leave(null);\n      }\n    },\n\n    /* istanbul ignore next */\n    toggle: function toggle() {\n      // Manual toggle handler\n      if (!this.$_enabled || this.dropdownOpen()) {\n        /* istanbul ignore next */\n        return;\n      } // Should we register as an active trigger?\n      // this.activeTrigger.manual = !this.activeTrigger.manual\n\n\n      if (this.localShow) {\n        this.leave(null);\n      } else {\n        this.enter(null);\n      }\n    },\n    enter: function enter() {\n      var _this10 = this;\n\n      var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      // Opening trigger handler\n      // Note: Click events are sent with event === null\n      if (event) {\n        this.activeTrigger[event.type === 'focusin' ? 'focus' : 'hover'] = true;\n      }\n      /* istanbul ignore next */\n\n\n      if (this.localShow || this.$_hoverState === 'in') {\n        this.$_hoverState = 'in';\n        return;\n      }\n\n      this.clearHoverTimeout();\n      this.$_hoverState = 'in';\n\n      if (!this.computedDelay.show) {\n        this.show();\n      } else {\n        // Hide any title attribute while enter delay is active\n        this.fixTitle();\n        this.$_hoverTimeout = setTimeout(function () {\n          /* istanbul ignore else */\n          if (_this10.$_hoverState === 'in') {\n            _this10.show();\n          } else if (!_this10.localShow) {\n            _this10.restoreTitle();\n          }\n        }, this.computedDelay.show);\n      }\n    },\n    leave: function leave() {\n      var _this11 = this;\n\n      var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      // Closing trigger handler\n      // Note: Click events are sent with event === null\n      if (event) {\n        this.activeTrigger[event.type === 'focusout' ? 'focus' : 'hover'] = false;\n        /* istanbul ignore next */\n\n        if (event.type === 'focusout' && arrayIncludes(this.computedTriggers, 'blur')) {\n          // Special case for `blur`: we clear out the other triggers\n          this.activeTrigger.click = false;\n          this.activeTrigger.hover = false;\n        }\n      }\n      /* istanbul ignore next: ignore for now */\n\n\n      if (this.isWithActiveTrigger) {\n        return;\n      }\n\n      this.clearHoverTimeout();\n      this.$_hoverState = 'out';\n\n      if (!this.computedDelay.hide) {\n        this.hide();\n      } else {\n        this.$_hoverTimeout = setTimeout(function () {\n          if (_this11.$_hoverState === 'out') {\n            _this11.hide();\n          }\n        }, this.computedDelay.hide);\n      }\n    }\n  }\n});","/**\n  * vee-validate v3.4.5\n  * (c) 2020 Abdelrahman Awad\n  * @license MIT\n  */\n/**\r\n * Some Alpha Regex helpers.\r\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\r\n */\r\n/* eslint-disable no-misleading-character-class */\r\nvar alpha = {\r\n    en: /^[A-Z]*$/i,\r\n    cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\r\n    da: /^[A-ZÆØÅ]*$/i,\r\n    de: /^[A-ZÄÖÜß]*$/i,\r\n    es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,\r\n    fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n    fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\r\n    it: /^[A-Z\\xC0-\\xFF]*$/i,\r\n    lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n    nl: /^[A-ZÉËÏÓÖÜ]*$/i,\r\n    hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\r\n    pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\r\n    pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\r\n    ro: /^[A-ZĂÂÎŞŢ]*$/i,\r\n    ru: /^[А-ЯЁ]*$/i,\r\n    sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\r\n    sr: /^[A-ZČĆŽŠĐ]*$/i,\r\n    sv: /^[A-ZÅÄÖ]*$/i,\r\n    tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\r\n    uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,\r\n    ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\r\n    az: /^[A-ZÇƏĞİıÖŞÜ]*$/i,\r\n    el: /^[Α-ώ]*$/i\r\n};\r\nvar alphaSpaces = {\r\n    en: /^[A-Z\\s]*$/i,\r\n    cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\\s]*$/i,\r\n    da: /^[A-ZÆØÅ\\s]*$/i,\r\n    de: /^[A-ZÄÖÜß\\s]*$/i,\r\n    es: /^[A-ZÁÉÍÑÓÚÜ\\s]*$/i,\r\n    fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n    fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]*$/i,\r\n    it: /^[A-Z\\xC0-\\xFF\\s]*$/i,\r\n    lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\r\n    nl: /^[A-ZÉËÏÓÖÜ\\s]*$/i,\r\n    hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\\s]*$/i,\r\n    pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\\s]*$/i,\r\n    pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\\s]*$/i,\r\n    ro: /^[A-ZĂÂÎŞŢ\\s]*$/i,\r\n    ru: /^[А-ЯЁ\\s]*$/i,\r\n    sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\\s]*$/i,\r\n    sr: /^[A-ZČĆŽŠĐ\\s]*$/i,\r\n    sv: /^[A-ZÅÄÖ\\s]*$/i,\r\n    tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\r\n    uk: /^[А-ЩЬЮЯЄІЇҐ\\s]*$/i,\r\n    ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\\s]*$/,\r\n    az: /^[A-ZÇƏĞİıÖŞÜ\\s]*$/i,\r\n    el: /^[Α-ώ\\s]*$/i\r\n};\r\nvar alphanumeric = {\r\n    en: /^[0-9A-Z]*$/i,\r\n    cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\r\n    da: /^[0-9A-ZÆØÅ]$/i,\r\n    de: /^[0-9A-ZÄÖÜß]*$/i,\r\n    es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,\r\n    fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n    fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\r\n    it: /^[0-9A-Z\\xC0-\\xFF]*$/i,\r\n    lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n    hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\r\n    nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,\r\n    pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\r\n    pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\r\n    ro: /^[0-9A-ZĂÂÎŞŢ]*$/i,\r\n    ru: /^[0-9А-ЯЁ]*$/i,\r\n    sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\r\n    sr: /^[0-9A-ZČĆŽŠĐ]*$/i,\r\n    sv: /^[0-9A-ZÅÄÖ]*$/i,\r\n    tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\r\n    uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,\r\n    ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\r\n    az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i,\r\n    el: /^[0-9Α-ώ]*$/i\r\n};\r\nvar alphaDash = {\r\n    en: /^[0-9A-Z_-]*$/i,\r\n    cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,\r\n    da: /^[0-9A-ZÆØÅ_-]*$/i,\r\n    de: /^[0-9A-ZÄÖÜß_-]*$/i,\r\n    es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,\r\n    fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n    fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,\r\n    it: /^[0-9A-Z\\xC0-\\xFF_-]*$/i,\r\n    lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\r\n    nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,\r\n    hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,\r\n    pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,\r\n    pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,\r\n    ro: /^[0-9A-ZĂÂÎŞŢ_-]*$/i,\r\n    ru: /^[0-9А-ЯЁ_-]*$/i,\r\n    sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,\r\n    sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,\r\n    sv: /^[0-9A-ZÅÄÖ_-]*$/i,\r\n    tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\r\n    uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,\r\n    ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,\r\n    az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i,\r\n    el: /^[0-9Α-ώ_-]*$/i\r\n};\n\nvar validate = function (value, _a) {\r\n    var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return validate(val, { locale: locale }); });\r\n    }\r\n    // Match at least one locale.\r\n    if (!locale) {\r\n        return Object.keys(alpha).some(function (loc) { return alpha[loc].test(value); });\r\n    }\r\n    return (alpha[locale] || alpha.en).test(value);\r\n};\r\nvar params = [\r\n    {\r\n        name: 'locale'\r\n    }\r\n];\r\nvar alpha$1 = {\r\n    validate: validate,\r\n    params: params\r\n};\n\nvar validate$1 = function (value, _a) {\r\n    var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return validate$1(val, { locale: locale }); });\r\n    }\r\n    // Match at least one locale.\r\n    if (!locale) {\r\n        return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\r\n    }\r\n    return (alphaDash[locale] || alphaDash.en).test(value);\r\n};\r\nvar params$1 = [\r\n    {\r\n        name: 'locale'\r\n    }\r\n];\r\nvar alpha_dash = {\r\n    validate: validate$1,\r\n    params: params$1\r\n};\n\nvar validate$2 = function (value, _a) {\r\n    var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return validate$2(val, { locale: locale }); });\r\n    }\r\n    // Match at least one locale.\r\n    if (!locale) {\r\n        return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\r\n    }\r\n    return (alphanumeric[locale] || alphanumeric.en).test(value);\r\n};\r\nvar params$2 = [\r\n    {\r\n        name: 'locale'\r\n    }\r\n];\r\nvar alpha_num = {\r\n    validate: validate$2,\r\n    params: params$2\r\n};\n\nvar validate$3 = function (value, _a) {\r\n    var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return validate$3(val, { locale: locale }); });\r\n    }\r\n    // Match at least one locale.\r\n    if (!locale) {\r\n        return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\r\n    }\r\n    return (alphaSpaces[locale] || alphaSpaces.en).test(value);\r\n};\r\nvar params$3 = [\r\n    {\r\n        name: 'locale'\r\n    }\r\n];\r\nvar alpha_spaces = {\r\n    validate: validate$3,\r\n    params: params$3\r\n};\n\nvar validate$4 = function (value, _a) {\r\n    var _b = _a === void 0 ? {} : _a, min = _b.min, max = _b.max;\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return !!validate$4(val, { min: min, max: max }); });\r\n    }\r\n    return Number(min) <= value && Number(max) >= value;\r\n};\r\nvar params$4 = [\r\n    {\r\n        name: 'min'\r\n    },\r\n    {\r\n        name: 'max'\r\n    }\r\n];\r\nvar between = {\r\n    validate: validate$4,\r\n    params: params$4\r\n};\n\nvar validate$5 = function (value, _a) {\r\n    var target = _a.target;\r\n    return String(value) === String(target);\r\n};\r\nvar params$5 = [\r\n    {\r\n        name: 'target',\r\n        isTarget: true\r\n    }\r\n];\r\nvar confirmed = {\r\n    validate: validate$5,\r\n    params: params$5\r\n};\n\nvar validate$6 = function (value, _a) {\r\n    var length = _a.length;\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return validate$6(val, { length: length }); });\r\n    }\r\n    var strVal = String(value);\r\n    return /^[0-9]*$/.test(strVal) && strVal.length === length;\r\n};\r\nvar params$6 = [\r\n    {\r\n        name: 'length',\r\n        cast: function (value) {\r\n            return Number(value);\r\n        }\r\n    }\r\n];\r\nvar digits = {\r\n    validate: validate$6,\r\n    params: params$6\r\n};\n\nvar validateImage = function (file, width, height) {\r\n    var URL = window.URL || window.webkitURL;\r\n    return new Promise(function (resolve) {\r\n        var image = new Image();\r\n        image.onerror = function () { return resolve(false); };\r\n        image.onload = function () { return resolve(image.width === width && image.height === height); };\r\n        image.src = URL.createObjectURL(file);\r\n    });\r\n};\r\nvar validate$7 = function (files, _a) {\r\n    var width = _a.width, height = _a.height;\r\n    var list = [];\r\n    files = Array.isArray(files) ? files : [files];\r\n    for (var i = 0; i < files.length; i++) {\r\n        // if file is not an image, reject.\r\n        if (!/\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(files[i].name)) {\r\n            return Promise.resolve(false);\r\n        }\r\n        list.push(files[i]);\r\n    }\r\n    return Promise.all(list.map(function (file) { return validateImage(file, width, height); })).then(function (values) {\r\n        return values.every(function (v) { return v; });\r\n    });\r\n};\r\nvar params$7 = [\r\n    {\r\n        name: 'width',\r\n        cast: function (value) {\r\n            return Number(value);\r\n        }\r\n    },\r\n    {\r\n        name: 'height',\r\n        cast: function (value) {\r\n            return Number(value);\r\n        }\r\n    }\r\n];\r\nvar dimensions = {\r\n    validate: validate$7,\r\n    params: params$7\r\n};\n\nvar validate$8 = function (value, _a) {\r\n    var multiple = (_a === void 0 ? {} : _a).multiple;\r\n    // eslint-disable-next-line\r\n    var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n    if (multiple && !Array.isArray(value)) {\r\n        value = String(value)\r\n            .split(',')\r\n            .map(function (emailStr) { return emailStr.trim(); });\r\n    }\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return re.test(String(val)); });\r\n    }\r\n    return re.test(String(value));\r\n};\r\nvar params$8 = [\r\n    {\r\n        name: 'multiple',\r\n        default: false\r\n    }\r\n];\r\nvar email = {\r\n    validate: validate$8,\r\n    params: params$8\r\n};\n\nfunction isNullOrUndefined(value) {\r\n    return value === null || value === undefined;\r\n}\r\nfunction isEmptyArray(arr) {\r\n    return Array.isArray(arr) && arr.length === 0;\r\n}\r\nfunction isCallable(fn) {\r\n    return typeof fn === 'function';\r\n}\n\nfunction includes(collection, item) {\r\n    return collection.indexOf(item) !== -1;\r\n}\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nfunction toArray(arrayLike) {\r\n    if (isCallable(Array.from)) {\r\n        return Array.from(arrayLike);\r\n    }\r\n    /* istanbul ignore next */\r\n    return _copyArray(arrayLike);\r\n}\r\n/* istanbul ignore next */\r\nfunction _copyArray(arrayLike) {\r\n    var array = [];\r\n    var length = arrayLike.length;\r\n    for (var i = 0; i < length; i++) {\r\n        array.push(arrayLike[i]);\r\n    }\r\n    return array;\r\n}\n\nvar validate$9 = function (value, options) {\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return validate$9(val, options); });\r\n    }\r\n    return toArray(options).some(function (item) {\r\n        // eslint-disable-next-line\r\n        return item == value;\r\n    });\r\n};\r\nvar oneOf = {\r\n    validate: validate$9\r\n};\n\nvar validate$a = function (value, args) {\r\n    return !validate$9(value, args);\r\n};\r\nvar excluded = {\r\n    validate: validate$a\r\n};\n\nvar validate$b = function (files, extensions) {\r\n    var regex = new RegExp(\".(\" + extensions.join('|') + \")$\", 'i');\r\n    if (Array.isArray(files)) {\r\n        return files.every(function (file) { return regex.test(file.name); });\r\n    }\r\n    return regex.test(files.name);\r\n};\r\nvar ext = {\r\n    validate: validate$b\r\n};\n\nvar validate$c = function (files) {\r\n    var regex = /\\.(jpg|svg|jpeg|png|bmp|gif|webp)$/i;\r\n    if (Array.isArray(files)) {\r\n        return files.every(function (file) { return regex.test(file.name); });\r\n    }\r\n    return regex.test(files.name);\r\n};\r\nvar image = {\r\n    validate: validate$c\r\n};\n\nvar validate$d = function (value) {\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\r\n    }\r\n    return /^-?[0-9]+$/.test(String(value));\r\n};\r\nvar integer = {\r\n    validate: validate$d\r\n};\n\nvar validate$e = function (value, _a) {\r\n    var other = _a.other;\r\n    return value === other;\r\n};\r\nvar params$9 = [\r\n    {\r\n        name: 'other'\r\n    }\r\n];\r\nvar is = {\r\n    validate: validate$e,\r\n    params: params$9\r\n};\n\nvar validate$f = function (value, _a) {\r\n    var other = _a.other;\r\n    return value !== other;\r\n};\r\nvar params$a = [\r\n    {\r\n        name: 'other'\r\n    }\r\n];\r\nvar is_not = {\r\n    validate: validate$f,\r\n    params: params$a\r\n};\n\nvar validate$g = function (value, _a) {\r\n    var length = _a.length;\r\n    if (isNullOrUndefined(value)) {\r\n        return false;\r\n    }\r\n    if (typeof value === 'string') {\r\n        value = toArray(value);\r\n    }\r\n    if (typeof value === 'number') {\r\n        value = String(value);\r\n    }\r\n    if (!value.length) {\r\n        value = toArray(value);\r\n    }\r\n    return value.length === length;\r\n};\r\nvar params$b = [\r\n    {\r\n        name: 'length',\r\n        cast: function (value) { return Number(value); }\r\n    }\r\n];\r\nvar length = {\r\n    validate: validate$g,\r\n    params: params$b\r\n};\n\nvar validate$h = function (value, _a) {\r\n    var length = _a.length;\r\n    if (isNullOrUndefined(value)) {\r\n        return length >= 0;\r\n    }\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return validate$h(val, { length: length }); });\r\n    }\r\n    return String(value).length <= length;\r\n};\r\nvar params$c = [\r\n    {\r\n        name: 'length',\r\n        cast: function (value) {\r\n            return Number(value);\r\n        }\r\n    }\r\n];\r\nvar max = {\r\n    validate: validate$h,\r\n    params: params$c\r\n};\n\nvar validate$i = function (value, _a) {\r\n    var max = _a.max;\r\n    if (isNullOrUndefined(value) || value === '') {\r\n        return false;\r\n    }\r\n    if (Array.isArray(value)) {\r\n        return value.length > 0 && value.every(function (val) { return validate$i(val, { max: max }); });\r\n    }\r\n    return Number(value) <= max;\r\n};\r\nvar params$d = [\r\n    {\r\n        name: 'max',\r\n        cast: function (value) {\r\n            return Number(value);\r\n        }\r\n    }\r\n];\r\nvar max_value = {\r\n    validate: validate$i,\r\n    params: params$d\r\n};\n\nvar validate$j = function (files, mimes) {\r\n    var regex = new RegExp(mimes.join('|').replace('*', '.+') + \"$\", 'i');\r\n    if (Array.isArray(files)) {\r\n        return files.every(function (file) { return regex.test(file.type); });\r\n    }\r\n    return regex.test(files.type);\r\n};\r\nvar mimes = {\r\n    validate: validate$j\r\n};\n\nvar validate$k = function (value, _a) {\r\n    var length = _a.length;\r\n    if (isNullOrUndefined(value)) {\r\n        return false;\r\n    }\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return validate$k(val, { length: length }); });\r\n    }\r\n    return String(value).length >= length;\r\n};\r\nvar params$e = [\r\n    {\r\n        name: 'length',\r\n        cast: function (value) {\r\n            return Number(value);\r\n        }\r\n    }\r\n];\r\nvar min = {\r\n    validate: validate$k,\r\n    params: params$e\r\n};\n\nvar validate$l = function (value, _a) {\r\n    var min = _a.min;\r\n    if (isNullOrUndefined(value) || value === '') {\r\n        return false;\r\n    }\r\n    if (Array.isArray(value)) {\r\n        return value.length > 0 && value.every(function (val) { return validate$l(val, { min: min }); });\r\n    }\r\n    return Number(value) >= min;\r\n};\r\nvar params$f = [\r\n    {\r\n        name: 'min',\r\n        cast: function (value) {\r\n            return Number(value);\r\n        }\r\n    }\r\n];\r\nvar min_value = {\r\n    validate: validate$l,\r\n    params: params$f\r\n};\n\nvar ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;\r\nvar en = /^[0-9]+$/;\r\nvar validate$m = function (value) {\r\n    var testValue = function (val) {\r\n        var strValue = String(val);\r\n        return en.test(strValue) || ar.test(strValue);\r\n    };\r\n    if (Array.isArray(value)) {\r\n        return value.every(testValue);\r\n    }\r\n    return testValue(value);\r\n};\r\nvar numeric = {\r\n    validate: validate$m\r\n};\n\nvar validate$n = function (value, _a) {\r\n    var regex = _a.regex;\r\n    if (Array.isArray(value)) {\r\n        return value.every(function (val) { return validate$n(val, { regex: regex }); });\r\n    }\r\n    return regex.test(String(value));\r\n};\r\nvar params$g = [\r\n    {\r\n        name: 'regex',\r\n        cast: function (value) {\r\n            if (typeof value === 'string') {\r\n                return new RegExp(value);\r\n            }\r\n            return value;\r\n        }\r\n    }\r\n];\r\nvar regex = {\r\n    validate: validate$n,\r\n    params: params$g\r\n};\n\nvar validate$o = function (value, _a) {\r\n    var allowFalse = (_a === void 0 ? { allowFalse: true } : _a).allowFalse;\r\n    var result = {\r\n        valid: false,\r\n        required: true\r\n    };\r\n    if (isNullOrUndefined(value) || isEmptyArray(value)) {\r\n        return result;\r\n    }\r\n    // incase a field considers `false` as an empty value like checkboxes.\r\n    if (value === false && !allowFalse) {\r\n        return result;\r\n    }\r\n    result.valid = !!String(value).trim().length;\r\n    return result;\r\n};\r\nvar computesRequired = true;\r\nvar params$h = [\r\n    {\r\n        name: 'allowFalse',\r\n        default: true\r\n    }\r\n];\r\nvar required = {\r\n    validate: validate$o,\r\n    params: params$h,\r\n    computesRequired: computesRequired\r\n};\n\nvar testEmpty = function (value) {\r\n    return isEmptyArray(value) || includes([false, null, undefined], value) || !String(value).trim().length;\r\n};\r\nvar validate$p = function (value, _a) {\r\n    var target = _a.target, values = _a.values;\r\n    var required;\r\n    if (values && values.length) {\r\n        if (!Array.isArray(values) && typeof values === 'string') {\r\n            values = [values];\r\n        }\r\n        // eslint-disable-next-line\r\n        required = values.some(function (val) { return val == String(target).trim(); });\r\n    }\r\n    else {\r\n        required = !testEmpty(target);\r\n    }\r\n    if (!required) {\r\n        return {\r\n            valid: true,\r\n            required: required\r\n        };\r\n    }\r\n    return {\r\n        valid: !testEmpty(value),\r\n        required: required\r\n    };\r\n};\r\nvar params$i = [\r\n    {\r\n        name: 'target',\r\n        isTarget: true\r\n    },\r\n    {\r\n        name: 'values'\r\n    }\r\n];\r\nvar computesRequired$1 = true;\r\nvar required_if = {\r\n    validate: validate$p,\r\n    params: params$i,\r\n    computesRequired: computesRequired$1\r\n};\n\nvar validate$q = function (files, _a) {\r\n    var size = _a.size;\r\n    if (isNaN(size)) {\r\n        return false;\r\n    }\r\n    var nSize = size * 1024;\r\n    if (!Array.isArray(files)) {\r\n        return files.size <= nSize;\r\n    }\r\n    for (var i = 0; i < files.length; i++) {\r\n        if (files[i].size > nSize) {\r\n            return false;\r\n        }\r\n    }\r\n    return true;\r\n};\r\nvar params$j = [\r\n    {\r\n        name: 'size',\r\n        cast: function (value) {\r\n            return Number(value);\r\n        }\r\n    }\r\n];\r\nvar size = {\r\n    validate: validate$q,\r\n    params: params$j\r\n};\n\nvar validate$r = function (value, params) {\r\n    var _a = params || {}, _b = _a.decimals, decimals = _b === void 0 ? 0 : _b, _c = _a.separator, separator = _c === void 0 ? 'dot' : _c;\r\n    var separators = {\r\n        dot: '.',\r\n        comma: ','\r\n    };\r\n    var regexPart = +decimals === 0 ? '+' : \"{\" + decimals + \"}\";\r\n    var regex = new RegExp(\"^-?\\\\d+\\\\\" + (separators[separator] || '.') + \"\\\\d\" + regexPart + \"$\");\r\n    return Array.isArray(value) ? value.every(function (val) { return regex.test(String(val)); }) : regex.test(String(value));\r\n};\r\nvar params$k = [\r\n    {\r\n        name: 'decimals',\r\n        default: 0\r\n    },\r\n    {\r\n        name: 'separator',\r\n        default: 'dot'\r\n    }\r\n];\r\nvar double = {\r\n    validate: validate$r,\r\n    params: params$k\r\n};\n\nexport { alpha$1 as alpha, alpha_dash, alpha_num, alpha_spaces, between, confirmed, digits, dimensions, double, email, excluded, ext, image, integer, is, is_not, length, max, max_value, mimes, min, min_value, numeric, oneOf, regex, required, required_if, size };\n","export const validatorPositive = value => {\n  if (value >= 0) {\n    return true\n  }\n  return false\n}\n\nexport const validatorPassword = password => {\n  /* eslint-disable no-useless-escape */\n  const regExp = /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&*()]).{8,}/\n  /* eslint-enable no-useless-escape */\n  const validPassword = regExp.test(password)\n  return validPassword\n}\n\nexport const validatorCreditCard = creditnum => {\n  /* eslint-disable no-useless-escape */\n  const cRegExp = /^(?:3[47][0-9]{13})$/\n  /* eslint-enable no-useless-escape */\n  const validCreditCard = cRegExp.test(creditnum)\n  return validCreditCard\n}\n\nexport const validatorUrlValidator = val => {\n  if (val === undefined || val === null || val.length === 0) {\n    return true\n  }\n  /* eslint-disable no-useless-escape */\n  const re = /^(http[s]?:\\/\\/){0,1}(www\\.){0,1}[a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,5}[\\.]{0,1}/\n  /* eslint-enable no-useless-escape */\n  return re.test(val)\n}\n","import { extend, localize } from 'vee-validate'\nimport {\n  required as rule_required,\n  email as rule_email,\n  min as rule_min,\n  confirmed as rule_confirmed,\n  regex as rule_regex,\n  between as rule_between,\n  alpha as rule_alpha,\n  integer as rule_integer,\n  digits as rule_digits,\n  alpha_dash as rule_alpha_dash,\n  alpha_num as rule_alpha_num,\n  length as rule_length,\n} from 'vee-validate/dist/rules'\nimport ar from 'vee-validate/dist/locale/ar.json'\nimport en from 'vee-validate/dist/locale/en.json'\n\n// eslint-disable-next-line object-curly-newline\nimport { validatorPositive, validatorUrlValidator, validatorPassword, validatorCreditCard } from './validators'\n\n// ////////////////////////////////////////////////////////\n// General\n// ////////////////////////////////////////////////////////\n\nexport const required = extend('required', rule_required)\n\nexport const email = extend('email', rule_email)\n\nexport const min = extend('min', rule_min)\n\nexport const confirmed = extend('confirmed', rule_confirmed)\n\nexport const regex = extend('regex', rule_regex)\n\nexport const between = extend('between', rule_between)\n\nexport const alpha = extend('alpha', rule_alpha)\n\nexport const integer = extend('integer', rule_integer)\n\nexport const digits = extend('digits', rule_digits)\n\nexport const alphaDash = extend('alpha-dash', rule_alpha_dash)\n\nexport const alphaNum = extend('alpha-num', rule_alpha_num)\n\nexport const length = extend('length', rule_length)\n\nexport const positive = extend('positive', {\n  validate: validatorPositive,\n  message: 'Please enter positive number!',\n})\n\nexport const credit = extend('credit-card', {\n  validate: validatorCreditCard,\n  message: 'It is not valid credit card!',\n})\n\nexport const password = extend('password', {\n  validate: validatorPassword,\n  message: 'Your {_field_} must contain at least one uppercase, one lowercase, one special character and one digit',\n})\n\nexport const url = extend('url', {\n  validate: validatorUrlValidator,\n  message: 'URL is invalid',\n})\n\n// Install English and Arabic localizations.\nlocalize({\n  en: {\n    messages: en.messages,\n    names: {\n      email: 'Email',\n      password: 'Password',\n    },\n    fields: {\n      password: {\n        min: '{_field_} is too short, you want to get hacked?',\n      },\n    },\n  },\n  ar: {\n    messages: ar.messages,\n    names: {\n      email: 'البريد الإلكتروني',\n      password: 'كلمة السر',\n    },\n    fields: {\n      password: {\n        min: 'كلمة السر قصيرة جداً سيتم اختراقك',\n      },\n    },\n  },\n})\n// ////////////////////////////////////////////////////////\n// NOTE:\n// Quasar validation for reference only\n// Remove this note once development is finished and make sure to\n// to convert all of them in veevalidate version\n// ////////////////////////////////////////////////////////\n\n// export const required = (val) => {\n//   return (val && val.length > 0) || '*Field is required'\n// }\n\n// export const required_obj = (obj) => {\n//   if (obj === null || obj === undefined) return '*Field is required'\n//   return (Object.entries(obj).length > 0 && obj.constructor === Object) || '*Field is required'\n// }\n\n// export const no_blank_spaces_arr = (arr) => {\n//   return arr.every(val => (val.trim() && val.trim().length > 0)) || 'Blank Spaces are not allowed'\n// }\n\n// export const url = val => {\n//   // If blank return\n//   if (val === undefined || val === null || val.length === 0) return true\n\n//   // Used\n//   // https://stackoverflow.com/questions/4314741/url-regex-validation\n\n//   // Other\n//   // https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\n//   // https://www.w3resource.com/javascript-exercises/javascript-regexp-exercise-9.php\n//   // https://www.geeksforgeeks.org/how-to-validate-url-using-regular-expression-in-javascript/\n\n//   /* eslint-disable no-useless-escape */\n//   const re = /^(http[s]?:\\/\\/){0,1}(www\\.){0,1}[a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,5}[\\.]{0,1}/\n//   /* eslint-enable no-useless-escape */\n//   return re.test(val) || 'URL is invalid'\n// }\n\n// export const date = val => {\n\n//   // If blank return\n//   if (val === undefined || val === null || val.length === 0) return true\n\n//   // https://github.com/quasarframework/quasar/blob/dev/ui/src/utils/patterns.js\n//   return /^-?[\\d]+\\/[0-1]\\d\\/[0-3]\\d$/.test(val) || 'Date is invalid'\n// }\n\n// export const max = (val, max) => {\n\n//   // If blank return\n//   if (val === undefined || val === null) return true\n\n//   return val.length <= max || `More than ${max} characters are not allowed`\n// }\n\n// export const max_arr = (val, max) => {\n//   return val.length <= max || `More than ${max} values are not allowed`\n// }\n\n// export const min = (val, min) => {\n\n//   // If blank return\n//   if (val === undefined || val === null || val.length === 0) return true\n\n//   return val.length >= min || `Minimum ${min} characters are required`\n// }\n\n// export const num_range = (val, min, max) => {\n\n//   // If blank return\n//   if (val === undefined || val === null || val.length === 0) return true\n\n//   const msg = 'Value is invalid'\n//   if (min === null) return val <= max || msg\n//   else if (max === null) return val >= min || msg\n//   else return (val >= min && val <= max) || msg\n// }\n","/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 109);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(45);\nvar inline_1 = __webpack_require__(46);\nvar block_1 = __webpack_require__(47);\nvar embed_1 = __webpack_require__(48);\nvar text_1 = __webpack_require__(49);\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(31);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n    Scope: Registry.Scope,\n    create: Registry.create,\n    find: Registry.find,\n    query: Registry.query,\n    register: Registry.register,\n    Container: container_1.default,\n    Format: format_1.default,\n    Leaf: leaf_1.default,\n    Embed: embed_1.default,\n    Scroll: scroll_1.default,\n    Block: block_1.default,\n    Inline: inline_1.default,\n    Text: text_1.default,\n    Attributor: {\n        Attribute: attributor_1.default,\n        Class: class_1.default,\n        Style: style_1.default,\n        Store: store_1.default,\n    },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n    __extends(ParchmentError, _super);\n    function ParchmentError(message) {\n        var _this = this;\n        message = '[Parchment] ' + message;\n        _this = _super.call(this, message) || this;\n        _this.message = message;\n        _this.name = _this.constructor.name;\n        return _this;\n    }\n    return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n    Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n    Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n    Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n    Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n    Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n    Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n    Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n    Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n    Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n    Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n    Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n    var match = query(input);\n    if (match == null) {\n        throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n    }\n    var BlotClass = match;\n    var node = \n    // @ts-ignore\n    input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n    return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n    if (bubble === void 0) { bubble = false; }\n    if (node == null)\n        return null;\n    // @ts-ignore\n    if (node[exports.DATA_KEY] != null)\n        return node[exports.DATA_KEY].blot;\n    if (bubble)\n        return find(node.parentNode, bubble);\n    return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n    if (scope === void 0) { scope = Scope.ANY; }\n    var match;\n    if (typeof query === 'string') {\n        match = types[query] || attributes[query];\n        // @ts-ignore\n    }\n    else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n        match = types['text'];\n    }\n    else if (typeof query === 'number') {\n        if (query & Scope.LEVEL & Scope.BLOCK) {\n            match = types['block'];\n        }\n        else if (query & Scope.LEVEL & Scope.INLINE) {\n            match = types['inline'];\n        }\n    }\n    else if (query instanceof HTMLElement) {\n        var names = (query.getAttribute('class') || '').split(/\\s+/);\n        for (var i in names) {\n            match = classes[names[i]];\n            if (match)\n                break;\n        }\n        match = match || tags[query.tagName];\n    }\n    if (match == null)\n        return null;\n    // @ts-ignore\n    if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n        return match;\n    return null;\n}\nexports.query = query;\nfunction register() {\n    var Definitions = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        Definitions[_i] = arguments[_i];\n    }\n    if (Definitions.length > 1) {\n        return Definitions.map(function (d) {\n            return register(d);\n        });\n    }\n    var Definition = Definitions[0];\n    if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n        throw new ParchmentError('Invalid definition');\n    }\n    else if (Definition.blotName === 'abstract') {\n        throw new ParchmentError('Cannot register abstract class');\n    }\n    types[Definition.blotName || Definition.attrName] = Definition;\n    if (typeof Definition.keyName === 'string') {\n        attributes[Definition.keyName] = Definition;\n    }\n    else {\n        if (Definition.className != null) {\n            classes[Definition.className] = Definition;\n        }\n        if (Definition.tagName != null) {\n            if (Array.isArray(Definition.tagName)) {\n                Definition.tagName = Definition.tagName.map(function (tagName) {\n                    return tagName.toUpperCase();\n                });\n            }\n            else {\n                Definition.tagName = Definition.tagName.toUpperCase();\n            }\n            var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n            tagNames.forEach(function (tag) {\n                if (tags[tag] == null || Definition.className == null) {\n                    tags[tag] = Definition;\n                }\n            });\n        }\n    }\n    return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0);  // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n  // Assume we are given a well formed ops\n  if (Array.isArray(ops)) {\n    this.ops = ops;\n  } else if (ops != null && Array.isArray(ops.ops)) {\n    this.ops = ops.ops;\n  } else {\n    this.ops = [];\n  }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n  var newOp = {};\n  if (text.length === 0) return this;\n  newOp.insert = text;\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n  if (length <= 0) return this;\n  return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n  if (length <= 0) return this;\n  var newOp = { retain: length };\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n  var index = this.ops.length;\n  var lastOp = this.ops[index - 1];\n  newOp = extend(true, {}, newOp);\n  if (typeof lastOp === 'object') {\n    if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n      this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n      return this;\n    }\n    // Since it does not matter if we insert before or after deleting at the same index,\n    // always prefer to insert first\n    if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n      index -= 1;\n      lastOp = this.ops[index - 1];\n      if (typeof lastOp !== 'object') {\n        this.ops.unshift(newOp);\n        return this;\n      }\n    }\n    if (equal(newOp.attributes, lastOp.attributes)) {\n      if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n        this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n        this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      }\n    }\n  }\n  if (index === this.ops.length) {\n    this.ops.push(newOp);\n  } else {\n    this.ops.splice(index, 0, newOp);\n  }\n  return this;\n};\n\nDelta.prototype.chop = function () {\n  var lastOp = this.ops[this.ops.length - 1];\n  if (lastOp && lastOp.retain && !lastOp.attributes) {\n    this.ops.pop();\n  }\n  return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n  return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n  this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n  return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n  var passed = [], failed = [];\n  this.forEach(function(op) {\n    var target = predicate(op) ? passed : failed;\n    target.push(op);\n  });\n  return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n  return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n  return this.reduce(function (length, elem) {\n    if (elem.insert) {\n      return length + op.length(elem);\n    } else if (elem.delete) {\n      return length - elem.delete;\n    }\n    return length;\n  }, 0);\n};\n\nDelta.prototype.length = function () {\n  return this.reduce(function (length, elem) {\n    return length + op.length(elem);\n  }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n  start = start || 0;\n  if (typeof end !== 'number') end = Infinity;\n  var ops = [];\n  var iter = op.iterator(this.ops);\n  var index = 0;\n  while (index < end && iter.hasNext()) {\n    var nextOp;\n    if (index < start) {\n      nextOp = iter.next(start - index);\n    } else {\n      nextOp = iter.next(end - index);\n      ops.push(nextOp);\n    }\n    index += op.length(nextOp);\n  }\n  return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var ops = [];\n  var firstOther = otherIter.peek();\n  if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n    var firstLeft = firstOther.retain;\n    while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n      firstLeft -= thisIter.peekLength();\n      ops.push(thisIter.next());\n    }\n    if (firstOther.retain - firstLeft > 0) {\n      otherIter.next(firstOther.retain - firstLeft);\n    }\n  }\n  var delta = new Delta(ops);\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else if (thisIter.peekType() === 'delete') {\n      delta.push(thisIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (typeof otherOp.retain === 'number') {\n        var newOp = {};\n        if (typeof thisOp.retain === 'number') {\n          newOp.retain = length;\n        } else {\n          newOp.insert = thisOp.insert;\n        }\n        // Preserve null when composing with a retain, otherwise remove it for inserts\n        var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n        if (attributes) newOp.attributes = attributes;\n        delta.push(newOp);\n\n        // Optimization if rest of other is just retain\n        if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n          var rest = new Delta(thisIter.rest());\n          return delta.concat(rest).chop();\n        }\n\n      // Other op should be delete, we could be an insert or retain\n      // Insert + delete cancels out\n      } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n        delta.push(otherOp);\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n  var delta = new Delta(this.ops.slice());\n  if (other.ops.length > 0) {\n    delta.push(other.ops[0]);\n    delta.ops = delta.ops.concat(other.ops.slice(1));\n  }\n  return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n  if (this.ops === other.ops) {\n    return new Delta();\n  }\n  var strings = [this, other].map(function (delta) {\n    return delta.map(function (op) {\n      if (op.insert != null) {\n        return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n      }\n      var prep = (delta === other) ? 'on' : 'with';\n      throw new Error('diff() called ' + prep + ' non-document');\n    }).join('');\n  });\n  var delta = new Delta();\n  var diffResult = diff(strings[0], strings[1], index);\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  diffResult.forEach(function (component) {\n    var length = component[1].length;\n    while (length > 0) {\n      var opLength = 0;\n      switch (component[0]) {\n        case diff.INSERT:\n          opLength = Math.min(otherIter.peekLength(), length);\n          delta.push(otherIter.next(opLength));\n          break;\n        case diff.DELETE:\n          opLength = Math.min(length, thisIter.peekLength());\n          thisIter.next(opLength);\n          delta['delete'](opLength);\n          break;\n        case diff.EQUAL:\n          opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n          var thisOp = thisIter.next(opLength);\n          var otherOp = otherIter.next(opLength);\n          if (equal(thisOp.insert, otherOp.insert)) {\n            delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n          } else {\n            delta.push(otherOp)['delete'](opLength);\n          }\n          break;\n      }\n      length -= opLength;\n    }\n  });\n  return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n  newline = newline || '\\n';\n  var iter = op.iterator(this.ops);\n  var line = new Delta();\n  var i = 0;\n  while (iter.hasNext()) {\n    if (iter.peekType() !== 'insert') return;\n    var thisOp = iter.peek();\n    var start = op.length(thisOp) - iter.peekLength();\n    var index = typeof thisOp.insert === 'string' ?\n      thisOp.insert.indexOf(newline, start) - start : -1;\n    if (index < 0) {\n      line.push(iter.next());\n    } else if (index > 0) {\n      line.push(iter.next(index));\n    } else {\n      if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n        return;\n      }\n      i += 1;\n      line = new Delta();\n    }\n  }\n  if (line.length() > 0) {\n    predicate(line, {}, i);\n  }\n};\n\nDelta.prototype.transform = function (other, priority) {\n  priority = !!priority;\n  if (typeof other === 'number') {\n    return this.transformPosition(other, priority);\n  }\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var delta = new Delta();\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n      delta.retain(op.length(thisIter.next()));\n    } else if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (thisOp['delete']) {\n        // Our delete either makes their delete redundant or removes their retain\n        continue;\n      } else if (otherOp['delete']) {\n        delta.push(otherOp);\n      } else {\n        // We retain either their retain or insert\n        delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n  priority = !!priority;\n  var thisIter = op.iterator(this.ops);\n  var offset = 0;\n  while (thisIter.hasNext() && offset <= index) {\n    var length = thisIter.peekLength();\n    var nextType = thisIter.peekType();\n    thisIter.next();\n    if (nextType === 'delete') {\n      index -= Math.min(length, index - offset);\n      continue;\n    } else if (nextType === 'insert' && (offset < index || !priority)) {\n      index += length;\n    }\n    offset += length;\n  }\n  return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n  _inherits(BlockEmbed, _Parchment$Embed);\n\n  function BlockEmbed() {\n    _classCallCheck(this, BlockEmbed);\n\n    return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n  }\n\n  _createClass(BlockEmbed, [{\n    key: 'attach',\n    value: function attach() {\n      _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n      this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n    }\n  }, {\n    key: 'delta',\n    value: function delta() {\n      return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n      if (attribute != null) {\n        this.attributes.attribute(attribute, value);\n      }\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      this.format(name, value);\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (typeof value === 'string' && value.endsWith('\\n')) {\n        var block = _parchment2.default.create(Block.blotName);\n        this.parent.insertBefore(block, index === 0 ? this : this.next);\n        block.insertAt(0, value.slice(0, -1));\n      } else {\n        _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n    }\n  }]);\n\n  return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n  _inherits(Block, _Parchment$Block);\n\n  function Block(domNode) {\n    _classCallCheck(this, Block);\n\n    var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n    _this2.cache = {};\n    return _this2;\n  }\n\n  _createClass(Block, [{\n    key: 'delta',\n    value: function delta() {\n      if (this.cache.delta == null) {\n        this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n          if (leaf.length() === 0) {\n            return delta;\n          } else {\n            return delta.insert(leaf.value(), bubbleFormats(leaf));\n          }\n        }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n      }\n      return this.cache.delta;\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n      this.cache = {};\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length <= 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n        if (index + length === this.length()) {\n          this.format(name, value);\n        }\n      } else {\n        _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n      if (value.length === 0) return;\n      var lines = value.split('\\n');\n      var text = lines.shift();\n      if (text.length > 0) {\n        if (index < this.length() - 1 || this.children.tail == null) {\n          _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n        } else {\n          this.children.tail.insertAt(this.children.tail.length(), text);\n        }\n        this.cache = {};\n      }\n      var block = this;\n      lines.reduce(function (index, line) {\n        block = block.split(index, true);\n        block.insertAt(0, line);\n        return line.length;\n      }, index + text.length);\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      var head = this.children.head;\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n      if (head instanceof _break2.default) {\n        head.remove();\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      if (this.cache.length == null) {\n        this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n      }\n      return this.cache.length;\n    }\n  }, {\n    key: 'moveChildren',\n    value: function moveChildren(target, ref) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n      this.cache = {};\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n      this.cache = {};\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n    }\n  }, {\n    key: 'removeChild',\n    value: function removeChild(child) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n      this.cache = {};\n    }\n  }, {\n    key: 'split',\n    value: function split(index) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n        var clone = this.clone();\n        if (index === 0) {\n          this.parent.insertBefore(clone, this);\n          return this;\n        } else {\n          this.parent.insertBefore(clone, this.next);\n          return clone;\n        }\n      } else {\n        var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n        this.cache = {};\n        return next;\n      }\n    }\n  }]);\n\n  return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n  var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (blot == null) return formats;\n  if (typeof blot.formats === 'function') {\n    formats = (0, _extend2.default)(formats, blot.formats());\n  }\n  if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n    return formats;\n  }\n  return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n  _createClass(Quill, null, [{\n    key: 'debug',\n    value: function debug(limit) {\n      if (limit === true) {\n        limit = 'log';\n      }\n      _logger2.default.level(limit);\n    }\n  }, {\n    key: 'find',\n    value: function find(node) {\n      return node.__quill || _parchment2.default.find(node);\n    }\n  }, {\n    key: 'import',\n    value: function _import(name) {\n      if (this.imports[name] == null) {\n        debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n      }\n      return this.imports[name];\n    }\n  }, {\n    key: 'register',\n    value: function register(path, target) {\n      var _this = this;\n\n      var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      if (typeof path !== 'string') {\n        var name = path.attrName || path.blotName;\n        if (typeof name === 'string') {\n          // register(Blot | Attributor, overwrite)\n          this.register('formats/' + name, path, target);\n        } else {\n          Object.keys(path).forEach(function (key) {\n            _this.register(key, path[key], target);\n          });\n        }\n      } else {\n        if (this.imports[path] != null && !overwrite) {\n          debug.warn('Overwriting ' + path + ' with', target);\n        }\n        this.imports[path] = target;\n        if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n          _parchment2.default.register(target);\n        } else if (path.startsWith('modules') && typeof target.register === 'function') {\n          target.register();\n        }\n      }\n    }\n  }]);\n\n  function Quill(container) {\n    var _this2 = this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Quill);\n\n    this.options = expandConfig(container, options);\n    this.container = this.options.container;\n    if (this.container == null) {\n      return debug.error('Invalid Quill container', container);\n    }\n    if (this.options.debug) {\n      Quill.debug(this.options.debug);\n    }\n    var html = this.container.innerHTML.trim();\n    this.container.classList.add('ql-container');\n    this.container.innerHTML = '';\n    this.container.__quill = this;\n    this.root = this.addContainer('ql-editor');\n    this.root.classList.add('ql-blank');\n    this.root.setAttribute('data-gramm', false);\n    this.scrollingContainer = this.options.scrollingContainer || this.root;\n    this.emitter = new _emitter4.default();\n    this.scroll = _parchment2.default.create(this.root, {\n      emitter: this.emitter,\n      whitelist: this.options.formats\n    });\n    this.editor = new _editor2.default(this.scroll);\n    this.selection = new _selection2.default(this.scroll, this.emitter);\n    this.theme = new this.options.theme(this, this.options);\n    this.keyboard = this.theme.addModule('keyboard');\n    this.clipboard = this.theme.addModule('clipboard');\n    this.history = this.theme.addModule('history');\n    this.theme.init();\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n      if (type === _emitter4.default.events.TEXT_CHANGE) {\n        _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n      var range = _this2.selection.lastRange;\n      var index = range && range.length === 0 ? range.index : undefined;\n      modify.call(_this2, function () {\n        return _this2.editor.update(null, mutations, index);\n      }, source);\n    });\n    var contents = this.clipboard.convert('<div class=\\'ql-editor\\' style=\"white-space: normal;\">' + html + '<p><br></p></div>');\n    this.setContents(contents);\n    this.history.clear();\n    if (this.options.placeholder) {\n      this.root.setAttribute('data-placeholder', this.options.placeholder);\n    }\n    if (this.options.readOnly) {\n      this.disable();\n    }\n  }\n\n  _createClass(Quill, [{\n    key: 'addContainer',\n    value: function addContainer(container) {\n      var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      if (typeof container === 'string') {\n        var className = container;\n        container = document.createElement('div');\n        container.classList.add(className);\n      }\n      this.container.insertBefore(container, refNode);\n      return container;\n    }\n  }, {\n    key: 'blur',\n    value: function blur() {\n      this.selection.setRange(null);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length, source) {\n      var _this3 = this;\n\n      var _overload = overload(index, length, source);\n\n      var _overload2 = _slicedToArray(_overload, 4);\n\n      index = _overload2[0];\n      length = _overload2[1];\n      source = _overload2[3];\n\n      return modify.call(this, function () {\n        return _this3.editor.deleteText(index, length);\n      }, source, index, -1 * length);\n    }\n  }, {\n    key: 'disable',\n    value: function disable() {\n      this.enable(false);\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.scroll.enable(enabled);\n      this.container.classList.toggle('ql-disabled', !enabled);\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      var scrollTop = this.scrollingContainer.scrollTop;\n      this.selection.focus();\n      this.scrollingContainer.scrollTop = scrollTop;\n      this.scrollIntoView();\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var _this4 = this;\n\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        var range = _this4.getSelection(true);\n        var change = new _quillDelta2.default();\n        if (range == null) {\n          return change;\n        } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n          change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n        } else if (range.length === 0) {\n          _this4.selection.format(name, value);\n          return change;\n        } else {\n          change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n        }\n        _this4.setSelection(range, _emitter4.default.sources.SILENT);\n        return change;\n      }, source);\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length, name, value, source) {\n      var _this5 = this;\n\n      var formats = void 0;\n\n      var _overload3 = overload(index, length, name, value, source);\n\n      var _overload4 = _slicedToArray(_overload3, 4);\n\n      index = _overload4[0];\n      length = _overload4[1];\n      formats = _overload4[2];\n      source = _overload4[3];\n\n      return modify.call(this, function () {\n        return _this5.editor.formatLine(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length, name, value, source) {\n      var _this6 = this;\n\n      var formats = void 0;\n\n      var _overload5 = overload(index, length, name, value, source);\n\n      var _overload6 = _slicedToArray(_overload5, 4);\n\n      index = _overload6[0];\n      length = _overload6[1];\n      formats = _overload6[2];\n      source = _overload6[3];\n\n      return modify.call(this, function () {\n        return _this6.editor.formatText(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var bounds = void 0;\n      if (typeof index === 'number') {\n        bounds = this.selection.getBounds(index, length);\n      } else {\n        bounds = this.selection.getBounds(index.index, index.length);\n      }\n      var containerBounds = this.container.getBoundingClientRect();\n      return {\n        bottom: bounds.bottom - containerBounds.top,\n        height: bounds.height,\n        left: bounds.left - containerBounds.left,\n        right: bounds.right - containerBounds.left,\n        top: bounds.top - containerBounds.top,\n        width: bounds.width\n      };\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload7 = overload(index, length);\n\n      var _overload8 = _slicedToArray(_overload7, 2);\n\n      index = _overload8[0];\n      length = _overload8[1];\n\n      return this.editor.getContents(index, length);\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (typeof index === 'number') {\n        return this.editor.getFormat(index, length);\n      } else {\n        return this.editor.getFormat(index.index, index.length);\n      }\n    }\n  }, {\n    key: 'getIndex',\n    value: function getIndex(blot) {\n      return blot.offset(this.scroll);\n    }\n  }, {\n    key: 'getLength',\n    value: function getLength() {\n      return this.scroll.length();\n    }\n  }, {\n    key: 'getLeaf',\n    value: function getLeaf(index) {\n      return this.scroll.leaf(index);\n    }\n  }, {\n    key: 'getLine',\n    value: function getLine(index) {\n      return this.scroll.line(index);\n    }\n  }, {\n    key: 'getLines',\n    value: function getLines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      if (typeof index !== 'number') {\n        return this.scroll.lines(index.index, index.length);\n      } else {\n        return this.scroll.lines(index, length);\n      }\n    }\n  }, {\n    key: 'getModule',\n    value: function getModule(name) {\n      return this.theme.modules[name];\n    }\n  }, {\n    key: 'getSelection',\n    value: function getSelection() {\n      var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (focus) this.focus();\n      this.update(); // Make sure we access getRange with editor in consistent state\n      return this.selection.getRange()[0];\n    }\n  }, {\n    key: 'getText',\n    value: function getText() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload9 = overload(index, length);\n\n      var _overload10 = _slicedToArray(_overload9, 2);\n\n      index = _overload10[0];\n      length = _overload10[1];\n\n      return this.editor.getText(index, length);\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return this.selection.hasFocus();\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      var _this7 = this;\n\n      var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n      return modify.call(this, function () {\n        return _this7.editor.insertEmbed(index, embed, value);\n      }, source, index);\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text, name, value, source) {\n      var _this8 = this;\n\n      var formats = void 0;\n\n      var _overload11 = overload(index, 0, name, value, source);\n\n      var _overload12 = _slicedToArray(_overload11, 4);\n\n      index = _overload12[0];\n      formats = _overload12[2];\n      source = _overload12[3];\n\n      return modify.call(this, function () {\n        return _this8.editor.insertText(index, text, formats);\n      }, source, index, text.length);\n    }\n  }, {\n    key: 'isEnabled',\n    value: function isEnabled() {\n      return !this.container.classList.contains('ql-disabled');\n    }\n  }, {\n    key: 'off',\n    value: function off() {\n      return this.emitter.off.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'on',\n    value: function on() {\n      return this.emitter.on.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'once',\n    value: function once() {\n      return this.emitter.once.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'pasteHTML',\n    value: function pasteHTML(index, html, source) {\n      this.clipboard.dangerouslyPasteHTML(index, html, source);\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length, source) {\n      var _this9 = this;\n\n      var _overload13 = overload(index, length, source);\n\n      var _overload14 = _slicedToArray(_overload13, 4);\n\n      index = _overload14[0];\n      length = _overload14[1];\n      source = _overload14[3];\n\n      return modify.call(this, function () {\n        return _this9.editor.removeFormat(index, length);\n      }, source, index);\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView() {\n      this.selection.scrollIntoView(this.scrollingContainer);\n    }\n  }, {\n    key: 'setContents',\n    value: function setContents(delta) {\n      var _this10 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        var length = _this10.getLength();\n        var deleted = _this10.editor.deleteText(0, length);\n        var applied = _this10.editor.applyDelta(delta);\n        var lastOp = applied.ops[applied.ops.length - 1];\n        if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n          _this10.editor.deleteText(_this10.getLength() - 1, 1);\n          applied.delete(1);\n        }\n        var ret = deleted.compose(applied);\n        return ret;\n      }, source);\n    }\n  }, {\n    key: 'setSelection',\n    value: function setSelection(index, length, source) {\n      if (index == null) {\n        this.selection.setRange(null, length || Quill.sources.API);\n      } else {\n        var _overload15 = overload(index, length, source);\n\n        var _overload16 = _slicedToArray(_overload15, 4);\n\n        index = _overload16[0];\n        length = _overload16[1];\n        source = _overload16[3];\n\n        this.selection.setRange(new _selection.Range(index, length), source);\n        if (source !== _emitter4.default.sources.SILENT) {\n          this.selection.scrollIntoView(this.scrollingContainer);\n        }\n      }\n    }\n  }, {\n    key: 'setText',\n    value: function setText(text) {\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      var delta = new _quillDelta2.default().insert(text);\n      return this.setContents(delta, source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n      this.selection.update(source);\n      return change;\n    }\n  }, {\n    key: 'updateContents',\n    value: function updateContents(delta) {\n      var _this11 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        return _this11.editor.applyDelta(delta, source);\n      }, source, true);\n    }\n  }]);\n\n  return Quill;\n}();\n\nQuill.DEFAULTS = {\n  bounds: null,\n  formats: null,\n  modules: {},\n  placeholder: '',\n  readOnly: false,\n  scrollingContainer: null,\n  strict: true,\n  theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version =  false ? 'dev' : \"1.3.7\";\n\nQuill.imports = {\n  'delta': _quillDelta2.default,\n  'parchment': _parchment2.default,\n  'core/module': _module2.default,\n  'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n  userConfig = (0, _extend2.default)(true, {\n    container: container,\n    modules: {\n      clipboard: true,\n      keyboard: true,\n      history: true\n    }\n  }, userConfig);\n  if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n    userConfig.theme = _theme2.default;\n  } else {\n    userConfig.theme = Quill.import('themes/' + userConfig.theme);\n    if (userConfig.theme == null) {\n      throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n    }\n  }\n  var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n  [themeConfig, userConfig].forEach(function (config) {\n    config.modules = config.modules || {};\n    Object.keys(config.modules).forEach(function (module) {\n      if (config.modules[module] === true) {\n        config.modules[module] = {};\n      }\n    });\n  });\n  var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n  var moduleConfig = moduleNames.reduce(function (config, name) {\n    var moduleClass = Quill.import('modules/' + name);\n    if (moduleClass == null) {\n      debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n    } else {\n      config[name] = moduleClass.DEFAULTS || {};\n    }\n    return config;\n  }, {});\n  // Special case toolbar shorthand\n  if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n    userConfig.modules.toolbar = {\n      container: userConfig.modules.toolbar\n    };\n  }\n  userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n  ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n    if (typeof userConfig[key] === 'string') {\n      userConfig[key] = document.querySelector(userConfig[key]);\n    }\n  });\n  userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n    if (userConfig.modules[name]) {\n      config[name] = userConfig.modules[name];\n    }\n    return config;\n  }, {});\n  return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n  if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n    return new _quillDelta2.default();\n  }\n  var range = index == null ? null : this.getSelection();\n  var oldDelta = this.editor.delta;\n  var change = modifier();\n  if (range != null) {\n    if (index === true) index = range.index;\n    if (shift == null) {\n      range = shiftRange(range, change, source);\n    } else if (shift !== 0) {\n      range = shiftRange(range, index, shift, source);\n    }\n    this.setSelection(range, _emitter4.default.sources.SILENT);\n  }\n  if (change.length() > 0) {\n    var _emitter;\n\n    var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n    (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n    if (source !== _emitter4.default.sources.SILENT) {\n      var _emitter2;\n\n      (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n    }\n  }\n  return change;\n}\n\nfunction overload(index, length, name, value, source) {\n  var formats = {};\n  if (typeof index.index === 'number' && typeof index.length === 'number') {\n    // Allow for throwaway end (used by insertText/insertEmbed)\n    if (typeof length !== 'number') {\n      source = value, value = name, name = length, length = index.length, index = index.index;\n    } else {\n      length = index.length, index = index.index;\n    }\n  } else if (typeof length !== 'number') {\n    source = value, value = name, name = length, length = 0;\n  }\n  // Handle format being object, two format name/value strings or excluded\n  if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n    formats = name;\n    source = value;\n  } else if (typeof name === 'string') {\n    if (value != null) {\n      formats[name] = value;\n    } else {\n      source = name;\n    }\n  }\n  // Handle optional source\n  source = source || _emitter4.default.sources.API;\n  return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n  if (range == null) return null;\n  var start = void 0,\n      end = void 0;\n  if (index instanceof _quillDelta2.default) {\n    var _map = [range.index, range.index + range.length].map(function (pos) {\n      return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n    });\n\n    var _map2 = _slicedToArray(_map, 2);\n\n    start = _map2[0];\n    end = _map2[1];\n  } else {\n    var _map3 = [range.index, range.index + range.length].map(function (pos) {\n      if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n      if (length >= 0) {\n        return pos + length;\n      } else {\n        return Math.max(index, pos + length);\n      }\n    });\n\n    var _map4 = _slicedToArray(_map3, 2);\n\n    start = _map4[0];\n    end = _map4[1];\n  }\n  return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n  _inherits(Inline, _Parchment$Inline);\n\n  function Inline() {\n    _classCallCheck(this, Inline);\n\n    return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n  }\n\n  _createClass(Inline, [{\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n        var blot = this.isolate(index, length);\n        if (value) {\n          blot.wrap(name, value);\n        }\n      } else {\n        _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n      if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n        var parent = this.parent.isolate(this.offset(), this.length());\n        this.moveChildren(parent);\n        parent.wrap(this);\n      }\n    }\n  }], [{\n    key: 'compare',\n    value: function compare(self, other) {\n      var selfIndex = Inline.order.indexOf(self);\n      var otherIndex = Inline.order.indexOf(other);\n      if (selfIndex >= 0 || otherIndex >= 0) {\n        return selfIndex - otherIndex;\n      } else if (self === other) {\n        return 0;\n      } else if (self < other) {\n        return -1;\n      } else {\n        return 1;\n      }\n    }\n  }]);\n\n  return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n  _inherits(TextBlot, _Parchment$Text);\n\n  function TextBlot() {\n    _classCallCheck(this, TextBlot);\n\n    return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n  }\n\n  return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n  document.addEventListener(eventName, function () {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n      // TODO use WeakMap\n      if (node.__quill && node.__quill.emitter) {\n        var _node$__quill$emitter;\n\n        (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n      }\n    });\n  });\n});\n\nvar Emitter = function (_EventEmitter) {\n  _inherits(Emitter, _EventEmitter);\n\n  function Emitter() {\n    _classCallCheck(this, Emitter);\n\n    var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n    _this.listeners = {};\n    _this.on('error', debug.error);\n    return _this;\n  }\n\n  _createClass(Emitter, [{\n    key: 'emit',\n    value: function emit() {\n      debug.log.apply(debug, arguments);\n      _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n    }\n  }, {\n    key: 'handleDOM',\n    value: function handleDOM(event) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      (this.listeners[event.type] || []).forEach(function (_ref) {\n        var node = _ref.node,\n            handler = _ref.handler;\n\n        if (event.target === node || node.contains(event.target)) {\n          handler.apply(undefined, [event].concat(args));\n        }\n      });\n    }\n  }, {\n    key: 'listenDOM',\n    value: function listenDOM(eventName, node, handler) {\n      if (!this.listeners[eventName]) {\n        this.listeners[eventName] = [];\n      }\n      this.listeners[eventName].push({ node: node, handler: handler });\n    }\n  }]);\n\n  return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n  EDITOR_CHANGE: 'editor-change',\n  SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n  SCROLL_OPTIMIZE: 'scroll-optimize',\n  SCROLL_UPDATE: 'scroll-update',\n  SELECTION_CHANGE: 'selection-change',\n  TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n  API: 'api',\n  SILENT: 'silent',\n  USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  _classCallCheck(this, Module);\n\n  this.quill = quill;\n  this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n  if (levels.indexOf(method) <= levels.indexOf(level)) {\n    var _console;\n\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n  }\n}\n\nfunction namespace(ns) {\n  return levels.reduce(function (logger, method) {\n    logger[method] = debug.bind(console, method, ns);\n    return logger;\n  }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n  level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n    function Attributor(attrName, keyName, options) {\n        if (options === void 0) { options = {}; }\n        this.attrName = attrName;\n        this.keyName = keyName;\n        var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n        if (options.scope != null) {\n            // Ignore type bits, force attribute bit\n            this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n        }\n        else {\n            this.scope = Registry.Scope.ATTRIBUTE;\n        }\n        if (options.whitelist != null)\n            this.whitelist = options.whitelist;\n    }\n    Attributor.keys = function (node) {\n        return [].map.call(node.attributes, function (item) {\n            return item.name;\n        });\n    };\n    Attributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        node.setAttribute(this.keyName, value);\n        return true;\n    };\n    Attributor.prototype.canAdd = function (node, value) {\n        var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n        if (match == null)\n            return false;\n        if (this.whitelist == null)\n            return true;\n        if (typeof value === 'string') {\n            return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n        }\n        else {\n            return this.whitelist.indexOf(value) > -1;\n        }\n    };\n    Attributor.prototype.remove = function (node) {\n        node.removeAttribute(this.keyName);\n    };\n    Attributor.prototype.value = function (node) {\n        var value = node.getAttribute(this.keyName);\n        if (this.canAdd(node, value) && value) {\n            return value;\n        }\n        return '';\n    };\n    return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n  _inherits(Code, _Inline);\n\n  function Code() {\n    _classCallCheck(this, Code);\n\n    return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n  }\n\n  return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n  _inherits(CodeBlock, _Block);\n\n  function CodeBlock() {\n    _classCallCheck(this, CodeBlock);\n\n    return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n  }\n\n  _createClass(CodeBlock, [{\n    key: 'delta',\n    value: function delta() {\n      var _this3 = this;\n\n      var text = this.domNode.textContent;\n      if (text.endsWith('\\n')) {\n        // Should always be true\n        text = text.slice(0, -1);\n      }\n      return text.split('\\n').reduce(function (delta, frag) {\n        return delta.insert(frag).insert('\\n', _this3.formats());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (name === this.statics.blotName && value) return;\n\n      var _descendant = this.descendant(_text2.default, this.length() - 1),\n          _descendant2 = _slicedToArray(_descendant, 1),\n          text = _descendant2[0];\n\n      if (text != null) {\n        text.deleteAt(text.length() - 1, 1);\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length === 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n        return;\n      }\n      var nextNewline = this.newlineIndex(index);\n      if (nextNewline < 0 || nextNewline >= index + length) return;\n      var prevNewline = this.newlineIndex(index, true) + 1;\n      var isolateLength = nextNewline - prevNewline + 1;\n      var blot = this.isolate(prevNewline, isolateLength);\n      var next = blot.next;\n      blot.format(name, value);\n      if (next instanceof CodeBlock) {\n        next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n      }\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return;\n\n      var _descendant3 = this.descendant(_text2.default, index),\n          _descendant4 = _slicedToArray(_descendant3, 2),\n          text = _descendant4[0],\n          offset = _descendant4[1];\n\n      text.insertAt(offset, value);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      var length = this.domNode.textContent.length;\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        return length + 1;\n      }\n      return length;\n    }\n  }, {\n    key: 'newlineIndex',\n    value: function newlineIndex(searchIndex) {\n      var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!reverse) {\n        var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n        return offset > -1 ? searchIndex + offset : -1;\n      } else {\n        return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        this.appendChild(_parchment2.default.create('text', '\\n'));\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n      var next = this.next;\n      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n        next.optimize(context);\n        next.moveChildren(this);\n        next.remove();\n      }\n    }\n  }, {\n    key: 'replace',\n    value: function replace(target) {\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n      [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n        var blot = _parchment2.default.find(node);\n        if (blot == null) {\n          node.parentNode.removeChild(node);\n        } else if (blot instanceof _parchment2.default.Embed) {\n          blot.remove();\n        } else {\n          blot.unwrap();\n        }\n      });\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n      domNode.setAttribute('spellcheck', false);\n      return domNode;\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = '  ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n  function Editor(scroll) {\n    _classCallCheck(this, Editor);\n\n    this.scroll = scroll;\n    this.delta = this.getDelta();\n  }\n\n  _createClass(Editor, [{\n    key: 'applyDelta',\n    value: function applyDelta(delta) {\n      var _this = this;\n\n      var consumeNextNewline = false;\n      this.scroll.update();\n      var scrollLength = this.scroll.length();\n      this.scroll.batchStart();\n      delta = normalizeDelta(delta);\n      delta.reduce(function (index, op) {\n        var length = op.retain || op.delete || op.insert.length || 1;\n        var attributes = op.attributes || {};\n        if (op.insert != null) {\n          if (typeof op.insert === 'string') {\n            var text = op.insert;\n            if (text.endsWith('\\n') && consumeNextNewline) {\n              consumeNextNewline = false;\n              text = text.slice(0, -1);\n            }\n            if (index >= scrollLength && !text.endsWith('\\n')) {\n              consumeNextNewline = true;\n            }\n            _this.scroll.insertAt(index, text);\n\n            var _scroll$line = _this.scroll.line(index),\n                _scroll$line2 = _slicedToArray(_scroll$line, 2),\n                line = _scroll$line2[0],\n                offset = _scroll$line2[1];\n\n            var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n            if (line instanceof _block2.default) {\n              var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n                  _line$descendant2 = _slicedToArray(_line$descendant, 1),\n                  leaf = _line$descendant2[0];\n\n              formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n            }\n            attributes = _op2.default.attributes.diff(formats, attributes) || {};\n          } else if (_typeof(op.insert) === 'object') {\n            var key = Object.keys(op.insert)[0]; // There should only be one key\n            if (key == null) return index;\n            _this.scroll.insertAt(index, key, op.insert[key]);\n          }\n          scrollLength += length;\n        }\n        Object.keys(attributes).forEach(function (name) {\n          _this.scroll.formatAt(index, length, name, attributes[name]);\n        });\n        return index + length;\n      }, 0);\n      delta.reduce(function (index, op) {\n        if (typeof op.delete === 'number') {\n          _this.scroll.deleteAt(index, op.delete);\n          return index;\n        }\n        return index + (op.retain || op.insert.length || 1);\n      }, 0);\n      this.scroll.batchEnd();\n      return this.update(delta);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length) {\n      this.scroll.deleteAt(index, length);\n      return this.update(new _quillDelta2.default().retain(index).delete(length));\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length) {\n      var _this2 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      this.scroll.update();\n      Object.keys(formats).forEach(function (format) {\n        if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n        var lines = _this2.scroll.lines(index, Math.max(length, 1));\n        var lengthRemaining = length;\n        lines.forEach(function (line) {\n          var lineLength = line.length();\n          if (!(line instanceof _code2.default)) {\n            line.format(format, formats[format]);\n          } else {\n            var codeIndex = index - line.offset(_this2.scroll);\n            var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n            line.formatAt(codeIndex, codeLength, format, formats[format]);\n          }\n          lengthRemaining -= lineLength;\n        });\n      });\n      this.scroll.optimize();\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length) {\n      var _this3 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      Object.keys(formats).forEach(function (format) {\n        _this3.scroll.formatAt(index, length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents(index, length) {\n      return this.delta.slice(index, index + length);\n    }\n  }, {\n    key: 'getDelta',\n    value: function getDelta() {\n      return this.scroll.lines().reduce(function (delta, line) {\n        return delta.concat(line.delta());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var lines = [],\n          leaves = [];\n      if (length === 0) {\n        this.scroll.path(index).forEach(function (path) {\n          var _path = _slicedToArray(path, 1),\n              blot = _path[0];\n\n          if (blot instanceof _block2.default) {\n            lines.push(blot);\n          } else if (blot instanceof _parchment2.default.Leaf) {\n            leaves.push(blot);\n          }\n        });\n      } else {\n        lines = this.scroll.lines(index, length);\n        leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n      }\n      var formatsArr = [lines, leaves].map(function (blots) {\n        if (blots.length === 0) return {};\n        var formats = (0, _block.bubbleFormats)(blots.shift());\n        while (Object.keys(formats).length > 0) {\n          var blot = blots.shift();\n          if (blot == null) return formats;\n          formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n        }\n        return formats;\n      });\n      return _extend2.default.apply(_extend2.default, formatsArr);\n    }\n  }, {\n    key: 'getText',\n    value: function getText(index, length) {\n      return this.getContents(index, length).filter(function (op) {\n        return typeof op.insert === 'string';\n      }).map(function (op) {\n        return op.insert;\n      }).join('');\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      this.scroll.insertAt(index, embed, value);\n      return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text) {\n      var _this4 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      this.scroll.insertAt(index, text);\n      Object.keys(formats).forEach(function (format) {\n        _this4.scroll.formatAt(index, text.length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'isBlank',\n    value: function isBlank() {\n      if (this.scroll.children.length == 0) return true;\n      if (this.scroll.children.length > 1) return false;\n      var block = this.scroll.children.head;\n      if (block.statics.blotName !== _block2.default.blotName) return false;\n      if (block.children.length > 1) return false;\n      return block.children.head instanceof _break2.default;\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length) {\n      var text = this.getText(index, length);\n\n      var _scroll$line3 = this.scroll.line(index + length),\n          _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n          line = _scroll$line4[0],\n          offset = _scroll$line4[1];\n\n      var suffixLength = 0,\n          suffix = new _quillDelta2.default();\n      if (line != null) {\n        if (!(line instanceof _code2.default)) {\n          suffixLength = line.length() - offset;\n        } else {\n          suffixLength = line.newlineIndex(offset) - offset + 1;\n        }\n        suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n      }\n      var contents = this.getContents(index, length + suffixLength);\n      var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n      var delta = new _quillDelta2.default().retain(index).concat(diff);\n      return this.applyDelta(delta);\n    }\n  }, {\n    key: 'update',\n    value: function update(change) {\n      var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n      var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n      var oldDelta = this.delta;\n      if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n        // Optimization for character changes\n        var textBlot = _parchment2.default.find(mutations[0].target);\n        var formats = (0, _block.bubbleFormats)(textBlot);\n        var index = textBlot.offset(this.scroll);\n        var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n        var oldText = new _quillDelta2.default().insert(oldValue);\n        var newText = new _quillDelta2.default().insert(textBlot.value());\n        var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n        change = diffDelta.reduce(function (delta, op) {\n          if (op.insert) {\n            return delta.insert(op.insert, formats);\n          } else {\n            return delta.push(op);\n          }\n        }, new _quillDelta2.default());\n        this.delta = oldDelta.compose(change);\n      } else {\n        this.delta = this.getDelta();\n        if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n          change = oldDelta.diff(this.delta, cursorIndex);\n        }\n      }\n      return change;\n    }\n  }]);\n\n  return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n  return Object.keys(combined).reduce(function (merged, name) {\n    if (formats[name] == null) return merged;\n    if (combined[name] === formats[name]) {\n      merged[name] = combined[name];\n    } else if (Array.isArray(combined[name])) {\n      if (combined[name].indexOf(formats[name]) < 0) {\n        merged[name] = combined[name].concat([formats[name]]);\n      }\n    } else {\n      merged[name] = [combined[name], formats[name]];\n    }\n    return merged;\n  }, {});\n}\n\nfunction normalizeDelta(delta) {\n  return delta.reduce(function (delta, op) {\n    if (op.insert === 1) {\n      var attributes = (0, _clone2.default)(op.attributes);\n      delete attributes['image'];\n      return delta.insert({ image: op.attributes.image }, attributes);\n    }\n    if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n      op = (0, _clone2.default)(op);\n      if (op.attributes.list) {\n        op.attributes.list = 'ordered';\n      } else {\n        op.attributes.list = 'bullet';\n        delete op.attributes.bullet;\n      }\n    }\n    if (typeof op.insert === 'string') {\n      var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      return delta.insert(text, op.attributes);\n    }\n    return delta.push(op);\n  }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n  var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n  _classCallCheck(this, Range);\n\n  this.index = index;\n  this.length = length;\n};\n\nvar Selection = function () {\n  function Selection(scroll, emitter) {\n    var _this = this;\n\n    _classCallCheck(this, Selection);\n\n    this.emitter = emitter;\n    this.scroll = scroll;\n    this.composing = false;\n    this.mouseDown = false;\n    this.root = this.scroll.domNode;\n    this.cursor = _parchment2.default.create('cursor', this);\n    // savedRange is last non-null range\n    this.lastRange = this.savedRange = new Range(0, 0);\n    this.handleComposition();\n    this.handleDragging();\n    this.emitter.listenDOM('selectionchange', document, function () {\n      if (!_this.mouseDown) {\n        setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n      if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n        _this.update(_emitter4.default.sources.SILENT);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n      if (!_this.hasFocus()) return;\n      var native = _this.getNativeRange();\n      if (native == null) return;\n      if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n      // TODO unclear if this has negative side effects\n      _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n        try {\n          _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n        } catch (ignored) {}\n      });\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n      if (context.range) {\n        var _context$range = context.range,\n            startNode = _context$range.startNode,\n            startOffset = _context$range.startOffset,\n            endNode = _context$range.endNode,\n            endOffset = _context$range.endOffset;\n\n        _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n      }\n    });\n    this.update(_emitter4.default.sources.SILENT);\n  }\n\n  _createClass(Selection, [{\n    key: 'handleComposition',\n    value: function handleComposition() {\n      var _this2 = this;\n\n      this.root.addEventListener('compositionstart', function () {\n        _this2.composing = true;\n      });\n      this.root.addEventListener('compositionend', function () {\n        _this2.composing = false;\n        if (_this2.cursor.parent) {\n          var range = _this2.cursor.restore();\n          if (!range) return;\n          setTimeout(function () {\n            _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n          }, 1);\n        }\n      });\n    }\n  }, {\n    key: 'handleDragging',\n    value: function handleDragging() {\n      var _this3 = this;\n\n      this.emitter.listenDOM('mousedown', document.body, function () {\n        _this3.mouseDown = true;\n      });\n      this.emitter.listenDOM('mouseup', document.body, function () {\n        _this3.mouseDown = false;\n        _this3.update(_emitter4.default.sources.USER);\n      });\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      if (this.hasFocus()) return;\n      this.root.focus();\n      this.setRange(this.savedRange);\n    }\n  }, {\n    key: 'format',\n    value: function format(_format, value) {\n      if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n      this.scroll.update();\n      var nativeRange = this.getNativeRange();\n      if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n      if (nativeRange.start.node !== this.cursor.textNode) {\n        var blot = _parchment2.default.find(nativeRange.start.node, false);\n        if (blot == null) return;\n        // TODO Give blot ability to not split\n        if (blot instanceof _parchment2.default.Leaf) {\n          var after = blot.split(nativeRange.start.offset);\n          blot.parent.insertBefore(this.cursor, after);\n        } else {\n          blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n        }\n        this.cursor.attach();\n      }\n      this.cursor.format(_format, value);\n      this.scroll.optimize();\n      this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n      this.update();\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var scrollLength = this.scroll.length();\n      index = Math.min(index, scrollLength - 1);\n      length = Math.min(index + length, scrollLength - 1) - index;\n      var node = void 0,\n          _scroll$leaf = this.scroll.leaf(index),\n          _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n          leaf = _scroll$leaf2[0],\n          offset = _scroll$leaf2[1];\n      if (leaf == null) return null;\n\n      var _leaf$position = leaf.position(offset, true);\n\n      var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n      node = _leaf$position2[0];\n      offset = _leaf$position2[1];\n\n      var range = document.createRange();\n      if (length > 0) {\n        range.setStart(node, offset);\n\n        var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n        var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n        leaf = _scroll$leaf4[0];\n        offset = _scroll$leaf4[1];\n\n        if (leaf == null) return null;\n\n        var _leaf$position3 = leaf.position(offset, true);\n\n        var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n        node = _leaf$position4[0];\n        offset = _leaf$position4[1];\n\n        range.setEnd(node, offset);\n        return range.getBoundingClientRect();\n      } else {\n        var side = 'left';\n        var rect = void 0;\n        if (node instanceof Text) {\n          if (offset < node.data.length) {\n            range.setStart(node, offset);\n            range.setEnd(node, offset + 1);\n          } else {\n            range.setStart(node, offset - 1);\n            range.setEnd(node, offset);\n            side = 'right';\n          }\n          rect = range.getBoundingClientRect();\n        } else {\n          rect = leaf.domNode.getBoundingClientRect();\n          if (offset > 0) side = 'right';\n        }\n        return {\n          bottom: rect.top + rect.height,\n          height: rect.height,\n          left: rect[side],\n          right: rect[side],\n          top: rect.top,\n          width: 0\n        };\n      }\n    }\n  }, {\n    key: 'getNativeRange',\n    value: function getNativeRange() {\n      var selection = document.getSelection();\n      if (selection == null || selection.rangeCount <= 0) return null;\n      var nativeRange = selection.getRangeAt(0);\n      if (nativeRange == null) return null;\n      var range = this.normalizeNative(nativeRange);\n      debug.info('getNativeRange', range);\n      return range;\n    }\n  }, {\n    key: 'getRange',\n    value: function getRange() {\n      var normalized = this.getNativeRange();\n      if (normalized == null) return [null, null];\n      var range = this.normalizedToRange(normalized);\n      return [range, normalized];\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return document.activeElement === this.root;\n    }\n  }, {\n    key: 'normalizedToRange',\n    value: function normalizedToRange(range) {\n      var _this4 = this;\n\n      var positions = [[range.start.node, range.start.offset]];\n      if (!range.native.collapsed) {\n        positions.push([range.end.node, range.end.offset]);\n      }\n      var indexes = positions.map(function (position) {\n        var _position = _slicedToArray(position, 2),\n            node = _position[0],\n            offset = _position[1];\n\n        var blot = _parchment2.default.find(node, true);\n        var index = blot.offset(_this4.scroll);\n        if (offset === 0) {\n          return index;\n        } else if (blot instanceof _parchment2.default.Container) {\n          return index + blot.length();\n        } else {\n          return index + blot.index(node, offset);\n        }\n      });\n      var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n      var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n      return new Range(start, end - start);\n    }\n  }, {\n    key: 'normalizeNative',\n    value: function normalizeNative(nativeRange) {\n      if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n        return null;\n      }\n      var range = {\n        start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n        end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n        native: nativeRange\n      };\n      [range.start, range.end].forEach(function (position) {\n        var node = position.node,\n            offset = position.offset;\n        while (!(node instanceof Text) && node.childNodes.length > 0) {\n          if (node.childNodes.length > offset) {\n            node = node.childNodes[offset];\n            offset = 0;\n          } else if (node.childNodes.length === offset) {\n            node = node.lastChild;\n            offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n          } else {\n            break;\n          }\n        }\n        position.node = node, position.offset = offset;\n      });\n      return range;\n    }\n  }, {\n    key: 'rangeToNative',\n    value: function rangeToNative(range) {\n      var _this5 = this;\n\n      var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n      var args = [];\n      var scrollLength = this.scroll.length();\n      indexes.forEach(function (index, i) {\n        index = Math.min(scrollLength - 1, index);\n        var node = void 0,\n            _scroll$leaf5 = _this5.scroll.leaf(index),\n            _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n            leaf = _scroll$leaf6[0],\n            offset = _scroll$leaf6[1];\n        var _leaf$position5 = leaf.position(offset, i !== 0);\n\n        var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n        node = _leaf$position6[0];\n        offset = _leaf$position6[1];\n\n        args.push(node, offset);\n      });\n      if (args.length < 2) {\n        args = args.concat(args);\n      }\n      return args;\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView(scrollingContainer) {\n      var range = this.lastRange;\n      if (range == null) return;\n      var bounds = this.getBounds(range.index, range.length);\n      if (bounds == null) return;\n      var limit = this.scroll.length() - 1;\n\n      var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n          _scroll$line2 = _slicedToArray(_scroll$line, 1),\n          first = _scroll$line2[0];\n\n      var last = first;\n      if (range.length > 0) {\n        var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n        var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n        last = _scroll$line4[0];\n      }\n      if (first == null || last == null) return;\n      var scrollBounds = scrollingContainer.getBoundingClientRect();\n      if (bounds.top < scrollBounds.top) {\n        scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n      } else if (bounds.bottom > scrollBounds.bottom) {\n        scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n      }\n    }\n  }, {\n    key: 'setNativeRange',\n    value: function setNativeRange(startNode, startOffset) {\n      var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n      var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n      var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n      debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n      if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n        return;\n      }\n      var selection = document.getSelection();\n      if (selection == null) return;\n      if (startNode != null) {\n        if (!this.hasFocus()) this.root.focus();\n        var native = (this.getNativeRange() || {}).native;\n        if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n          if (startNode.tagName == \"BR\") {\n            startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n            startNode = startNode.parentNode;\n          }\n          if (endNode.tagName == \"BR\") {\n            endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n            endNode = endNode.parentNode;\n          }\n          var range = document.createRange();\n          range.setStart(startNode, startOffset);\n          range.setEnd(endNode, endOffset);\n          selection.removeAllRanges();\n          selection.addRange(range);\n        }\n      } else {\n        selection.removeAllRanges();\n        this.root.blur();\n        document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n      }\n    }\n  }, {\n    key: 'setRange',\n    value: function setRange(range) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      if (typeof force === 'string') {\n        source = force;\n        force = false;\n      }\n      debug.info('setRange', range);\n      if (range != null) {\n        var args = this.rangeToNative(range);\n        this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n      } else {\n        this.setNativeRange(null);\n      }\n      this.update(source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var oldRange = this.lastRange;\n\n      var _getRange = this.getRange(),\n          _getRange2 = _slicedToArray(_getRange, 2),\n          lastRange = _getRange2[0],\n          nativeRange = _getRange2[1];\n\n      this.lastRange = lastRange;\n      if (this.lastRange != null) {\n        this.savedRange = this.lastRange;\n      }\n      if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n        var _emitter;\n\n        if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n          this.cursor.restore();\n        }\n        var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n        (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n        if (source !== _emitter4.default.sources.SILENT) {\n          var _emitter2;\n\n          (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n        }\n      }\n    }\n  }]);\n\n  return Selection;\n}();\n\nfunction contains(parent, descendant) {\n  try {\n    // Firefox inserts inaccessible nodes around video elements\n    descendant.parentNode;\n  } catch (e) {\n    return false;\n  }\n  // IE11 has bug with Text nodes\n  // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n  if (descendant instanceof Text) {\n    descendant = descendant.parentNode;\n  }\n  return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n  _inherits(Break, _Parchment$Embed);\n\n  function Break() {\n    _classCallCheck(this, Break);\n\n    return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n  }\n\n  _createClass(Break, [{\n    key: 'insertInto',\n    value: function insertInto(parent, ref) {\n      if (parent.children.length === 0) {\n        _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n      } else {\n        this.remove();\n      }\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return 0;\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }], [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n    __extends(ContainerBlot, _super);\n    function ContainerBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.build();\n        return _this;\n    }\n    ContainerBlot.prototype.appendChild = function (other) {\n        this.insertBefore(other);\n    };\n    ContainerBlot.prototype.attach = function () {\n        _super.prototype.attach.call(this);\n        this.children.forEach(function (child) {\n            child.attach();\n        });\n    };\n    ContainerBlot.prototype.build = function () {\n        var _this = this;\n        this.children = new linked_list_1.default();\n        // Need to be reversed for if DOM nodes already in order\n        [].slice\n            .call(this.domNode.childNodes)\n            .reverse()\n            .forEach(function (node) {\n            try {\n                var child = makeBlot(node);\n                _this.insertBefore(child, _this.children.head || undefined);\n            }\n            catch (err) {\n                if (err instanceof Registry.ParchmentError)\n                    return;\n                else\n                    throw err;\n            }\n        });\n    };\n    ContainerBlot.prototype.deleteAt = function (index, length) {\n        if (index === 0 && length === this.length()) {\n            return this.remove();\n        }\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.deleteAt(offset, length);\n        });\n    };\n    ContainerBlot.prototype.descendant = function (criteria, index) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if ((criteria.blotName == null && criteria(child)) ||\n            (criteria.blotName != null && child instanceof criteria)) {\n            return [child, offset];\n        }\n        else if (child instanceof ContainerBlot) {\n            return child.descendant(criteria, offset);\n        }\n        else {\n            return [null, -1];\n        }\n    };\n    ContainerBlot.prototype.descendants = function (criteria, index, length) {\n        if (index === void 0) { index = 0; }\n        if (length === void 0) { length = Number.MAX_VALUE; }\n        var descendants = [];\n        var lengthLeft = length;\n        this.children.forEachAt(index, length, function (child, index, length) {\n            if ((criteria.blotName == null && criteria(child)) ||\n                (criteria.blotName != null && child instanceof criteria)) {\n                descendants.push(child);\n            }\n            if (child instanceof ContainerBlot) {\n                descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n            }\n            lengthLeft -= length;\n        });\n        return descendants;\n    };\n    ContainerBlot.prototype.detach = function () {\n        this.children.forEach(function (child) {\n            child.detach();\n        });\n        _super.prototype.detach.call(this);\n    };\n    ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.formatAt(offset, length, name, value);\n        });\n    };\n    ContainerBlot.prototype.insertAt = function (index, value, def) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if (child) {\n            child.insertAt(offset, value, def);\n        }\n        else {\n            var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n            this.appendChild(blot);\n        }\n    };\n    ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n        if (this.statics.allowedChildren != null &&\n            !this.statics.allowedChildren.some(function (child) {\n                return childBlot instanceof child;\n            })) {\n            throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n        }\n        childBlot.insertInto(this, refBlot);\n    };\n    ContainerBlot.prototype.length = function () {\n        return this.children.reduce(function (memo, child) {\n            return memo + child.length();\n        }, 0);\n    };\n    ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n        this.children.forEach(function (child) {\n            targetParent.insertBefore(child, refNode);\n        });\n    };\n    ContainerBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        if (this.children.length === 0) {\n            if (this.statics.defaultChild != null) {\n                var child = Registry.create(this.statics.defaultChild);\n                this.appendChild(child);\n                child.optimize(context);\n            }\n            else {\n                this.remove();\n            }\n        }\n    };\n    ContainerBlot.prototype.path = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n        var position = [[this, index]];\n        if (child instanceof ContainerBlot) {\n            return position.concat(child.path(offset, inclusive));\n        }\n        else if (child != null) {\n            position.push([child, offset]);\n        }\n        return position;\n    };\n    ContainerBlot.prototype.removeChild = function (child) {\n        this.children.remove(child);\n    };\n    ContainerBlot.prototype.replace = function (target) {\n        if (target instanceof ContainerBlot) {\n            target.moveChildren(this);\n        }\n        _super.prototype.replace.call(this, target);\n    };\n    ContainerBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = this.clone();\n        this.parent.insertBefore(after, this.next);\n        this.children.forEachAt(index, this.length(), function (child, offset, length) {\n            child = child.split(offset, force);\n            after.appendChild(child);\n        });\n        return after;\n    };\n    ContainerBlot.prototype.unwrap = function () {\n        this.moveChildren(this.parent, this.next);\n        this.remove();\n    };\n    ContainerBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        var addedNodes = [];\n        var removedNodes = [];\n        mutations.forEach(function (mutation) {\n            if (mutation.target === _this.domNode && mutation.type === 'childList') {\n                addedNodes.push.apply(addedNodes, mutation.addedNodes);\n                removedNodes.push.apply(removedNodes, mutation.removedNodes);\n            }\n        });\n        removedNodes.forEach(function (node) {\n            // Check node has actually been removed\n            // One exception is Chrome does not immediately remove IFRAMEs\n            // from DOM but MutationRecord is correct in its reported removal\n            if (node.parentNode != null &&\n                // @ts-ignore\n                node.tagName !== 'IFRAME' &&\n                document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n                return;\n            }\n            var blot = Registry.find(node);\n            if (blot == null)\n                return;\n            if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n                blot.detach();\n            }\n        });\n        addedNodes\n            .filter(function (node) {\n            return node.parentNode == _this.domNode;\n        })\n            .sort(function (a, b) {\n            if (a === b)\n                return 0;\n            if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n                return 1;\n            }\n            return -1;\n        })\n            .forEach(function (node) {\n            var refBlot = null;\n            if (node.nextSibling != null) {\n                refBlot = Registry.find(node.nextSibling);\n            }\n            var blot = makeBlot(node);\n            if (blot.next != refBlot || blot.next == null) {\n                if (blot.parent != null) {\n                    blot.parent.removeChild(_this);\n                }\n                _this.insertBefore(blot, refBlot || undefined);\n            }\n        });\n    };\n    return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n    var blot = Registry.find(node);\n    if (blot == null) {\n        try {\n            blot = Registry.create(node);\n        }\n        catch (e) {\n            blot = Registry.create(Registry.Scope.INLINE);\n            [].slice.call(node.childNodes).forEach(function (child) {\n                // @ts-ignore\n                blot.domNode.appendChild(child);\n            });\n            if (node.parentNode) {\n                node.parentNode.replaceChild(blot.domNode, node);\n            }\n            blot.attach();\n        }\n    }\n    return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n    __extends(FormatBlot, _super);\n    function FormatBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.attributes = new store_1.default(_this.domNode);\n        return _this;\n    }\n    FormatBlot.formats = function (domNode) {\n        if (typeof this.tagName === 'string') {\n            return true;\n        }\n        else if (Array.isArray(this.tagName)) {\n            return domNode.tagName.toLowerCase();\n        }\n        return undefined;\n    };\n    FormatBlot.prototype.format = function (name, value) {\n        var format = Registry.query(name);\n        if (format instanceof attributor_1.default) {\n            this.attributes.attribute(format, value);\n        }\n        else if (value) {\n            if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n                this.replaceWith(name, value);\n            }\n        }\n    };\n    FormatBlot.prototype.formats = function () {\n        var formats = this.attributes.values();\n        var format = this.statics.formats(this.domNode);\n        if (format != null) {\n            formats[this.statics.blotName] = format;\n        }\n        return formats;\n    };\n    FormatBlot.prototype.replaceWith = function (name, value) {\n        var replacement = _super.prototype.replaceWith.call(this, name, value);\n        this.attributes.copy(replacement);\n        return replacement;\n    };\n    FormatBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        _super.prototype.update.call(this, mutations, context);\n        if (mutations.some(function (mutation) {\n            return mutation.target === _this.domNode && mutation.type === 'attributes';\n        })) {\n            this.attributes.build();\n        }\n    };\n    FormatBlot.prototype.wrap = function (name, value) {\n        var wrapper = _super.prototype.wrap.call(this, name, value);\n        if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n            this.attributes.move(wrapper);\n        }\n        return wrapper;\n    };\n    return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n    __extends(LeafBlot, _super);\n    function LeafBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    LeafBlot.value = function (domNode) {\n        return true;\n    };\n    LeafBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node ||\n            this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n            return Math.min(offset, 1);\n        }\n        return -1;\n    };\n    LeafBlot.prototype.position = function (index, inclusive) {\n        var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n        if (index > 0)\n            offset += 1;\n        return [this.parent.domNode, offset];\n    };\n    LeafBlot.prototype.value = function () {\n        var _a;\n        return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n    };\n    LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n    return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n  attributes: {\n    compose: function (a, b, keepNull) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = extend(true, {}, b);\n      if (!keepNull) {\n        attributes = Object.keys(attributes).reduce(function (copy, key) {\n          if (attributes[key] != null) {\n            copy[key] = attributes[key];\n          }\n          return copy;\n        }, {});\n      }\n      for (var key in a) {\n        if (a[key] !== undefined && b[key] === undefined) {\n          attributes[key] = a[key];\n        }\n      }\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    diff: function(a, b) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n        if (!equal(a[key], b[key])) {\n          attributes[key] = b[key] === undefined ? null : b[key];\n        }\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    transform: function (a, b, priority) {\n      if (typeof a !== 'object') return b;\n      if (typeof b !== 'object') return undefined;\n      if (!priority) return b;  // b simply overwrites us without priority\n      var attributes = Object.keys(b).reduce(function (attributes, key) {\n        if (a[key] === undefined) attributes[key] = b[key];  // null is a valid value\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    }\n  },\n\n  iterator: function (ops) {\n    return new Iterator(ops);\n  },\n\n  length: function (op) {\n    if (typeof op['delete'] === 'number') {\n      return op['delete'];\n    } else if (typeof op.retain === 'number') {\n      return op.retain;\n    } else {\n      return typeof op.insert === 'string' ? op.insert.length : 1;\n    }\n  }\n};\n\n\nfunction Iterator(ops) {\n  this.ops = ops;\n  this.index = 0;\n  this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n  return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n  if (!length) length = Infinity;\n  var nextOp = this.ops[this.index];\n  if (nextOp) {\n    var offset = this.offset;\n    var opLength = lib.length(nextOp)\n    if (length >= opLength - offset) {\n      length = opLength - offset;\n      this.index += 1;\n      this.offset = 0;\n    } else {\n      this.offset += length;\n    }\n    if (typeof nextOp['delete'] === 'number') {\n      return { 'delete': length };\n    } else {\n      var retOp = {};\n      if (nextOp.attributes) {\n        retOp.attributes = nextOp.attributes;\n      }\n      if (typeof nextOp.retain === 'number') {\n        retOp.retain = length;\n      } else if (typeof nextOp.insert === 'string') {\n        retOp.insert = nextOp.insert.substr(offset, length);\n      } else {\n        // offset should === 0, length should === 1\n        retOp.insert = nextOp.insert;\n      }\n      return retOp;\n    }\n  } else {\n    return { retain: Infinity };\n  }\n};\n\nIterator.prototype.peek = function () {\n  return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n  if (this.ops[this.index]) {\n    // Should never return 0 if our index is being managed correctly\n    return lib.length(this.ops[this.index]) - this.offset;\n  } else {\n    return Infinity;\n  }\n};\n\nIterator.prototype.peekType = function () {\n  if (this.ops[this.index]) {\n    if (typeof this.ops[this.index]['delete'] === 'number') {\n      return 'delete';\n    } else if (typeof this.ops[this.index].retain === 'number') {\n      return 'retain';\n    } else {\n      return 'insert';\n    }\n  }\n  return 'retain';\n};\n\nIterator.prototype.rest = function () {\n  if (!this.hasNext()) {\n    return [];\n  } else if (this.offset === 0) {\n    return this.ops.slice(this.index);\n  } else {\n    var offset = this.offset;\n    var index = this.index;\n    var next = this.next();\n    var rest = this.ops.slice(this.index);\n    this.offset = offset;\n    this.index = index;\n    return [next].concat(rest);\n  }\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n  return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n  nativeMap = Map;\n} catch(_) {\n  // maybe a reference error because no `Map`. Give it a dummy value that no\n  // value will ever be an instanceof.\n  nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n  nativeSet = Set;\n} catch(_) {\n  nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n  nativePromise = Promise;\n} catch(_) {\n  nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n *    should be cloned as well. Non-enumerable properties on the prototype\n *    chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n  if (typeof circular === 'object') {\n    depth = circular.depth;\n    prototype = circular.prototype;\n    includeNonEnumerable = circular.includeNonEnumerable;\n    circular = circular.circular;\n  }\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth === 0)\n      return parent;\n\n    var child;\n    var proto;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      child = new nativeMap();\n    } else if (_instanceof(parent, nativeSet)) {\n      child = new nativeSet();\n    } else if (_instanceof(parent, nativePromise)) {\n      child = new nativePromise(function (resolve, reject) {\n        parent.then(function(value) {\n          resolve(_clone(value, depth - 1));\n        }, function(err) {\n          reject(_clone(err, depth - 1));\n        });\n      });\n    } else if (clone.__isArray(parent)) {\n      child = [];\n    } else if (clone.__isRegExp(parent)) {\n      child = new RegExp(parent.source, __getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (clone.__isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      if (Buffer.allocUnsafe) {\n        // Node.js >= 4.5.0\n        child = Buffer.allocUnsafe(parent.length);\n      } else {\n        // Older Node.js versions\n        child = new Buffer(parent.length);\n      }\n      parent.copy(child);\n      return child;\n    } else if (_instanceof(parent, Error)) {\n      child = Object.create(parent);\n    } else {\n      if (typeof prototype == 'undefined') {\n        proto = Object.getPrototypeOf(parent);\n        child = Object.create(proto);\n      }\n      else {\n        child = Object.create(prototype);\n        proto = prototype;\n      }\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      parent.forEach(function(value, key) {\n        var keyChild = _clone(key, depth - 1);\n        var valueChild = _clone(value, depth - 1);\n        child.set(keyChild, valueChild);\n      });\n    }\n    if (_instanceof(parent, nativeSet)) {\n      parent.forEach(function(value) {\n        var entryChild = _clone(value, depth - 1);\n        child.add(entryChild);\n      });\n    }\n\n    for (var i in parent) {\n      var attrs;\n      if (proto) {\n        attrs = Object.getOwnPropertyDescriptor(proto, i);\n      }\n\n      if (attrs && attrs.set == null) {\n        continue;\n      }\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(parent);\n      for (var i = 0; i < symbols.length; i++) {\n        // Don't need to worry about cloning a symbol because it is a primitive,\n        // like a number or string.\n        var symbol = symbols[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n        if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n          continue;\n        }\n        child[symbol] = _clone(parent[symbol], depth - 1);\n        if (!descriptor.enumerable) {\n          Object.defineProperty(child, symbol, {\n            enumerable: false\n          });\n        }\n      }\n    }\n\n    if (includeNonEnumerable) {\n      var allPropertyNames = Object.getOwnPropertyNames(parent);\n      for (var i = 0; i < allPropertyNames.length; i++) {\n        var propertyName = allPropertyNames[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n        if (descriptor && descriptor.enumerable) {\n          continue;\n        }\n        child[propertyName] = _clone(parent[propertyName], depth - 1);\n        Object.defineProperty(child, propertyName, {\n          enumerable: false\n        });\n      }\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n  return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n  var flags = '';\n  if (re.global) flags += 'g';\n  if (re.ignoreCase) flags += 'i';\n  if (re.multiline) flags += 'm';\n  return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n  module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n  return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n  _inherits(Scroll, _Parchment$Scroll);\n\n  function Scroll(domNode, config) {\n    _classCallCheck(this, Scroll);\n\n    var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n    _this.emitter = config.emitter;\n    if (Array.isArray(config.whitelist)) {\n      _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n        whitelist[format] = true;\n        return whitelist;\n      }, {});\n    }\n    // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n    _this.domNode.addEventListener('DOMNodeInserted', function () {});\n    _this.optimize();\n    _this.enable();\n    return _this;\n  }\n\n  _createClass(Scroll, [{\n    key: 'batchStart',\n    value: function batchStart() {\n      this.batch = true;\n    }\n  }, {\n    key: 'batchEnd',\n    value: function batchEnd() {\n      this.batch = false;\n      this.optimize();\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      var _line = this.line(index),\n          _line2 = _slicedToArray(_line, 2),\n          first = _line2[0],\n          offset = _line2[1];\n\n      var _line3 = this.line(index + length),\n          _line4 = _slicedToArray(_line3, 1),\n          last = _line4[0];\n\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n      if (last != null && first !== last && offset > 0) {\n        if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n          this.optimize();\n          return;\n        }\n        if (first instanceof _code2.default) {\n          var newlineIndex = first.newlineIndex(first.length(), true);\n          if (newlineIndex > -1) {\n            first = first.split(newlineIndex + 1);\n            if (first === last) {\n              this.optimize();\n              return;\n            }\n          }\n        } else if (last instanceof _code2.default) {\n          var _newlineIndex = last.newlineIndex(0);\n          if (_newlineIndex > -1) {\n            last.split(_newlineIndex + 1);\n          }\n        }\n        var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n        first.moveChildren(last, ref);\n        first.remove();\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.domNode.setAttribute('contenteditable', enabled);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, format, value) {\n      if (this.whitelist != null && !this.whitelist[format]) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n      this.optimize();\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n      if (index >= this.length()) {\n        if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n          var blot = _parchment2.default.create(this.statics.defaultChild);\n          this.appendChild(blot);\n          if (def == null && value.endsWith('\\n')) {\n            value = value.slice(0, -1);\n          }\n          blot.insertAt(0, value, def);\n        } else {\n          var embed = _parchment2.default.create(value, def);\n          this.appendChild(embed);\n        }\n      } else {\n        _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n        var wrapper = _parchment2.default.create(this.statics.defaultChild);\n        wrapper.appendChild(blot);\n        blot = wrapper;\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n    }\n  }, {\n    key: 'leaf',\n    value: function leaf(index) {\n      return this.path(index).pop() || [null, -1];\n    }\n  }, {\n    key: 'line',\n    value: function line(index) {\n      if (index === this.length()) {\n        return this.line(index - 1);\n      }\n      return this.descendant(isLine, index);\n    }\n  }, {\n    key: 'lines',\n    value: function lines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      var getLines = function getLines(blot, index, length) {\n        var lines = [],\n            lengthLeft = length;\n        blot.children.forEachAt(index, length, function (child, index, length) {\n          if (isLine(child)) {\n            lines.push(child);\n          } else if (child instanceof _parchment2.default.Container) {\n            lines = lines.concat(getLines(child, index, lengthLeft));\n          }\n          lengthLeft -= length;\n        });\n        return lines;\n      };\n      return getLines(this, index, length);\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize() {\n      var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (this.batch === true) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n      }\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations) {\n      if (this.batch === true) return;\n      var source = _emitter2.default.sources.USER;\n      if (typeof mutations === 'string') {\n        source = mutations;\n      }\n      if (!Array.isArray(mutations)) {\n        mutations = this.observer.takeRecords();\n      }\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n      }\n    }\n  }]);\n\n  return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n  _inherits(Keyboard, _Module);\n\n  _createClass(Keyboard, null, [{\n    key: 'match',\n    value: function match(evt, binding) {\n      binding = normalize(binding);\n      if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n        return !!binding[key] !== evt[key] && binding[key] !== null;\n      })) {\n        return false;\n      }\n      return binding.key === (evt.which || evt.keyCode);\n    }\n  }]);\n\n  function Keyboard(quill, options) {\n    _classCallCheck(this, Keyboard);\n\n    var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n    _this.bindings = {};\n    Object.keys(_this.options.bindings).forEach(function (name) {\n      if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n        return;\n      }\n      if (_this.options.bindings[name]) {\n        _this.addBinding(_this.options.bindings[name]);\n      }\n    });\n    _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n    _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n    if (/Firefox/i.test(navigator.userAgent)) {\n      // Need to handle delete and backspace for Firefox in the general case #1171\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n    } else {\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n    }\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n    _this.listen();\n    return _this;\n  }\n\n  _createClass(Keyboard, [{\n    key: 'addBinding',\n    value: function addBinding(key) {\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      var binding = normalize(key);\n      if (binding == null || binding.key == null) {\n        return debug.warn('Attempted to add invalid keyboard binding', binding);\n      }\n      if (typeof context === 'function') {\n        context = { handler: context };\n      }\n      if (typeof handler === 'function') {\n        handler = { handler: handler };\n      }\n      binding = (0, _extend2.default)(binding, context, handler);\n      this.bindings[binding.key] = this.bindings[binding.key] || [];\n      this.bindings[binding.key].push(binding);\n    }\n  }, {\n    key: 'listen',\n    value: function listen() {\n      var _this2 = this;\n\n      this.quill.root.addEventListener('keydown', function (evt) {\n        if (evt.defaultPrevented) return;\n        var which = evt.which || evt.keyCode;\n        var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n          return Keyboard.match(evt, binding);\n        });\n        if (bindings.length === 0) return;\n        var range = _this2.quill.getSelection();\n        if (range == null || !_this2.quill.hasFocus()) return;\n\n        var _quill$getLine = _this2.quill.getLine(range.index),\n            _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n            line = _quill$getLine2[0],\n            offset = _quill$getLine2[1];\n\n        var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n            _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n            leafStart = _quill$getLeaf2[0],\n            offsetStart = _quill$getLeaf2[1];\n\n        var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n            _ref2 = _slicedToArray(_ref, 2),\n            leafEnd = _ref2[0],\n            offsetEnd = _ref2[1];\n\n        var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n        var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n        var curContext = {\n          collapsed: range.length === 0,\n          empty: range.length === 0 && line.length() <= 1,\n          format: _this2.quill.getFormat(range),\n          offset: offset,\n          prefix: prefixText,\n          suffix: suffixText\n        };\n        var prevented = bindings.some(function (binding) {\n          if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n          if (binding.empty != null && binding.empty !== curContext.empty) return false;\n          if (binding.offset != null && binding.offset !== curContext.offset) return false;\n          if (Array.isArray(binding.format)) {\n            // any format is present\n            if (binding.format.every(function (name) {\n              return curContext.format[name] == null;\n            })) {\n              return false;\n            }\n          } else if (_typeof(binding.format) === 'object') {\n            // all formats must match\n            if (!Object.keys(binding.format).every(function (name) {\n              if (binding.format[name] === true) return curContext.format[name] != null;\n              if (binding.format[name] === false) return curContext.format[name] == null;\n              return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n            })) {\n              return false;\n            }\n          }\n          if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n          if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n          return binding.handler.call(_this2, range, curContext) !== true;\n        });\n        if (prevented) {\n          evt.preventDefault();\n        }\n      });\n    }\n  }]);\n\n  return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n  BACKSPACE: 8,\n  TAB: 9,\n  ENTER: 13,\n  ESCAPE: 27,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n  bindings: {\n    'bold': makeFormatHandler('bold'),\n    'italic': makeFormatHandler('italic'),\n    'underline': makeFormatHandler('underline'),\n    'indent': {\n      // highlight tab or tab at beginning of list, indent or blockquote\n      key: Keyboard.keys.TAB,\n      format: ['blockquote', 'indent', 'list'],\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '+1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      format: ['blockquote', 'indent', 'list'],\n      // highlight tab or tab at beginning of list, indent or blockquote\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '-1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent backspace': {\n      key: Keyboard.keys.BACKSPACE,\n      collapsed: true,\n      shiftKey: null,\n      metaKey: null,\n      ctrlKey: null,\n      altKey: null,\n      format: ['indent', 'list'],\n      offset: 0,\n      handler: function handler(range, context) {\n        if (context.format.indent != null) {\n          this.quill.format('indent', '-1', _quill2.default.sources.USER);\n        } else if (context.format.list != null) {\n          this.quill.format('list', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'indent code-block': makeCodeBlockHandler(true),\n    'outdent code-block': makeCodeBlockHandler(false),\n    'remove tab': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      collapsed: true,\n      prefix: /\\t$/,\n      handler: function handler(range) {\n        this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n      }\n    },\n    'tab': {\n      key: Keyboard.keys.TAB,\n      handler: function handler(range) {\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n      }\n    },\n    'list empty enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['list'],\n      empty: true,\n      handler: function handler(range, context) {\n        this.quill.format('list', false, _quill2.default.sources.USER);\n        if (context.format.indent) {\n          this.quill.format('indent', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'checklist enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: { list: 'checked' },\n      handler: function handler(range) {\n        var _quill$getLine3 = this.quill.getLine(range.index),\n            _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n            line = _quill$getLine4[0],\n            offset = _quill$getLine4[1];\n\n        var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'header enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['header'],\n      suffix: /^$/,\n      handler: function handler(range, context) {\n        var _quill$getLine5 = this.quill.getLine(range.index),\n            _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n            line = _quill$getLine6[0],\n            offset = _quill$getLine6[1];\n\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'list autofill': {\n      key: ' ',\n      collapsed: true,\n      format: { list: false },\n      prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n      handler: function handler(range, context) {\n        var length = context.prefix.length;\n\n        var _quill$getLine7 = this.quill.getLine(range.index),\n            _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n            line = _quill$getLine8[0],\n            offset = _quill$getLine8[1];\n\n        if (offset > length) return true;\n        var value = void 0;\n        switch (context.prefix.trim()) {\n          case '[]':case '[ ]':\n            value = 'unchecked';\n            break;\n          case '[x]':\n            value = 'checked';\n            break;\n          case '-':case '*':\n            value = 'bullet';\n            break;\n          default:\n            value = 'ordered';\n        }\n        this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n      }\n    },\n    'code exit': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['code-block'],\n      prefix: /\\n\\n$/,\n      suffix: /^\\s+$/,\n      handler: function handler(range) {\n        var _quill$getLine9 = this.quill.getLine(range.index),\n            _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n            line = _quill$getLine10[0],\n            offset = _quill$getLine10[1];\n\n        var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n      }\n    },\n    'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n    'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n    'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n    'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n  }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n  var _ref3;\n\n  var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n  return _ref3 = {\n    key: key,\n    shiftKey: shiftKey,\n    altKey: null\n  }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n    var index = range.index;\n    if (key === Keyboard.keys.RIGHT) {\n      index += range.length + 1;\n    }\n\n    var _quill$getLeaf3 = this.quill.getLeaf(index),\n        _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n        leaf = _quill$getLeaf4[0];\n\n    if (!(leaf instanceof _parchment2.default.Embed)) return true;\n    if (key === Keyboard.keys.LEFT) {\n      if (shiftKey) {\n        this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n      }\n    } else {\n      if (shiftKey) {\n        this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n      }\n    }\n    return false;\n  }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n  if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n  var _quill$getLine11 = this.quill.getLine(range.index),\n      _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n      line = _quill$getLine12[0];\n\n  var formats = {};\n  if (context.offset === 0) {\n    var _quill$getLine13 = this.quill.getLine(range.index - 1),\n        _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n        prev = _quill$getLine14[0];\n\n    if (prev != null && prev.length() > 1) {\n      var curFormats = line.formats();\n      var prevFormats = this.quill.getFormat(range.index - 1, 1);\n      formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n    }\n  }\n  // Check for astral symbols\n  var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n  this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n  }\n  this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n  // Check for astral symbols\n  var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n  if (range.index >= this.quill.getLength() - length) return;\n  var formats = {},\n      nextLength = 0;\n\n  var _quill$getLine15 = this.quill.getLine(range.index),\n      _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n      line = _quill$getLine16[0];\n\n  if (context.offset >= line.length() - 1) {\n    var _quill$getLine17 = this.quill.getLine(range.index + 1),\n        _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n        next = _quill$getLine18[0];\n\n    if (next) {\n      var curFormats = line.formats();\n      var nextFormats = this.quill.getFormat(range.index, 1);\n      formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n      nextLength = next.length();\n    }\n  }\n  this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n  }\n}\n\nfunction handleDeleteRange(range) {\n  var lines = this.quill.getLines(range);\n  var formats = {};\n  if (lines.length > 1) {\n    var firstFormats = lines[0].formats();\n    var lastFormats = lines[lines.length - 1].formats();\n    formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n  }\n  this.quill.deleteText(range, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n  }\n  this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n  this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n  var _this3 = this;\n\n  if (range.length > 0) {\n    this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n  }\n  var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n    if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n      lineFormats[format] = context.format[format];\n    }\n    return lineFormats;\n  }, {});\n  this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n  // Earlier scroll.deleteAt might have messed up our selection,\n  // so insertText's built in selection preservation is not reliable\n  this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n  this.quill.focus();\n  Object.keys(context.format).forEach(function (name) {\n    if (lineFormats[name] != null) return;\n    if (Array.isArray(context.format[name])) return;\n    if (name === 'link') return;\n    _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n  });\n}\n\nfunction makeCodeBlockHandler(indent) {\n  return {\n    key: Keyboard.keys.TAB,\n    shiftKey: !indent,\n    format: { 'code-block': true },\n    handler: function handler(range) {\n      var CodeBlock = _parchment2.default.query('code-block');\n      var index = range.index,\n          length = range.length;\n\n      var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n          _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n          block = _quill$scroll$descend2[0],\n          offset = _quill$scroll$descend2[1];\n\n      if (block == null) return;\n      var scrollIndex = this.quill.getIndex(block);\n      var start = block.newlineIndex(offset, true) + 1;\n      var end = block.newlineIndex(scrollIndex + offset + length);\n      var lines = block.domNode.textContent.slice(start, end).split('\\n');\n      offset = 0;\n      lines.forEach(function (line, i) {\n        if (indent) {\n          block.insertAt(start + offset, CodeBlock.TAB);\n          offset += CodeBlock.TAB.length;\n          if (i === 0) {\n            index += CodeBlock.TAB.length;\n          } else {\n            length += CodeBlock.TAB.length;\n          }\n        } else if (line.startsWith(CodeBlock.TAB)) {\n          block.deleteAt(start + offset, CodeBlock.TAB.length);\n          offset -= CodeBlock.TAB.length;\n          if (i === 0) {\n            index -= CodeBlock.TAB.length;\n          } else {\n            length -= CodeBlock.TAB.length;\n          }\n        }\n        offset += line.length + 1;\n      });\n      this.quill.update(_quill2.default.sources.USER);\n      this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n    }\n  };\n}\n\nfunction makeFormatHandler(format) {\n  return {\n    key: format[0].toUpperCase(),\n    shortKey: true,\n    handler: function handler(range, context) {\n      this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n    }\n  };\n}\n\nfunction normalize(binding) {\n  if (typeof binding === 'string' || typeof binding === 'number') {\n    return normalize({ key: binding });\n  }\n  if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n    binding = (0, _clone2.default)(binding, false);\n  }\n  if (typeof binding.key === 'string') {\n    if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n      binding.key = Keyboard.keys[binding.key.toUpperCase()];\n    } else if (binding.key.length === 1) {\n      binding.key = binding.key.toUpperCase().charCodeAt(0);\n    } else {\n      return null;\n    }\n  }\n  if (binding.shortKey) {\n    binding[SHORTKEY] = binding.shortKey;\n    delete binding.shortKey;\n  }\n  return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n  _inherits(Cursor, _Parchment$Embed);\n\n  _createClass(Cursor, null, [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  function Cursor(domNode, selection) {\n    _classCallCheck(this, Cursor);\n\n    var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n    _this.selection = selection;\n    _this.textNode = document.createTextNode(Cursor.CONTENTS);\n    _this.domNode.appendChild(_this.textNode);\n    _this._length = 0;\n    return _this;\n  }\n\n  _createClass(Cursor, [{\n    key: 'detach',\n    value: function detach() {\n      // super.detach() will also clear domNode.__blot\n      if (this.parent != null) this.parent.removeChild(this);\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (this._length !== 0) {\n        return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n      }\n      var target = this,\n          index = 0;\n      while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n        index += target.offset(target.parent);\n        target = target.parent;\n      }\n      if (target != null) {\n        this._length = Cursor.CONTENTS.length;\n        target.optimize();\n        target.formatAt(index, Cursor.CONTENTS.length, name, value);\n        this._length = 0;\n      }\n    }\n  }, {\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.textNode) return 0;\n      return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return this._length;\n    }\n  }, {\n    key: 'position',\n    value: function position() {\n      return [this.textNode, this.textNode.data.length];\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n      this.parent = null;\n    }\n  }, {\n    key: 'restore',\n    value: function restore() {\n      if (this.selection.composing || this.parent == null) return;\n      var textNode = this.textNode;\n      var range = this.selection.getNativeRange();\n      var restoreText = void 0,\n          start = void 0,\n          end = void 0;\n      if (range != null && range.start.node === textNode && range.end.node === textNode) {\n        var _ref = [textNode, range.start.offset, range.end.offset];\n        restoreText = _ref[0];\n        start = _ref[1];\n        end = _ref[2];\n      }\n      // Link format will insert text outside of anchor tag\n      while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n        this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n      }\n      if (this.textNode.data !== Cursor.CONTENTS) {\n        var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n        if (this.next instanceof _text2.default) {\n          restoreText = this.next.domNode;\n          this.next.insertAt(0, text);\n          this.textNode.data = Cursor.CONTENTS;\n        } else {\n          this.textNode.data = text;\n          this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n          this.textNode = document.createTextNode(Cursor.CONTENTS);\n          this.domNode.appendChild(this.textNode);\n        }\n      }\n      this.remove();\n      if (start != null) {\n        var _map = [start, end].map(function (offset) {\n          return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n        });\n\n        var _map2 = _slicedToArray(_map, 2);\n\n        start = _map2[0];\n        end = _map2[1];\n\n        return {\n          startNode: restoreText,\n          startOffset: start,\n          endNode: restoreText,\n          endOffset: end\n        };\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      if (mutations.some(function (mutation) {\n        return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n      })) {\n        var range = this.restore();\n        if (range) context.range = range;\n      }\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }]);\n\n  return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n  _inherits(Container, _Parchment$Container);\n\n  function Container() {\n    _classCallCheck(this, Container);\n\n    return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n  }\n\n  return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n  _inherits(ColorAttributor, _Parchment$Attributor);\n\n  function ColorAttributor() {\n    _classCallCheck(this, ColorAttributor);\n\n    return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n  }\n\n  _createClass(ColorAttributor, [{\n    key: 'value',\n    value: function value(domNode) {\n      var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n      if (!value.startsWith('rgb(')) return value;\n      value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n      return '#' + value.split(',').map(function (component) {\n        return ('00' + parseInt(component).toString(16)).slice(-2);\n      }).join('');\n    }\n  }]);\n\n  return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = function (_Inline) {\n  _inherits(Link, _Inline);\n\n  function Link() {\n    _classCallCheck(this, Link);\n\n    return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n  }\n\n  _createClass(Link, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n      value = this.constructor.sanitize(value);\n      this.domNode.setAttribute('href', value);\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n      value = this.sanitize(value);\n      node.setAttribute('href', value);\n      node.setAttribute('rel', 'noopener noreferrer');\n      node.setAttribute('target', '_blank');\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return domNode.getAttribute('href');\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n    }\n  }]);\n\n  return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n  var anchor = document.createElement('a');\n  anchor.href = url;\n  var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n  return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _dropdown = __webpack_require__(107);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n  element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nvar Picker = function () {\n  function Picker(select) {\n    var _this = this;\n\n    _classCallCheck(this, Picker);\n\n    this.select = select;\n    this.container = document.createElement('span');\n    this.buildPicker();\n    this.select.style.display = 'none';\n    this.select.parentNode.insertBefore(this.container, this.select);\n\n    this.label.addEventListener('mousedown', function () {\n      _this.togglePicker();\n    });\n    this.label.addEventListener('keydown', function (event) {\n      switch (event.keyCode) {\n        // Allows the \"Enter\" key to open the picker\n        case _keyboard2.default.keys.ENTER:\n          _this.togglePicker();\n          break;\n\n        // Allows the \"Escape\" key to close the picker\n        case _keyboard2.default.keys.ESCAPE:\n          _this.escape();\n          event.preventDefault();\n          break;\n        default:\n      }\n    });\n    this.select.addEventListener('change', this.update.bind(this));\n  }\n\n  _createClass(Picker, [{\n    key: 'togglePicker',\n    value: function togglePicker() {\n      this.container.classList.toggle('ql-expanded');\n      // Toggle aria-expanded and aria-hidden to make the picker accessible\n      toggleAriaAttribute(this.label, 'aria-expanded');\n      toggleAriaAttribute(this.options, 'aria-hidden');\n    }\n  }, {\n    key: 'buildItem',\n    value: function buildItem(option) {\n      var _this2 = this;\n\n      var item = document.createElement('span');\n      item.tabIndex = '0';\n      item.setAttribute('role', 'button');\n\n      item.classList.add('ql-picker-item');\n      if (option.hasAttribute('value')) {\n        item.setAttribute('data-value', option.getAttribute('value'));\n      }\n      if (option.textContent) {\n        item.setAttribute('data-label', option.textContent);\n      }\n      item.addEventListener('click', function () {\n        _this2.selectItem(item, true);\n      });\n      item.addEventListener('keydown', function (event) {\n        switch (event.keyCode) {\n          // Allows the \"Enter\" key to select an item\n          case _keyboard2.default.keys.ENTER:\n            _this2.selectItem(item, true);\n            event.preventDefault();\n            break;\n\n          // Allows the \"Escape\" key to close the picker\n          case _keyboard2.default.keys.ESCAPE:\n            _this2.escape();\n            event.preventDefault();\n            break;\n          default:\n        }\n      });\n\n      return item;\n    }\n  }, {\n    key: 'buildLabel',\n    value: function buildLabel() {\n      var label = document.createElement('span');\n      label.classList.add('ql-picker-label');\n      label.innerHTML = _dropdown2.default;\n      label.tabIndex = '0';\n      label.setAttribute('role', 'button');\n      label.setAttribute('aria-expanded', 'false');\n      this.container.appendChild(label);\n      return label;\n    }\n  }, {\n    key: 'buildOptions',\n    value: function buildOptions() {\n      var _this3 = this;\n\n      var options = document.createElement('span');\n      options.classList.add('ql-picker-options');\n\n      // Don't want screen readers to read this until options are visible\n      options.setAttribute('aria-hidden', 'true');\n      options.tabIndex = '-1';\n\n      // Need a unique id for aria-controls\n      options.id = 'ql-picker-options-' + optionsCounter;\n      optionsCounter += 1;\n      this.label.setAttribute('aria-controls', options.id);\n\n      this.options = options;\n\n      [].slice.call(this.select.options).forEach(function (option) {\n        var item = _this3.buildItem(option);\n        options.appendChild(item);\n        if (option.selected === true) {\n          _this3.selectItem(item);\n        }\n      });\n      this.container.appendChild(options);\n    }\n  }, {\n    key: 'buildPicker',\n    value: function buildPicker() {\n      var _this4 = this;\n\n      [].slice.call(this.select.attributes).forEach(function (item) {\n        _this4.container.setAttribute(item.name, item.value);\n      });\n      this.container.classList.add('ql-picker');\n      this.label = this.buildLabel();\n      this.buildOptions();\n    }\n  }, {\n    key: 'escape',\n    value: function escape() {\n      var _this5 = this;\n\n      // Close menu and return focus to trigger label\n      this.close();\n      // Need setTimeout for accessibility to ensure that the browser executes\n      // focus on the next process thread and after any DOM content changes\n      setTimeout(function () {\n        return _this5.label.focus();\n      }, 1);\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      this.container.classList.remove('ql-expanded');\n      this.label.setAttribute('aria-expanded', 'false');\n      this.options.setAttribute('aria-hidden', 'true');\n    }\n  }, {\n    key: 'selectItem',\n    value: function selectItem(item) {\n      var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var selected = this.container.querySelector('.ql-selected');\n      if (item === selected) return;\n      if (selected != null) {\n        selected.classList.remove('ql-selected');\n      }\n      if (item == null) return;\n      item.classList.add('ql-selected');\n      this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n      if (item.hasAttribute('data-value')) {\n        this.label.setAttribute('data-value', item.getAttribute('data-value'));\n      } else {\n        this.label.removeAttribute('data-value');\n      }\n      if (item.hasAttribute('data-label')) {\n        this.label.setAttribute('data-label', item.getAttribute('data-label'));\n      } else {\n        this.label.removeAttribute('data-label');\n      }\n      if (trigger) {\n        if (typeof Event === 'function') {\n          this.select.dispatchEvent(new Event('change'));\n        } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n          // IE11\n          var event = document.createEvent('Event');\n          event.initEvent('change', true, true);\n          this.select.dispatchEvent(event);\n        }\n        this.close();\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var option = void 0;\n      if (this.select.selectedIndex > -1) {\n        var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n        option = this.select.options[this.select.selectedIndex];\n        this.selectItem(item);\n      } else {\n        this.selectItem(null);\n      }\n      var isActive = option != null && option !== this.select.querySelector('option[selected]');\n      this.label.classList.toggle('ql-active', isActive);\n    }\n  }]);\n\n  return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n  'blots/block': _block2.default,\n  'blots/block/embed': _block.BlockEmbed,\n  'blots/break': _break2.default,\n  'blots/container': _container2.default,\n  'blots/cursor': _cursor2.default,\n  'blots/embed': _embed2.default,\n  'blots/inline': _inline2.default,\n  'blots/scroll': _scroll2.default,\n  'blots/text': _text2.default,\n\n  'modules/clipboard': _clipboard2.default,\n  'modules/history': _history2.default,\n  'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n    function ShadowBlot(domNode) {\n        this.domNode = domNode;\n        // @ts-ignore\n        this.domNode[Registry.DATA_KEY] = { blot: this };\n    }\n    Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n        // Hack for accessing inherited static methods\n        get: function () {\n            return this.constructor;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ShadowBlot.create = function (value) {\n        if (this.tagName == null) {\n            throw new Registry.ParchmentError('Blot definition missing tagName');\n        }\n        var node;\n        if (Array.isArray(this.tagName)) {\n            if (typeof value === 'string') {\n                value = value.toUpperCase();\n                if (parseInt(value).toString() === value) {\n                    value = parseInt(value);\n                }\n            }\n            if (typeof value === 'number') {\n                node = document.createElement(this.tagName[value - 1]);\n            }\n            else if (this.tagName.indexOf(value) > -1) {\n                node = document.createElement(value);\n            }\n            else {\n                node = document.createElement(this.tagName[0]);\n            }\n        }\n        else {\n            node = document.createElement(this.tagName);\n        }\n        if (this.className) {\n            node.classList.add(this.className);\n        }\n        return node;\n    };\n    ShadowBlot.prototype.attach = function () {\n        if (this.parent != null) {\n            this.scroll = this.parent.scroll;\n        }\n    };\n    ShadowBlot.prototype.clone = function () {\n        var domNode = this.domNode.cloneNode(false);\n        return Registry.create(domNode);\n    };\n    ShadowBlot.prototype.detach = function () {\n        if (this.parent != null)\n            this.parent.removeChild(this);\n        // @ts-ignore\n        delete this.domNode[Registry.DATA_KEY];\n    };\n    ShadowBlot.prototype.deleteAt = function (index, length) {\n        var blot = this.isolate(index, length);\n        blot.remove();\n    };\n    ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n        var blot = this.isolate(index, length);\n        if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n            blot.wrap(name, value);\n        }\n        else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n            var parent = Registry.create(this.statics.scope);\n            blot.wrap(parent);\n            parent.format(name, value);\n        }\n    };\n    ShadowBlot.prototype.insertAt = function (index, value, def) {\n        var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n        var ref = this.split(index);\n        this.parent.insertBefore(blot, ref);\n    };\n    ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n        if (refBlot === void 0) { refBlot = null; }\n        if (this.parent != null) {\n            this.parent.children.remove(this);\n        }\n        var refDomNode = null;\n        parentBlot.children.insertBefore(this, refBlot);\n        if (refBlot != null) {\n            refDomNode = refBlot.domNode;\n        }\n        if (this.domNode.parentNode != parentBlot.domNode ||\n            this.domNode.nextSibling != refDomNode) {\n            parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n        }\n        this.parent = parentBlot;\n        this.attach();\n    };\n    ShadowBlot.prototype.isolate = function (index, length) {\n        var target = this.split(index);\n        target.split(length);\n        return target;\n    };\n    ShadowBlot.prototype.length = function () {\n        return 1;\n    };\n    ShadowBlot.prototype.offset = function (root) {\n        if (root === void 0) { root = this.parent; }\n        if (this.parent == null || this == root)\n            return 0;\n        return this.parent.children.offset(this) + this.parent.offset(root);\n    };\n    ShadowBlot.prototype.optimize = function (context) {\n        // TODO clean up once we use WeakMap\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY] != null) {\n            // @ts-ignore\n            delete this.domNode[Registry.DATA_KEY].mutations;\n        }\n    };\n    ShadowBlot.prototype.remove = function () {\n        if (this.domNode.parentNode != null) {\n            this.domNode.parentNode.removeChild(this.domNode);\n        }\n        this.detach();\n    };\n    ShadowBlot.prototype.replace = function (target) {\n        if (target.parent == null)\n            return;\n        target.parent.insertBefore(this, target.next);\n        target.remove();\n    };\n    ShadowBlot.prototype.replaceWith = function (name, value) {\n        var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n        replacement.replace(this);\n        return replacement;\n    };\n    ShadowBlot.prototype.split = function (index, force) {\n        return index === 0 ? this : this.next;\n    };\n    ShadowBlot.prototype.update = function (mutations, context) {\n        // Nothing to do by default\n    };\n    ShadowBlot.prototype.wrap = function (name, value) {\n        var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n        if (this.parent != null) {\n            this.parent.insertBefore(wrapper, this.next);\n        }\n        wrapper.appendChild(this);\n        return wrapper;\n    };\n    ShadowBlot.blotName = 'abstract';\n    return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n    function AttributorStore(domNode) {\n        this.attributes = {};\n        this.domNode = domNode;\n        this.build();\n    }\n    AttributorStore.prototype.attribute = function (attribute, value) {\n        // verb\n        if (value) {\n            if (attribute.add(this.domNode, value)) {\n                if (attribute.value(this.domNode) != null) {\n                    this.attributes[attribute.attrName] = attribute;\n                }\n                else {\n                    delete this.attributes[attribute.attrName];\n                }\n            }\n        }\n        else {\n            attribute.remove(this.domNode);\n            delete this.attributes[attribute.attrName];\n        }\n    };\n    AttributorStore.prototype.build = function () {\n        var _this = this;\n        this.attributes = {};\n        var attributes = attributor_1.default.keys(this.domNode);\n        var classes = class_1.default.keys(this.domNode);\n        var styles = style_1.default.keys(this.domNode);\n        attributes\n            .concat(classes)\n            .concat(styles)\n            .forEach(function (name) {\n            var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n            if (attr instanceof attributor_1.default) {\n                _this.attributes[attr.attrName] = attr;\n            }\n        });\n    };\n    AttributorStore.prototype.copy = function (target) {\n        var _this = this;\n        Object.keys(this.attributes).forEach(function (key) {\n            var value = _this.attributes[key].value(_this.domNode);\n            target.format(key, value);\n        });\n    };\n    AttributorStore.prototype.move = function (target) {\n        var _this = this;\n        this.copy(target);\n        Object.keys(this.attributes).forEach(function (key) {\n            _this.attributes[key].remove(_this.domNode);\n        });\n        this.attributes = {};\n    };\n    AttributorStore.prototype.values = function () {\n        var _this = this;\n        return Object.keys(this.attributes).reduce(function (attributes, name) {\n            attributes[name] = _this.attributes[name].value(_this.domNode);\n            return attributes;\n        }, {});\n    };\n    return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n    var className = node.getAttribute('class') || '';\n    return className.split(/\\s+/).filter(function (name) {\n        return name.indexOf(prefix + \"-\") === 0;\n    });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n    __extends(ClassAttributor, _super);\n    function ClassAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ClassAttributor.keys = function (node) {\n        return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n            return name\n                .split('-')\n                .slice(0, -1)\n                .join('-');\n        });\n    };\n    ClassAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        this.remove(node);\n        node.classList.add(this.keyName + \"-\" + value);\n        return true;\n    };\n    ClassAttributor.prototype.remove = function (node) {\n        var matches = match(node, this.keyName);\n        matches.forEach(function (name) {\n            node.classList.remove(name);\n        });\n        if (node.classList.length === 0) {\n            node.removeAttribute('class');\n        }\n    };\n    ClassAttributor.prototype.value = function (node) {\n        var result = match(node, this.keyName)[0] || '';\n        var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n        return this.canAdd(node, value) ? value : '';\n    };\n    return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n    var parts = name.split('-');\n    var rest = parts\n        .slice(1)\n        .map(function (part) {\n        return part[0].toUpperCase() + part.slice(1);\n    })\n        .join('');\n    return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n    __extends(StyleAttributor, _super);\n    function StyleAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    StyleAttributor.keys = function (node) {\n        return (node.getAttribute('style') || '').split(';').map(function (value) {\n            var arr = value.split(':');\n            return arr[0].trim();\n        });\n    };\n    StyleAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = value;\n        return true;\n    };\n    StyleAttributor.prototype.remove = function (node) {\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = '';\n        if (!node.getAttribute('style')) {\n            node.removeAttribute('style');\n        }\n    };\n    StyleAttributor.prototype.value = function (node) {\n        // @ts-ignore\n        var value = node.style[camelize(this.keyName)];\n        return this.canAdd(node, value) ? value : '';\n    };\n    return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n  function Theme(quill, options) {\n    _classCallCheck(this, Theme);\n\n    this.quill = quill;\n    this.options = options;\n    this.modules = {};\n  }\n\n  _createClass(Theme, [{\n    key: 'init',\n    value: function init() {\n      var _this = this;\n\n      Object.keys(this.options.modules).forEach(function (name) {\n        if (_this.modules[name] == null) {\n          _this.addModule(name);\n        }\n      });\n    }\n  }, {\n    key: 'addModule',\n    value: function addModule(name) {\n      var moduleClass = this.quill.constructor.import('modules/' + name);\n      this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n      return this.modules[name];\n    }\n  }]);\n\n  return Theme;\n}();\n\nTheme.DEFAULTS = {\n  modules: {}\n};\nTheme.themes = {\n  'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n  _inherits(Embed, _Parchment$Embed);\n\n  function Embed(node) {\n    _classCallCheck(this, Embed);\n\n    var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n    _this.contentNode = document.createElement('span');\n    _this.contentNode.setAttribute('contenteditable', false);\n    [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n      _this.contentNode.appendChild(childNode);\n    });\n    _this.leftGuard = document.createTextNode(GUARD_TEXT);\n    _this.rightGuard = document.createTextNode(GUARD_TEXT);\n    _this.domNode.appendChild(_this.leftGuard);\n    _this.domNode.appendChild(_this.contentNode);\n    _this.domNode.appendChild(_this.rightGuard);\n    return _this;\n  }\n\n  _createClass(Embed, [{\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.leftGuard) return 0;\n      if (node === this.rightGuard) return 1;\n      return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'restore',\n    value: function restore(node) {\n      var range = void 0,\n          textNode = void 0;\n      var text = node.data.split(GUARD_TEXT).join('');\n      if (node === this.leftGuard) {\n        if (this.prev instanceof _text2.default) {\n          var prevLength = this.prev.length();\n          this.prev.insertAt(prevLength, text);\n          range = {\n            startNode: this.prev.domNode,\n            startOffset: prevLength + text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      } else if (node === this.rightGuard) {\n        if (this.next instanceof _text2.default) {\n          this.next.insertAt(0, text);\n          range = {\n            startNode: this.next.domNode,\n            startOffset: text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      }\n      node.data = GUARD_TEXT;\n      return range;\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      mutations.forEach(function (mutation) {\n        if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n          var range = _this2.restore(mutation.target);\n          if (range) context.range = range;\n        }\n      });\n    }\n  }]);\n\n  return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n  _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n  function FontStyleAttributor() {\n    _classCallCheck(this, FontStyleAttributor);\n\n    return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n  }\n\n  _createClass(FontStyleAttributor, [{\n    key: 'value',\n    value: function value(node) {\n      return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n    }\n  }]);\n\n  return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  'align': {\n    '': __webpack_require__(76),\n    'center': __webpack_require__(77),\n    'right': __webpack_require__(78),\n    'justify': __webpack_require__(79)\n  },\n  'background': __webpack_require__(80),\n  'blockquote': __webpack_require__(81),\n  'bold': __webpack_require__(82),\n  'clean': __webpack_require__(83),\n  'code': __webpack_require__(58),\n  'code-block': __webpack_require__(58),\n  'color': __webpack_require__(84),\n  'direction': {\n    '': __webpack_require__(85),\n    'rtl': __webpack_require__(86)\n  },\n  'float': {\n    'center': __webpack_require__(87),\n    'full': __webpack_require__(88),\n    'left': __webpack_require__(89),\n    'right': __webpack_require__(90)\n  },\n  'formula': __webpack_require__(91),\n  'header': {\n    '1': __webpack_require__(92),\n    '2': __webpack_require__(93)\n  },\n  'italic': __webpack_require__(94),\n  'image': __webpack_require__(95),\n  'indent': {\n    '+1': __webpack_require__(96),\n    '-1': __webpack_require__(97)\n  },\n  'link': __webpack_require__(98),\n  'list': {\n    'ordered': __webpack_require__(99),\n    'bullet': __webpack_require__(100),\n    'check': __webpack_require__(101)\n  },\n  'script': {\n    'sub': __webpack_require__(102),\n    'super': __webpack_require__(103)\n  },\n  'strike': __webpack_require__(104),\n  'underline': __webpack_require__(105),\n  'video': __webpack_require__(106)\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n  _inherits(History, _Module);\n\n  function History(quill, options) {\n    _classCallCheck(this, History);\n\n    var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n    _this.lastRecorded = 0;\n    _this.ignoreChange = false;\n    _this.clear();\n    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n      if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n      if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n        _this.record(delta, oldDelta);\n      } else {\n        _this.transform(delta);\n      }\n    });\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n    if (/Win/i.test(navigator.platform)) {\n      _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n    }\n    return _this;\n  }\n\n  _createClass(History, [{\n    key: 'change',\n    value: function change(source, dest) {\n      if (this.stack[source].length === 0) return;\n      var delta = this.stack[source].pop();\n      this.stack[dest].push(delta);\n      this.lastRecorded = 0;\n      this.ignoreChange = true;\n      this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n      this.ignoreChange = false;\n      var index = getLastChangeIndex(delta[source]);\n      this.quill.setSelection(index);\n    }\n  }, {\n    key: 'clear',\n    value: function clear() {\n      this.stack = { undo: [], redo: [] };\n    }\n  }, {\n    key: 'cutoff',\n    value: function cutoff() {\n      this.lastRecorded = 0;\n    }\n  }, {\n    key: 'record',\n    value: function record(changeDelta, oldDelta) {\n      if (changeDelta.ops.length === 0) return;\n      this.stack.redo = [];\n      var undoDelta = this.quill.getContents().diff(oldDelta);\n      var timestamp = Date.now();\n      if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n        var delta = this.stack.undo.pop();\n        undoDelta = undoDelta.compose(delta.undo);\n        changeDelta = delta.redo.compose(changeDelta);\n      } else {\n        this.lastRecorded = timestamp;\n      }\n      this.stack.undo.push({\n        redo: changeDelta,\n        undo: undoDelta\n      });\n      if (this.stack.undo.length > this.options.maxStack) {\n        this.stack.undo.shift();\n      }\n    }\n  }, {\n    key: 'redo',\n    value: function redo() {\n      this.change('redo', 'undo');\n    }\n  }, {\n    key: 'transform',\n    value: function transform(delta) {\n      this.stack.undo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n      this.stack.redo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n    }\n  }, {\n    key: 'undo',\n    value: function undo() {\n      this.change('undo', 'redo');\n    }\n  }]);\n\n  return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n  delay: 1000,\n  maxStack: 100,\n  userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n  var lastOp = delta.ops[delta.ops.length - 1];\n  if (lastOp == null) return false;\n  if (lastOp.insert != null) {\n    return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n  }\n  if (lastOp.attributes != null) {\n    return Object.keys(lastOp.attributes).some(function (attr) {\n      return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n    });\n  }\n  return false;\n}\n\nfunction getLastChangeIndex(delta) {\n  var deleteLength = delta.reduce(function (length, op) {\n    length += op.delete || 0;\n    return length;\n  }, 0);\n  var changeIndex = delta.length() - deleteLength;\n  if (endsWithNewlineChange(delta)) {\n    changeIndex -= 1;\n  }\n  return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n  _inherits(BaseTheme, _Theme);\n\n  function BaseTheme(quill, options) {\n    _classCallCheck(this, BaseTheme);\n\n    var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n    var listener = function listener(e) {\n      if (!document.body.contains(quill.root)) {\n        return document.body.removeEventListener('click', listener);\n      }\n      if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n        _this.tooltip.hide();\n      }\n      if (_this.pickers != null) {\n        _this.pickers.forEach(function (picker) {\n          if (!picker.container.contains(e.target)) {\n            picker.close();\n          }\n        });\n      }\n    };\n    quill.emitter.listenDOM('click', document.body, listener);\n    return _this;\n  }\n\n  _createClass(BaseTheme, [{\n    key: 'addModule',\n    value: function addModule(name) {\n      var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n      if (name === 'toolbar') {\n        this.extendToolbar(module);\n      }\n      return module;\n    }\n  }, {\n    key: 'buildButtons',\n    value: function buildButtons(buttons, icons) {\n      buttons.forEach(function (button) {\n        var className = button.getAttribute('class') || '';\n        className.split(/\\s+/).forEach(function (name) {\n          if (!name.startsWith('ql-')) return;\n          name = name.slice('ql-'.length);\n          if (icons[name] == null) return;\n          if (name === 'direction') {\n            button.innerHTML = icons[name][''] + icons[name]['rtl'];\n          } else if (typeof icons[name] === 'string') {\n            button.innerHTML = icons[name];\n          } else {\n            var value = button.value || '';\n            if (value != null && icons[name][value]) {\n              button.innerHTML = icons[name][value];\n            }\n          }\n        });\n      });\n    }\n  }, {\n    key: 'buildPickers',\n    value: function buildPickers(selects, icons) {\n      var _this2 = this;\n\n      this.pickers = selects.map(function (select) {\n        if (select.classList.contains('ql-align')) {\n          if (select.querySelector('option') == null) {\n            fillSelect(select, ALIGNS);\n          }\n          return new _iconPicker2.default(select, icons.align);\n        } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n          var format = select.classList.contains('ql-background') ? 'background' : 'color';\n          if (select.querySelector('option') == null) {\n            fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n          }\n          return new _colorPicker2.default(select, icons[format]);\n        } else {\n          if (select.querySelector('option') == null) {\n            if (select.classList.contains('ql-font')) {\n              fillSelect(select, FONTS);\n            } else if (select.classList.contains('ql-header')) {\n              fillSelect(select, HEADERS);\n            } else if (select.classList.contains('ql-size')) {\n              fillSelect(select, SIZES);\n            }\n          }\n          return new _picker2.default(select);\n        }\n      });\n      var update = function update() {\n        _this2.pickers.forEach(function (picker) {\n          picker.update();\n        });\n      };\n      this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n    }\n  }]);\n\n  return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        formula: function formula() {\n          this.quill.theme.tooltip.edit('formula');\n        },\n        image: function image() {\n          var _this3 = this;\n\n          var fileInput = this.container.querySelector('input.ql-image[type=file]');\n          if (fileInput == null) {\n            fileInput = document.createElement('input');\n            fileInput.setAttribute('type', 'file');\n            fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n            fileInput.classList.add('ql-image');\n            fileInput.addEventListener('change', function () {\n              if (fileInput.files != null && fileInput.files[0] != null) {\n                var reader = new FileReader();\n                reader.onload = function (e) {\n                  var range = _this3.quill.getSelection(true);\n                  _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n                  _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n                  fileInput.value = \"\";\n                };\n                reader.readAsDataURL(fileInput.files[0]);\n              }\n            });\n            this.container.appendChild(fileInput);\n          }\n          fileInput.click();\n        },\n        video: function video() {\n          this.quill.theme.tooltip.edit('video');\n        }\n      }\n    }\n  }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n  _inherits(BaseTooltip, _Tooltip);\n\n  function BaseTooltip(quill, boundsContainer) {\n    _classCallCheck(this, BaseTooltip);\n\n    var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n    _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n    _this4.listen();\n    return _this4;\n  }\n\n  _createClass(BaseTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this5 = this;\n\n      this.textbox.addEventListener('keydown', function (event) {\n        if (_keyboard2.default.match(event, 'enter')) {\n          _this5.save();\n          event.preventDefault();\n        } else if (_keyboard2.default.match(event, 'escape')) {\n          _this5.cancel();\n          event.preventDefault();\n        }\n      });\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      this.hide();\n    }\n  }, {\n    key: 'edit',\n    value: function edit() {\n      var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n      var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      this.root.classList.remove('ql-hidden');\n      this.root.classList.add('ql-editing');\n      if (preview != null) {\n        this.textbox.value = preview;\n      } else if (mode !== this.root.getAttribute('data-mode')) {\n        this.textbox.value = '';\n      }\n      this.position(this.quill.getBounds(this.quill.selection.savedRange));\n      this.textbox.select();\n      this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n      this.root.setAttribute('data-mode', mode);\n    }\n  }, {\n    key: 'restoreFocus',\n    value: function restoreFocus() {\n      var scrollTop = this.quill.scrollingContainer.scrollTop;\n      this.quill.focus();\n      this.quill.scrollingContainer.scrollTop = scrollTop;\n    }\n  }, {\n    key: 'save',\n    value: function save() {\n      var value = this.textbox.value;\n      switch (this.root.getAttribute('data-mode')) {\n        case 'link':\n          {\n            var scrollTop = this.quill.root.scrollTop;\n            if (this.linkRange) {\n              this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n              delete this.linkRange;\n            } else {\n              this.restoreFocus();\n              this.quill.format('link', value, _emitter2.default.sources.USER);\n            }\n            this.quill.root.scrollTop = scrollTop;\n            break;\n          }\n        case 'video':\n          {\n            value = extractVideoUrl(value);\n          } // eslint-disable-next-line no-fallthrough\n        case 'formula':\n          {\n            if (!value) break;\n            var range = this.quill.getSelection(true);\n            if (range != null) {\n              var index = range.index + range.length;\n              this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n              if (this.root.getAttribute('data-mode') === 'formula') {\n                this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n              }\n              this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n            }\n            break;\n          }\n        default:\n      }\n      this.textbox.value = '';\n      this.hide();\n    }\n  }]);\n\n  return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n  var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n  if (match) {\n    return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n  }\n  if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n    // eslint-disable-line no-cond-assign\n    return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n  }\n  return url;\n}\n\nfunction fillSelect(select, values) {\n  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  values.forEach(function (value) {\n    var option = document.createElement('option');\n    if (value === defaultValue) {\n      option.setAttribute('selected', 'selected');\n    } else {\n      option.setAttribute('value', value);\n    }\n    select.appendChild(option);\n  });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n    function LinkedList() {\n        this.head = this.tail = null;\n        this.length = 0;\n    }\n    LinkedList.prototype.append = function () {\n        var nodes = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            nodes[_i] = arguments[_i];\n        }\n        this.insertBefore(nodes[0], null);\n        if (nodes.length > 1) {\n            this.append.apply(this, nodes.slice(1));\n        }\n    };\n    LinkedList.prototype.contains = function (node) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            if (cur === node)\n                return true;\n        }\n        return false;\n    };\n    LinkedList.prototype.insertBefore = function (node, refNode) {\n        if (!node)\n            return;\n        node.next = refNode;\n        if (refNode != null) {\n            node.prev = refNode.prev;\n            if (refNode.prev != null) {\n                refNode.prev.next = node;\n            }\n            refNode.prev = node;\n            if (refNode === this.head) {\n                this.head = node;\n            }\n        }\n        else if (this.tail != null) {\n            this.tail.next = node;\n            node.prev = this.tail;\n            this.tail = node;\n        }\n        else {\n            node.prev = null;\n            this.head = this.tail = node;\n        }\n        this.length += 1;\n    };\n    LinkedList.prototype.offset = function (target) {\n        var index = 0, cur = this.head;\n        while (cur != null) {\n            if (cur === target)\n                return index;\n            index += cur.length();\n            cur = cur.next;\n        }\n        return -1;\n    };\n    LinkedList.prototype.remove = function (node) {\n        if (!this.contains(node))\n            return;\n        if (node.prev != null)\n            node.prev.next = node.next;\n        if (node.next != null)\n            node.next.prev = node.prev;\n        if (node === this.head)\n            this.head = node.next;\n        if (node === this.tail)\n            this.tail = node.prev;\n        this.length -= 1;\n    };\n    LinkedList.prototype.iterator = function (curNode) {\n        if (curNode === void 0) { curNode = this.head; }\n        // TODO use yield when we can\n        return function () {\n            var ret = curNode;\n            if (curNode != null)\n                curNode = curNode.next;\n            return ret;\n        };\n    };\n    LinkedList.prototype.find = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            var length = cur.length();\n            if (index < length ||\n                (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n                return [cur, index];\n            }\n            index -= length;\n        }\n        return [null, 0];\n    };\n    LinkedList.prototype.forEach = function (callback) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            callback(cur);\n        }\n    };\n    LinkedList.prototype.forEachAt = function (index, length, callback) {\n        if (length <= 0)\n            return;\n        var _a = this.find(index), startNode = _a[0], offset = _a[1];\n        var cur, curIndex = index - offset, next = this.iterator(startNode);\n        while ((cur = next()) && curIndex < index + length) {\n            var curLength = cur.length();\n            if (index > curIndex) {\n                callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n            }\n            else {\n                callback(cur, 0, Math.min(curLength, index + length - curIndex));\n            }\n            curIndex += curLength;\n        }\n    };\n    LinkedList.prototype.map = function (callback) {\n        return this.reduce(function (memo, cur) {\n            memo.push(callback(cur));\n            return memo;\n        }, []);\n    };\n    LinkedList.prototype.reduce = function (callback, memo) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            memo = callback(memo, cur);\n        }\n        return memo;\n    };\n    return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n    attributes: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n    __extends(ScrollBlot, _super);\n    function ScrollBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.scroll = _this;\n        _this.observer = new MutationObserver(function (mutations) {\n            _this.update(mutations);\n        });\n        _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n        _this.attach();\n        return _this;\n    }\n    ScrollBlot.prototype.detach = function () {\n        _super.prototype.detach.call(this);\n        this.observer.disconnect();\n    };\n    ScrollBlot.prototype.deleteAt = function (index, length) {\n        this.update();\n        if (index === 0 && length === this.length()) {\n            this.children.forEach(function (child) {\n                child.remove();\n            });\n        }\n        else {\n            _super.prototype.deleteAt.call(this, index, length);\n        }\n    };\n    ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n        this.update();\n        _super.prototype.formatAt.call(this, index, length, name, value);\n    };\n    ScrollBlot.prototype.insertAt = function (index, value, def) {\n        this.update();\n        _super.prototype.insertAt.call(this, index, value, def);\n    };\n    ScrollBlot.prototype.optimize = function (mutations, context) {\n        var _this = this;\n        if (mutations === void 0) { mutations = []; }\n        if (context === void 0) { context = {}; }\n        _super.prototype.optimize.call(this, context);\n        // We must modify mutations directly, cannot make copy and then modify\n        var records = [].slice.call(this.observer.takeRecords());\n        // Array.push currently seems to be implemented by a non-tail recursive function\n        // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n        while (records.length > 0)\n            mutations.push(records.pop());\n        // TODO use WeakMap\n        var mark = function (blot, markParent) {\n            if (markParent === void 0) { markParent = true; }\n            if (blot == null || blot === _this)\n                return;\n            if (blot.domNode.parentNode == null)\n                return;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [];\n            }\n            if (markParent)\n                mark(blot.parent);\n        };\n        var optimize = function (blot) {\n            // Post-order traversal\n            if (\n            // @ts-ignore\n            blot.domNode[Registry.DATA_KEY] == null ||\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations == null) {\n                return;\n            }\n            if (blot instanceof container_1.default) {\n                blot.children.forEach(optimize);\n            }\n            blot.optimize(context);\n        };\n        var remaining = mutations;\n        for (var i = 0; remaining.length > 0; i += 1) {\n            if (i >= MAX_OPTIMIZE_ITERATIONS) {\n                throw new Error('[Parchment] Maximum optimize iterations reached');\n            }\n            remaining.forEach(function (mutation) {\n                var blot = Registry.find(mutation.target, true);\n                if (blot == null)\n                    return;\n                if (blot.domNode === mutation.target) {\n                    if (mutation.type === 'childList') {\n                        mark(Registry.find(mutation.previousSibling, false));\n                        [].forEach.call(mutation.addedNodes, function (node) {\n                            var child = Registry.find(node, false);\n                            mark(child, false);\n                            if (child instanceof container_1.default) {\n                                child.children.forEach(function (grandChild) {\n                                    mark(grandChild, false);\n                                });\n                            }\n                        });\n                    }\n                    else if (mutation.type === 'attributes') {\n                        mark(blot.prev);\n                    }\n                }\n                mark(blot);\n            });\n            this.children.forEach(optimize);\n            remaining = [].slice.call(this.observer.takeRecords());\n            records = remaining.slice();\n            while (records.length > 0)\n                mutations.push(records.pop());\n        }\n    };\n    ScrollBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (context === void 0) { context = {}; }\n        mutations = mutations || this.observer.takeRecords();\n        // TODO use WeakMap\n        mutations\n            .map(function (mutation) {\n            var blot = Registry.find(mutation.target, true);\n            if (blot == null)\n                return null;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n                return blot;\n            }\n            else {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n                return null;\n            }\n        })\n            .forEach(function (blot) {\n            if (blot == null ||\n                blot === _this ||\n                //@ts-ignore\n                blot.domNode[Registry.DATA_KEY] == null)\n                return;\n            // @ts-ignore\n            blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n        });\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY].mutations != null) {\n            // @ts-ignore\n            _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n        }\n        this.optimize(mutations, context);\n    };\n    ScrollBlot.blotName = 'scroll';\n    ScrollBlot.defaultChild = 'block';\n    ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n    ScrollBlot.tagName = 'DIV';\n    return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n    if (Object.keys(obj1).length !== Object.keys(obj2).length)\n        return false;\n    // @ts-ignore\n    for (var prop in obj1) {\n        // @ts-ignore\n        if (obj1[prop] !== obj2[prop])\n            return false;\n    }\n    return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n    __extends(InlineBlot, _super);\n    function InlineBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    InlineBlot.formats = function (domNode) {\n        if (domNode.tagName === InlineBlot.tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    InlineBlot.prototype.format = function (name, value) {\n        var _this = this;\n        if (name === this.statics.blotName && !value) {\n            this.children.forEach(function (child) {\n                if (!(child instanceof format_1.default)) {\n                    child = child.wrap(InlineBlot.blotName, true);\n                }\n                _this.attributes.copy(child);\n            });\n            this.unwrap();\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    InlineBlot.prototype.formatAt = function (index, length, name, value) {\n        if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n            var blot = this.isolate(index, length);\n            blot.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    InlineBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        var formats = this.formats();\n        if (Object.keys(formats).length === 0) {\n            return this.unwrap(); // unformatted span\n        }\n        var next = this.next;\n        if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n            next.moveChildren(this);\n            next.remove();\n        }\n    };\n    InlineBlot.blotName = 'inline';\n    InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n    InlineBlot.tagName = 'SPAN';\n    return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n    __extends(BlockBlot, _super);\n    function BlockBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    BlockBlot.formats = function (domNode) {\n        var tagName = Registry.query(BlockBlot.blotName).tagName;\n        if (domNode.tagName === tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    BlockBlot.prototype.format = function (name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n            return;\n        }\n        else if (name === this.statics.blotName && !value) {\n            this.replaceWith(BlockBlot.blotName);\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    BlockBlot.prototype.formatAt = function (index, length, name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    BlockBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n            // Insert text or inline\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n        else {\n            var after = this.split(index);\n            var blot = Registry.create(value, def);\n            after.parent.insertBefore(blot, after);\n        }\n    };\n    BlockBlot.prototype.update = function (mutations, context) {\n        if (navigator.userAgent.match(/Trident/)) {\n            this.build();\n        }\n        else {\n            _super.prototype.update.call(this, mutations, context);\n        }\n    };\n    BlockBlot.blotName = 'block';\n    BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n    BlockBlot.tagName = 'P';\n    return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n    __extends(EmbedBlot, _super);\n    function EmbedBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    EmbedBlot.formats = function (domNode) {\n        return undefined;\n    };\n    EmbedBlot.prototype.format = function (name, value) {\n        // super.formatAt wraps, which is what we want in general,\n        // but this allows subclasses to overwrite for formats\n        // that just apply to particular embeds\n        _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n    };\n    EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n        if (index === 0 && length === this.length()) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    EmbedBlot.prototype.formats = function () {\n        return this.statics.formats(this.domNode);\n    };\n    return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n    __extends(TextBlot, _super);\n    function TextBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.text = _this.statics.value(_this.domNode);\n        return _this;\n    }\n    TextBlot.create = function (value) {\n        return document.createTextNode(value);\n    };\n    TextBlot.value = function (domNode) {\n        var text = domNode.data;\n        // @ts-ignore\n        if (text['normalize'])\n            text = text['normalize']();\n        return text;\n    };\n    TextBlot.prototype.deleteAt = function (index, length) {\n        this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n    };\n    TextBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node) {\n            return offset;\n        }\n        return -1;\n    };\n    TextBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null) {\n            this.text = this.text.slice(0, index) + value + this.text.slice(index);\n            this.domNode.data = this.text;\n        }\n        else {\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n    };\n    TextBlot.prototype.length = function () {\n        return this.text.length;\n    };\n    TextBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        this.text = this.statics.value(this.domNode);\n        if (this.text.length === 0) {\n            this.remove();\n        }\n        else if (this.next instanceof TextBlot && this.next.prev === this) {\n            this.insertAt(this.length(), this.next.value());\n            this.next.remove();\n        }\n    };\n    TextBlot.prototype.position = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        return [this.domNode, index];\n    };\n    TextBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = Registry.create(this.domNode.splitText(index));\n        this.parent.insertBefore(after, this.next);\n        this.text = this.statics.value(this.domNode);\n        return after;\n    };\n    TextBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (mutations.some(function (mutation) {\n            return mutation.type === 'characterData' && mutation.target === _this.domNode;\n        })) {\n            this.text = this.statics.value(this.domNode);\n        }\n    };\n    TextBlot.prototype.value = function () {\n        return this.text;\n    };\n    TextBlot.blotName = 'text';\n    TextBlot.scope = Registry.Scope.INLINE_BLOT;\n    return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n  var _toggle = DOMTokenList.prototype.toggle;\n  DOMTokenList.prototype.toggle = function (token, force) {\n    if (arguments.length > 1 && !this.contains(token) === !force) {\n      return force;\n    } else {\n      return _toggle.call(this, token);\n    }\n  };\n}\n\nif (!String.prototype.startsWith) {\n  String.prototype.startsWith = function (searchString, position) {\n    position = position || 0;\n    return this.substr(position, searchString.length) === searchString;\n  };\n}\n\nif (!String.prototype.endsWith) {\n  String.prototype.endsWith = function (searchString, position) {\n    var subjectString = this.toString();\n    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n      position = subjectString.length;\n    }\n    position -= searchString.length;\n    var lastIndex = subjectString.indexOf(searchString, position);\n    return lastIndex !== -1 && lastIndex === position;\n  };\n}\n\nif (!Array.prototype.find) {\n  Object.defineProperty(Array.prototype, \"find\", {\n    value: function value(predicate) {\n      if (this === null) {\n        throw new TypeError('Array.prototype.find called on null or undefined');\n      }\n      if (typeof predicate !== 'function') {\n        throw new TypeError('predicate must be a function');\n      }\n      var list = Object(this);\n      var length = list.length >>> 0;\n      var thisArg = arguments[1];\n      var value;\n\n      for (var i = 0; i < length; i++) {\n        value = list[i];\n        if (predicate.call(thisArg, value, i, list)) {\n          return value;\n        }\n      }\n      return undefined;\n    }\n  });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  // Disable resizing in Firefox\n  document.execCommand(\"enableObjectResizing\", false, false);\n  // Disable automatic linkifying in IE11\n  document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n  // Check for equality (speedup).\n  if (text1 == text2) {\n    if (text1) {\n      return [[DIFF_EQUAL, text1]];\n    }\n    return [];\n  }\n\n  // Check cursor_pos within bounds\n  if (cursor_pos < 0 || text1.length < cursor_pos) {\n    cursor_pos = null;\n  }\n\n  // Trim off common prefix (speedup).\n  var commonlength = diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = diff_compute_(text1, text2);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift([DIFF_EQUAL, commonprefix]);\n  }\n  if (commonsuffix) {\n    diffs.push([DIFF_EQUAL, commonsuffix]);\n  }\n  diff_cleanupMerge(diffs);\n  if (cursor_pos != null) {\n    diffs = fix_cursor(diffs, cursor_pos);\n  }\n  diffs = fix_emoji(diffs);\n  return diffs;\n};\n\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n  var diffs;\n\n  if (!text1) {\n    // Just add some text (speedup).\n    return [[DIFF_INSERT, text2]];\n  }\n\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [[DIFF_DELETE, text1]];\n  }\n\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i != -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n             [DIFF_EQUAL, shorttext],\n             [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n\n  if (shorttext.length == 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = diff_main(text1_a, text2_a);\n    var diffs_b = diff_main(text1_b, text2_b);\n    // Merge the results.\n    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n  }\n\n  return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = (delta % 2 != 0);\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length &&\n             text1.charAt(x1) == text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (x2 < text1_length && y2 < text2_length &&\n             text1.charAt(text1_length - x2 - 1) ==\n             text2.charAt(text2_length - y2 - 1)) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = diff_main(text1a, text2a);\n  var diffsb = diff_main(text1b, text2b);\n\n  return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\nfunction diff_commonPrefix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) ==\n        text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 ||\n      text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n        text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null;  // Pointless.\n  }\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n      var prefixLength = diff_commonPrefix(longtext.substring(i),\n                                           shorttext.substring(j));\n      var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n                                           shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(j - suffixLength, j) +\n            shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [best_longtext_a, best_longtext_b,\n              best_shorttext_a, best_shorttext_b, best_common];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n  diffs.push([DIFF_EQUAL, '']);  // Add a dummy entry at the end.\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if ((pointer - count_delete - count_insert) > 0 &&\n                  diffs[pointer - count_delete - count_insert - 1][0] ==\n                  DIFF_EQUAL) {\n                diffs[pointer - count_delete - count_insert - 1][1] +=\n                    text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, [DIFF_EQUAL,\n                                    text_insert.substring(0, commonlength)]);\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length -\n                  commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length -\n                  commonlength);\n              text_delete = text_delete.substring(0, text_delete.length -\n                  commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          if (count_delete === 0) {\n            diffs.splice(pointer - count_insert,\n                count_delete + count_insert, [DIFF_INSERT, text_insert]);\n          } else if (count_insert === 0) {\n            diffs.splice(pointer - count_delete,\n                count_delete + count_insert, [DIFF_DELETE, text_delete]);\n          } else {\n            diffs.splice(pointer - count_delete - count_insert,\n                count_delete + count_insert, [DIFF_DELETE, text_delete],\n                [DIFF_INSERT, text_insert]);\n          }\n          pointer = pointer - count_delete - count_insert +\n                    (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop();  // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n        diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length -\n          diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] +\n            diffs[pointer][1].substring(0, diffs[pointer][1].length -\n                                        diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n          diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n            diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n *   cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n *     => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n *   cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n *     => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n  if (cursor_pos === 0) {\n    return [DIFF_EQUAL, diffs];\n  }\n  for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n    var d = diffs[i];\n    if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n      var next_pos = current_pos + d[1].length;\n      if (cursor_pos === next_pos) {\n        return [i + 1, diffs];\n      } else if (cursor_pos < next_pos) {\n        // copy to prevent side effects\n        diffs = diffs.slice();\n        // split d into two diff changes\n        var split_pos = cursor_pos - current_pos;\n        var d_left = [d[0], d[1].slice(0, split_pos)];\n        var d_right = [d[0], d[1].slice(split_pos)];\n        diffs.splice(i, 1, d_left, d_right);\n        return [i + 1, diffs];\n      } else {\n        current_pos = next_pos;\n      }\n    }\n  }\n  throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n *   Check if a naive shift is possible:\n *     [0, X], [ 1, Y] -> [ 1, Y], [0, X]    (if X + Y === Y + X)\n *     [0, X], [-1, Y] -> [-1, Y], [0, X]    (if X + Y === Y + X) - holds same result\n * Case 2)\n *   Check if the following shifts are possible:\n *     [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n *     [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n *         ^            ^\n *         d          d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n  var norm = cursor_normalize_diff(diffs, cursor_pos);\n  var ndiffs = norm[1];\n  var cursor_pointer = norm[0];\n  var d = ndiffs[cursor_pointer];\n  var d_next = ndiffs[cursor_pointer + 1];\n\n  if (d == null) {\n    // Text was deleted from end of original string,\n    // cursor is now out of bounds in new string\n    return diffs;\n  } else if (d[0] !== DIFF_EQUAL) {\n    // A modification happened at the cursor location.\n    // This is the expected outcome, so we can return the original diff.\n    return diffs;\n  } else {\n    if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n      // Case 1)\n      // It is possible to perform a naive shift\n      ndiffs.splice(cursor_pointer, 2, d_next, d)\n      return merge_tuples(ndiffs, cursor_pointer, 2)\n    } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n      // Case 2)\n      // d[1] is a prefix of d_next[1]\n      // We can assume that d_next[0] !== 0, since d[0] === 0\n      // Shift edit locations..\n      ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n      var suffix = d_next[1].slice(d[1].length);\n      if (suffix.length > 0) {\n        ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n      }\n      return merge_tuples(ndiffs, cursor_pointer, 3)\n    } else {\n      // Not possible to perform any modification\n      return diffs;\n    }\n  }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n *     '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n  var compact = false;\n  var starts_with_pair_end = function(str) {\n    return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n  }\n  var ends_with_pair_start = function(str) {\n    return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n  }\n  for (var i = 2; i < diffs.length; i += 1) {\n    if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n        diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n        diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n      compact = true;\n\n      diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n      diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n      diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n    }\n  }\n  if (!compact) {\n    return diffs;\n  }\n  var fixed_diffs = [];\n  for (var i = 0; i < diffs.length; i += 1) {\n    if (diffs[i][1].length > 0) {\n      fixed_diffs.push(diffs[i]);\n    }\n  }\n  return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n  // Check from (start-1) to (start+length).\n  for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n    if (i + 1 < diffs.length) {\n      var left_d = diffs[i];\n      var right_d = diffs[i+1];\n      if (left_d[0] === right_d[1]) {\n        diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n      }\n    }\n  }\n  return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n  var evt = prefix ? prefix + event : event\n    , available = this._events[evt];\n\n  if (exists) return !!available;\n  if (!available) return [];\n  if (available.fn) return [available.fn];\n\n  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n    ee[i] = available[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  var listener = new EE(fn, context || this)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  var listener = new EE(fn, context || this, true)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n         listeners.fn === fn\n      && (!once || listeners.once)\n      && (!context || listeners.context === context)\n    ) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n           listeners[i].fn !== fn\n        || (once && !listeners[i].once)\n        || (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n  return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n  _inherits(Clipboard, _Module);\n\n  function Clipboard(quill, options) {\n    _classCallCheck(this, Clipboard);\n\n    var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n    _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n    _this.container = _this.quill.addContainer('ql-clipboard');\n    _this.container.setAttribute('contenteditable', true);\n    _this.container.setAttribute('tabindex', -1);\n    _this.matchers = [];\n    CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          selector = _ref2[0],\n          matcher = _ref2[1];\n\n      if (!options.matchVisual && matcher === matchSpacing) return;\n      _this.addMatcher(selector, matcher);\n    });\n    return _this;\n  }\n\n  _createClass(Clipboard, [{\n    key: 'addMatcher',\n    value: function addMatcher(selector, matcher) {\n      this.matchers.push([selector, matcher]);\n    }\n  }, {\n    key: 'convert',\n    value: function convert(html) {\n      if (typeof html === 'string') {\n        this.container.innerHTML = html.replace(/\\>\\r?\\n +\\</g, '><'); // Remove spaces between tags\n        return this.convert();\n      }\n      var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n      if (formats[_code2.default.blotName]) {\n        var text = this.container.innerText;\n        this.container.innerHTML = '';\n        return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n      }\n\n      var _prepareMatching = this.prepareMatching(),\n          _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n          elementMatchers = _prepareMatching2[0],\n          textMatchers = _prepareMatching2[1];\n\n      var delta = traverse(this.container, elementMatchers, textMatchers);\n      // Remove trailing newline\n      if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n        delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n      }\n      debug.log('convert', this.container.innerHTML, delta);\n      this.container.innerHTML = '';\n      return delta;\n    }\n  }, {\n    key: 'dangerouslyPasteHTML',\n    value: function dangerouslyPasteHTML(index, html) {\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n      if (typeof index === 'string') {\n        this.quill.setContents(this.convert(index), html);\n        this.quill.setSelection(0, _quill2.default.sources.SILENT);\n      } else {\n        var paste = this.convert(html);\n        this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n        this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n      }\n    }\n  }, {\n    key: 'onPaste',\n    value: function onPaste(e) {\n      var _this2 = this;\n\n      if (e.defaultPrevented || !this.quill.isEnabled()) return;\n      var range = this.quill.getSelection();\n      var delta = new _quillDelta2.default().retain(range.index);\n      var scrollTop = this.quill.scrollingContainer.scrollTop;\n      this.container.focus();\n      this.quill.selection.update(_quill2.default.sources.SILENT);\n      setTimeout(function () {\n        delta = delta.concat(_this2.convert()).delete(range.length);\n        _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n        // range.length contributes to delta.length()\n        _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n        _this2.quill.scrollingContainer.scrollTop = scrollTop;\n        _this2.quill.focus();\n      }, 1);\n    }\n  }, {\n    key: 'prepareMatching',\n    value: function prepareMatching() {\n      var _this3 = this;\n\n      var elementMatchers = [],\n          textMatchers = [];\n      this.matchers.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            selector = _pair[0],\n            matcher = _pair[1];\n\n        switch (selector) {\n          case Node.TEXT_NODE:\n            textMatchers.push(matcher);\n            break;\n          case Node.ELEMENT_NODE:\n            elementMatchers.push(matcher);\n            break;\n          default:\n            [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n              // TODO use weakmap\n              node[DOM_KEY] = node[DOM_KEY] || [];\n              node[DOM_KEY].push(matcher);\n            });\n            break;\n        }\n      });\n      return [elementMatchers, textMatchers];\n    }\n  }]);\n\n  return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n  matchers: [],\n  matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n  if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n    return Object.keys(format).reduce(function (delta, key) {\n      return applyFormat(delta, key, format[key]);\n    }, delta);\n  } else {\n    return delta.reduce(function (delta, op) {\n      if (op.attributes && op.attributes[format]) {\n        return delta.push(op);\n      } else {\n        return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n      }\n    }, new _quillDelta2.default());\n  }\n}\n\nfunction computeStyle(node) {\n  if (node.nodeType !== Node.ELEMENT_NODE) return {};\n  var DOM_KEY = '__ql-computed-style';\n  return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n  var endText = \"\";\n  for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n    var op = delta.ops[i];\n    if (typeof op.insert !== 'string') break;\n    endText = op.insert + endText;\n  }\n  return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n  if (node.childNodes.length === 0) return false; // Exclude embed blocks\n  var style = computeStyle(node);\n  return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n  // Post-order\n  if (node.nodeType === node.TEXT_NODE) {\n    return textMatchers.reduce(function (delta, matcher) {\n      return matcher(node, delta);\n    }, new _quillDelta2.default());\n  } else if (node.nodeType === node.ELEMENT_NODE) {\n    return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n      var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n      if (childNode.nodeType === node.ELEMENT_NODE) {\n        childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n        childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n      }\n      return delta.concat(childrenDelta);\n    }, new _quillDelta2.default());\n  } else {\n    return new _quillDelta2.default();\n  }\n}\n\nfunction matchAlias(format, node, delta) {\n  return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n  var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n  var classes = _parchment2.default.Attributor.Class.keys(node);\n  var styles = _parchment2.default.Attributor.Style.keys(node);\n  var formats = {};\n  attributes.concat(classes).concat(styles).forEach(function (name) {\n    var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n    if (attr != null) {\n      formats[attr.attrName] = attr.value(node);\n      if (formats[attr.attrName]) return;\n    }\n    attr = ATTRIBUTE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n    attr = STYLE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      attr = STYLE_ATTRIBUTORS[name];\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n  });\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  return delta;\n}\n\nfunction matchBlot(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null) return delta;\n  if (match.prototype instanceof _parchment2.default.Embed) {\n    var embed = {};\n    var value = match.value(node);\n    if (value != null) {\n      embed[match.blotName] = value;\n      delta = new _quillDelta2.default().insert(embed, match.formats(node));\n    }\n  } else if (typeof match.formats === 'function') {\n    delta = applyFormat(delta, match.blotName, match.formats(node));\n  }\n  return delta;\n}\n\nfunction matchBreak(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    delta.insert('\\n');\n  }\n  return delta;\n}\n\nfunction matchIgnore() {\n  return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n    return delta;\n  }\n  var indent = -1,\n      parent = node.parentNode;\n  while (!parent.classList.contains('ql-clipboard')) {\n    if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n      indent += 1;\n    }\n    parent = parent.parentNode;\n  }\n  if (indent <= 0) return delta;\n  return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchSpacing(node, delta) {\n  if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n    var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n    if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchStyles(node, delta) {\n  var formats = {};\n  var style = node.style || {};\n  if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n    formats.italic = true;\n  }\n  if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n    formats.bold = true;\n  }\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  if (parseFloat(style.textIndent || 0) > 0) {\n    // Could be 0.5in\n    delta = new _quillDelta2.default().insert('\\t').concat(delta);\n  }\n  return delta;\n}\n\nfunction matchText(node, delta) {\n  var text = node.data;\n  // Word represents empty line with <o:p>&nbsp;</o:p>\n  if (node.parentNode.tagName === 'O:P') {\n    return delta.insert(text.trim());\n  }\n  if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n    return delta;\n  }\n  if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n    // eslint-disable-next-line func-style\n    var replacer = function replacer(collapse, match) {\n      match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n      return match.length < 1 && collapse ? ' ' : match;\n    };\n    text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n    text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n    if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n      text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n    }\n    if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n      text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n    }\n  }\n  return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Bold = function (_Inline) {\n  _inherits(Bold, _Inline);\n\n  function Bold() {\n    _classCallCheck(this, Bold);\n\n    return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n  }\n\n  _createClass(Bold, [{\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n      if (this.domNode.tagName !== this.statics.tagName[0]) {\n        this.replaceWith(this.statics.blotName);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create() {\n      return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n  _inherits(Toolbar, _Module);\n\n  function Toolbar(quill, options) {\n    _classCallCheck(this, Toolbar);\n\n    var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n    if (Array.isArray(_this.options.container)) {\n      var container = document.createElement('div');\n      addControls(container, _this.options.container);\n      quill.container.parentNode.insertBefore(container, quill.container);\n      _this.container = container;\n    } else if (typeof _this.options.container === 'string') {\n      _this.container = document.querySelector(_this.options.container);\n    } else {\n      _this.container = _this.options.container;\n    }\n    if (!(_this.container instanceof HTMLElement)) {\n      var _ret;\n\n      return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n    }\n    _this.container.classList.add('ql-toolbar');\n    _this.controls = [];\n    _this.handlers = {};\n    Object.keys(_this.options.handlers).forEach(function (format) {\n      _this.addHandler(format, _this.options.handlers[format]);\n    });\n    [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n      _this.attach(input);\n    });\n    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n      if (type === _quill2.default.events.SELECTION_CHANGE) {\n        _this.update(range);\n      }\n    });\n    _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n      var _this$quill$selection = _this.quill.selection.getRange(),\n          _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n          range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n      _this.update(range);\n    });\n    return _this;\n  }\n\n  _createClass(Toolbar, [{\n    key: 'addHandler',\n    value: function addHandler(format, handler) {\n      this.handlers[format] = handler;\n    }\n  }, {\n    key: 'attach',\n    value: function attach(input) {\n      var _this2 = this;\n\n      var format = [].find.call(input.classList, function (className) {\n        return className.indexOf('ql-') === 0;\n      });\n      if (!format) return;\n      format = format.slice('ql-'.length);\n      if (input.tagName === 'BUTTON') {\n        input.setAttribute('type', 'button');\n      }\n      if (this.handlers[format] == null) {\n        if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n          debug.warn('ignoring attaching to disabled format', format, input);\n          return;\n        }\n        if (_parchment2.default.query(format) == null) {\n          debug.warn('ignoring attaching to nonexistent format', format, input);\n          return;\n        }\n      }\n      var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n      input.addEventListener(eventName, function (e) {\n        var value = void 0;\n        if (input.tagName === 'SELECT') {\n          if (input.selectedIndex < 0) return;\n          var selected = input.options[input.selectedIndex];\n          if (selected.hasAttribute('selected')) {\n            value = false;\n          } else {\n            value = selected.value || false;\n          }\n        } else {\n          if (input.classList.contains('ql-active')) {\n            value = false;\n          } else {\n            value = input.value || !input.hasAttribute('value');\n          }\n          e.preventDefault();\n        }\n        _this2.quill.focus();\n\n        var _quill$selection$getR = _this2.quill.selection.getRange(),\n            _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n            range = _quill$selection$getR2[0];\n\n        if (_this2.handlers[format] != null) {\n          _this2.handlers[format].call(_this2, value);\n        } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n          value = prompt('Enter ' + format);\n          if (!value) return;\n          _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n        } else {\n          _this2.quill.format(format, value, _quill2.default.sources.USER);\n        }\n        _this2.update(range);\n      });\n      // TODO use weakmap\n      this.controls.push([format, input]);\n    }\n  }, {\n    key: 'update',\n    value: function update(range) {\n      var formats = range == null ? {} : this.quill.getFormat(range);\n      this.controls.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            format = _pair[0],\n            input = _pair[1];\n\n        if (input.tagName === 'SELECT') {\n          var option = void 0;\n          if (range == null) {\n            option = null;\n          } else if (formats[format] == null) {\n            option = input.querySelector('option[selected]');\n          } else if (!Array.isArray(formats[format])) {\n            var value = formats[format];\n            if (typeof value === 'string') {\n              value = value.replace(/\\\"/g, '\\\\\"');\n            }\n            option = input.querySelector('option[value=\"' + value + '\"]');\n          }\n          if (option == null) {\n            input.value = ''; // TODO make configurable?\n            input.selectedIndex = -1;\n          } else {\n            option.selected = true;\n          }\n        } else {\n          if (range == null) {\n            input.classList.remove('ql-active');\n          } else if (input.hasAttribute('value')) {\n            // both being null should match (default values)\n            // '1' should match with 1 (headers)\n            var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n            input.classList.toggle('ql-active', isActive);\n          } else {\n            input.classList.toggle('ql-active', formats[format] != null);\n          }\n        }\n      });\n    }\n  }]);\n\n  return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n  var input = document.createElement('button');\n  input.setAttribute('type', 'button');\n  input.classList.add('ql-' + format);\n  if (value != null) {\n    input.value = value;\n  }\n  container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n  if (!Array.isArray(groups[0])) {\n    groups = [groups];\n  }\n  groups.forEach(function (controls) {\n    var group = document.createElement('span');\n    group.classList.add('ql-formats');\n    controls.forEach(function (control) {\n      if (typeof control === 'string') {\n        addButton(group, control);\n      } else {\n        var format = Object.keys(control)[0];\n        var value = control[format];\n        if (Array.isArray(value)) {\n          addSelect(group, format, value);\n        } else {\n          addButton(group, format, value);\n        }\n      }\n    });\n    container.appendChild(group);\n  });\n}\n\nfunction addSelect(container, format, values) {\n  var input = document.createElement('select');\n  input.classList.add('ql-' + format);\n  values.forEach(function (value) {\n    var option = document.createElement('option');\n    if (value !== false) {\n      option.setAttribute('value', value);\n    } else {\n      option.setAttribute('selected', 'selected');\n    }\n    input.appendChild(option);\n  });\n  container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n  container: null,\n  handlers: {\n    clean: function clean() {\n      var _this3 = this;\n\n      var range = this.quill.getSelection();\n      if (range == null) return;\n      if (range.length == 0) {\n        var formats = this.quill.getFormat();\n        Object.keys(formats).forEach(function (name) {\n          // Clean functionality in existing apps only clean inline formats\n          if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n            _this3.quill.format(name, false);\n          }\n        });\n      } else {\n        this.quill.removeFormat(range, _quill2.default.sources.USER);\n      }\n    },\n    direction: function direction(value) {\n      var align = this.quill.getFormat()['align'];\n      if (value === 'rtl' && align == null) {\n        this.quill.format('align', 'right', _quill2.default.sources.USER);\n      } else if (!value && align === 'right') {\n        this.quill.format('align', false, _quill2.default.sources.USER);\n      }\n      this.quill.format('direction', value, _quill2.default.sources.USER);\n    },\n    indent: function indent(value) {\n      var range = this.quill.getSelection();\n      var formats = this.quill.getFormat(range);\n      var indent = parseInt(formats.indent || 0);\n      if (value === '+1' || value === '-1') {\n        var modifier = value === '+1' ? 1 : -1;\n        if (formats.direction === 'rtl') modifier *= -1;\n        this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n      }\n    },\n    link: function link(value) {\n      if (value === true) {\n        value = prompt('Enter link URL:');\n      }\n      this.quill.format('link', value, _quill2.default.sources.USER);\n    },\n    list: function list(value) {\n      var range = this.quill.getSelection();\n      var formats = this.quill.getFormat(range);\n      if (value === 'check') {\n        if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n          this.quill.format('list', false, _quill2.default.sources.USER);\n        } else {\n          this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n        }\n      } else {\n        this.quill.format('list', value, _quill2.default.sources.USER);\n      }\n    }\n  }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"5 7 3 9 5 11\\\"></polyline> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"13 7 15 9 13 11\\\"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>\";\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorPicker = function (_Picker) {\n  _inherits(ColorPicker, _Picker);\n\n  function ColorPicker(select, label) {\n    _classCallCheck(this, ColorPicker);\n\n    var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n    _this.label.innerHTML = label;\n    _this.container.classList.add('ql-color-picker');\n    [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n      item.classList.add('ql-primary');\n    });\n    return _this;\n  }\n\n  _createClass(ColorPicker, [{\n    key: 'buildItem',\n    value: function buildItem(option) {\n      var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n      item.style.backgroundColor = option.getAttribute('value') || '';\n      return item;\n    }\n  }, {\n    key: 'selectItem',\n    value: function selectItem(item, trigger) {\n      _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n      var colorLabel = this.label.querySelector('.ql-color-label');\n      var value = item ? item.getAttribute('data-value') || '' : '';\n      if (colorLabel) {\n        if (colorLabel.tagName === 'line') {\n          colorLabel.style.stroke = value;\n        } else {\n          colorLabel.style.fill = value;\n        }\n      }\n    }\n  }]);\n\n  return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IconPicker = function (_Picker) {\n  _inherits(IconPicker, _Picker);\n\n  function IconPicker(select, icons) {\n    _classCallCheck(this, IconPicker);\n\n    var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n    _this.container.classList.add('ql-icon-picker');\n    [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n      item.innerHTML = icons[item.getAttribute('data-value') || ''];\n    });\n    _this.defaultItem = _this.container.querySelector('.ql-selected');\n    _this.selectItem(_this.defaultItem);\n    return _this;\n  }\n\n  _createClass(IconPicker, [{\n    key: 'selectItem',\n    value: function selectItem(item, trigger) {\n      _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n      item = item || this.defaultItem;\n      this.label.innerHTML = item.innerHTML;\n    }\n  }]);\n\n  return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n  function Tooltip(quill, boundsContainer) {\n    var _this = this;\n\n    _classCallCheck(this, Tooltip);\n\n    this.quill = quill;\n    this.boundsContainer = boundsContainer || document.body;\n    this.root = quill.addContainer('ql-tooltip');\n    this.root.innerHTML = this.constructor.TEMPLATE;\n    if (this.quill.root === this.quill.scrollingContainer) {\n      this.quill.root.addEventListener('scroll', function () {\n        _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n      });\n    }\n    this.hide();\n  }\n\n  _createClass(Tooltip, [{\n    key: 'hide',\n    value: function hide() {\n      this.root.classList.add('ql-hidden');\n    }\n  }, {\n    key: 'position',\n    value: function position(reference) {\n      var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n      // root.scrollTop should be 0 if scrollContainer !== root\n      var top = reference.bottom + this.quill.root.scrollTop;\n      this.root.style.left = left + 'px';\n      this.root.style.top = top + 'px';\n      this.root.classList.remove('ql-flip');\n      var containerBounds = this.boundsContainer.getBoundingClientRect();\n      var rootBounds = this.root.getBoundingClientRect();\n      var shift = 0;\n      if (rootBounds.right > containerBounds.right) {\n        shift = containerBounds.right - rootBounds.right;\n        this.root.style.left = left + shift + 'px';\n      }\n      if (rootBounds.left < containerBounds.left) {\n        shift = containerBounds.left - rootBounds.left;\n        this.root.style.left = left + shift + 'px';\n      }\n      if (rootBounds.bottom > containerBounds.bottom) {\n        var height = rootBounds.bottom - rootBounds.top;\n        var verticalShift = reference.bottom - reference.top + height;\n        this.root.style.top = top - verticalShift + 'px';\n        this.root.classList.add('ql-flip');\n      }\n      return shift;\n    }\n  }, {\n    key: 'show',\n    value: function show() {\n      this.root.classList.remove('ql-editing');\n      this.root.classList.remove('ql-hidden');\n    }\n  }]);\n\n  return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n  _inherits(SnowTheme, _BaseTheme);\n\n  function SnowTheme(quill, options) {\n    _classCallCheck(this, SnowTheme);\n\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n\n    var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n    _this.quill.container.classList.add('ql-snow');\n    return _this;\n  }\n\n  _createClass(SnowTheme, [{\n    key: 'extendToolbar',\n    value: function extendToolbar(toolbar) {\n      toolbar.container.classList.add('ql-snow');\n      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n      this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n      if (toolbar.container.querySelector('.ql-link')) {\n        this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n          toolbar.handlers['link'].call(toolbar, !context.format.link);\n        });\n      }\n    }\n  }]);\n\n  return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function link(value) {\n          if (value) {\n            var range = this.quill.getSelection();\n            if (range == null || range.length == 0) return;\n            var preview = this.quill.getText(range);\n            if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n              preview = 'mailto:' + preview;\n            }\n            var tooltip = this.quill.theme.tooltip;\n            tooltip.edit('link', preview);\n          } else {\n            this.quill.format('link', false);\n          }\n        }\n      }\n    }\n  }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n  _inherits(SnowTooltip, _BaseTooltip);\n\n  function SnowTooltip(quill, bounds) {\n    _classCallCheck(this, SnowTooltip);\n\n    var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n    _this2.preview = _this2.root.querySelector('a.ql-preview');\n    return _this2;\n  }\n\n  _createClass(SnowTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this3 = this;\n\n      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n      this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n        if (_this3.root.classList.contains('ql-editing')) {\n          _this3.save();\n        } else {\n          _this3.edit('link', _this3.preview.textContent);\n        }\n        event.preventDefault();\n      });\n      this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n        if (_this3.linkRange != null) {\n          var range = _this3.linkRange;\n          _this3.restoreFocus();\n          _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n          delete _this3.linkRange;\n        }\n        event.preventDefault();\n        _this3.hide();\n      });\n      this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n        if (range == null) return;\n        if (range.length === 0 && source === _emitter2.default.sources.USER) {\n          var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n              _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n              link = _quill$scroll$descend2[0],\n              offset = _quill$scroll$descend2[1];\n\n          if (link != null) {\n            _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n            var preview = _link2.default.formats(link.domNode);\n            _this3.preview.textContent = preview;\n            _this3.preview.setAttribute('href', preview);\n            _this3.show();\n            _this3.position(_this3.quill.getBounds(_this3.linkRange));\n            return;\n          }\n        } else {\n          delete _this3.linkRange;\n        }\n        _this3.hide();\n      });\n    }\n  }, {\n    key: 'show',\n    value: function show() {\n      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n      this.root.removeAttribute('data-mode');\n    }\n  }]);\n\n  return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['<a class=\"ql-preview\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"about:blank\"></a>', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-action\"></a>', '<a class=\"ql-remove\"></a>'].join('');\n\nexports.default = SnowTheme;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _core = __webpack_require__(29);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(36);\n\nvar _direction = __webpack_require__(38);\n\nvar _indent = __webpack_require__(64);\n\nvar _blockquote = __webpack_require__(65);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(66);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(67);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(68);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(69);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(70);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(71);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(72);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(73);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(74);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(75);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(57);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(108);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(62);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n  'attributors/attribute/direction': _direction.DirectionAttribute,\n\n  'attributors/class/align': _align.AlignClass,\n  'attributors/class/background': _background.BackgroundClass,\n  'attributors/class/color': _color.ColorClass,\n  'attributors/class/direction': _direction.DirectionClass,\n  'attributors/class/font': _font.FontClass,\n  'attributors/class/size': _size.SizeClass,\n\n  'attributors/style/align': _align.AlignStyle,\n  'attributors/style/background': _background.BackgroundStyle,\n  'attributors/style/color': _color.ColorStyle,\n  'attributors/style/direction': _direction.DirectionStyle,\n  'attributors/style/font': _font.FontStyle,\n  'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n  'formats/align': _align.AlignClass,\n  'formats/direction': _direction.DirectionClass,\n  'formats/indent': _indent.IndentClass,\n\n  'formats/background': _background.BackgroundStyle,\n  'formats/color': _color.ColorStyle,\n  'formats/font': _font.FontClass,\n  'formats/size': _size.SizeClass,\n\n  'formats/blockquote': _blockquote2.default,\n  'formats/code-block': _code2.default,\n  'formats/header': _header2.default,\n  'formats/list': _list2.default,\n\n  'formats/bold': _bold2.default,\n  'formats/code': _code.Code,\n  'formats/italic': _italic2.default,\n  'formats/link': _link2.default,\n  'formats/script': _script2.default,\n  'formats/strike': _strike2.default,\n  'formats/underline': _underline2.default,\n\n  'formats/image': _image2.default,\n  'formats/video': _video2.default,\n\n  'formats/list/item': _list.ListItem,\n\n  'modules/formula': _formula2.default,\n  'modules/syntax': _syntax2.default,\n  'modules/toolbar': _toolbar2.default,\n\n  'themes/bubble': _bubble2.default,\n  'themes/snow': _snow2.default,\n\n  'ui/icons': _icons2.default,\n  'ui/picker': _picker2.default,\n  'ui/icon-picker': _iconPicker2.default,\n  'ui/color-picker': _colorPicker2.default,\n  'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IdentAttributor = function (_Parchment$Attributor) {\n  _inherits(IdentAttributor, _Parchment$Attributor);\n\n  function IdentAttributor() {\n    _classCallCheck(this, IdentAttributor);\n\n    return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n  }\n\n  _createClass(IdentAttributor, [{\n    key: 'add',\n    value: function add(node, value) {\n      if (value === '+1' || value === '-1') {\n        var indent = this.value(node) || 0;\n        value = value === '+1' ? indent + 1 : indent - 1;\n      }\n      if (value === 0) {\n        this.remove(node);\n        return true;\n      } else {\n        return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n      }\n    }\n  }, {\n    key: 'canAdd',\n    value: function canAdd(node, value) {\n      return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n    }\n  }, {\n    key: 'value',\n    value: function value(node) {\n      return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n    }\n  }]);\n\n  return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Blockquote = function (_Block) {\n  _inherits(Blockquote, _Block);\n\n  function Blockquote() {\n    _classCallCheck(this, Blockquote);\n\n    return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n  }\n\n  return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Block) {\n  _inherits(Header, _Block);\n\n  function Header() {\n    _classCallCheck(this, Header);\n\n    return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n  }\n\n  _createClass(Header, null, [{\n    key: 'formats',\n    value: function formats(domNode) {\n      return this.tagName.indexOf(domNode.tagName) + 1;\n    }\n  }]);\n\n  return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListItem = function (_Block) {\n  _inherits(ListItem, _Block);\n\n  function ListItem() {\n    _classCallCheck(this, ListItem);\n\n    return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n  }\n\n  _createClass(ListItem, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (name === List.blotName && !value) {\n        this.replaceWith(_parchment2.default.create(this.statics.scope));\n      } else {\n        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      if (this.prev == null && this.next == null) {\n        this.parent.remove();\n      } else {\n        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n      }\n    }\n  }, {\n    key: 'replaceWith',\n    value: function replaceWith(name, value) {\n      this.parent.isolate(this.offset(this.parent), this.length());\n      if (name === this.parent.statics.blotName) {\n        this.parent.replaceWith(name, value);\n        return this;\n      } else {\n        this.parent.unwrap();\n        return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'formats',\n    value: function formats(domNode) {\n      return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n    }\n  }]);\n\n  return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n  _inherits(List, _Container);\n\n  _createClass(List, null, [{\n    key: 'create',\n    value: function create(value) {\n      var tagName = value === 'ordered' ? 'OL' : 'UL';\n      var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n      if (value === 'checked' || value === 'unchecked') {\n        node.setAttribute('data-checked', value === 'checked');\n      }\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      if (domNode.tagName === 'OL') return 'ordered';\n      if (domNode.tagName === 'UL') {\n        if (domNode.hasAttribute('data-checked')) {\n          return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n        } else {\n          return 'bullet';\n        }\n      }\n      return undefined;\n    }\n  }]);\n\n  function List(domNode) {\n    _classCallCheck(this, List);\n\n    var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n    var listEventHandler = function listEventHandler(e) {\n      if (e.target.parentNode !== domNode) return;\n      var format = _this2.statics.formats(domNode);\n      var blot = _parchment2.default.find(e.target);\n      if (format === 'checked') {\n        blot.format('list', 'unchecked');\n      } else if (format === 'unchecked') {\n        blot.format('list', 'checked');\n      }\n    };\n\n    domNode.addEventListener('touchstart', listEventHandler);\n    domNode.addEventListener('mousedown', listEventHandler);\n    return _this2;\n  }\n\n  _createClass(List, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (this.children.length > 0) {\n        this.children.tail.format(name, value);\n      }\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      // We don't inherit from FormatBlot\n      return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      if (blot instanceof ListItem) {\n        _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n      } else {\n        var index = ref == null ? this.length() : ref.offset(this);\n        var after = this.split(index);\n        after.parent.insertBefore(blot, after);\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n      var next = this.next;\n      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n        next.moveChildren(this);\n        next.remove();\n      }\n    }\n  }, {\n    key: 'replace',\n    value: function replace(target) {\n      if (target.statics.blotName !== this.statics.blotName) {\n        var item = _parchment2.default.create(this.statics.defaultChild);\n        target.moveChildren(item);\n        this.appendChild(item);\n      }\n      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n    }\n  }]);\n\n  return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Italic = function (_Bold) {\n  _inherits(Italic, _Bold);\n\n  function Italic() {\n    _classCallCheck(this, Italic);\n\n    return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n  }\n\n  return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Script = function (_Inline) {\n  _inherits(Script, _Inline);\n\n  function Script() {\n    _classCallCheck(this, Script);\n\n    return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n  }\n\n  _createClass(Script, null, [{\n    key: 'create',\n    value: function create(value) {\n      if (value === 'super') {\n        return document.createElement('sup');\n      } else if (value === 'sub') {\n        return document.createElement('sub');\n      } else {\n        return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n      }\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      if (domNode.tagName === 'SUB') return 'sub';\n      if (domNode.tagName === 'SUP') return 'super';\n      return undefined;\n    }\n  }]);\n\n  return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Strike = function (_Inline) {\n  _inherits(Strike, _Inline);\n\n  function Strike() {\n    _classCallCheck(this, Strike);\n\n    return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n  }\n\n  return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Underline = function (_Inline) {\n  _inherits(Underline, _Inline);\n\n  function Underline() {\n    _classCallCheck(this, Underline);\n\n    return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n  }\n\n  return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n  _inherits(Image, _Parchment$Embed);\n\n  function Image() {\n    _classCallCheck(this, Image);\n\n    return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n  }\n\n  _createClass(Image, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n      if (typeof value === 'string') {\n        node.setAttribute('src', this.sanitize(value));\n      }\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n        return formats;\n      }, {});\n    }\n  }, {\n    key: 'match',\n    value: function match(url) {\n      return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n      );\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(4);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n  _inherits(Video, _BlockEmbed);\n\n  function Video() {\n    _classCallCheck(this, Video);\n\n    return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n  }\n\n  _createClass(Video, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n      node.setAttribute('frameborder', '0');\n      node.setAttribute('allowfullscreen', true);\n      node.setAttribute('src', this.sanitize(value));\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n        return formats;\n      }, {});\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return _link2.default.sanitize(url);\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FormulaBlot = function (_Embed) {\n  _inherits(FormulaBlot, _Embed);\n\n  function FormulaBlot() {\n    _classCallCheck(this, FormulaBlot);\n\n    return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n  }\n\n  _createClass(FormulaBlot, null, [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n      if (typeof value === 'string') {\n        window.katex.render(value, node, {\n          throwOnError: false,\n          errorColor: '#f00'\n        });\n        node.setAttribute('data-value', value);\n      }\n      return node;\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('data-value');\n    }\n  }]);\n\n  return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n  _inherits(Formula, _Module);\n\n  _createClass(Formula, null, [{\n    key: 'register',\n    value: function register() {\n      _quill2.default.register(FormulaBlot, true);\n    }\n  }]);\n\n  function Formula() {\n    _classCallCheck(this, Formula);\n\n    var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n    if (window.katex == null) {\n      throw new Error('Formula module requires KaTeX.');\n    }\n    return _this2;\n  }\n\n  return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SyntaxCodeBlock = function (_CodeBlock) {\n  _inherits(SyntaxCodeBlock, _CodeBlock);\n\n  function SyntaxCodeBlock() {\n    _classCallCheck(this, SyntaxCodeBlock);\n\n    return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n  }\n\n  _createClass(SyntaxCodeBlock, [{\n    key: 'replaceWith',\n    value: function replaceWith(block) {\n      this.domNode.textContent = this.domNode.textContent;\n      this.attach();\n      _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n    }\n  }, {\n    key: 'highlight',\n    value: function highlight(_highlight) {\n      var text = this.domNode.textContent;\n      if (this.cachedText !== text) {\n        if (text.trim().length > 0 || this.cachedText == null) {\n          this.domNode.innerHTML = _highlight(text);\n          this.domNode.normalize();\n          this.attach();\n        }\n        this.cachedText = text;\n      }\n    }\n  }]);\n\n  return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n  _inherits(Syntax, _Module);\n\n  _createClass(Syntax, null, [{\n    key: 'register',\n    value: function register() {\n      _quill2.default.register(CodeToken, true);\n      _quill2.default.register(SyntaxCodeBlock, true);\n    }\n  }]);\n\n  function Syntax(quill, options) {\n    _classCallCheck(this, Syntax);\n\n    var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n    if (typeof _this2.options.highlight !== 'function') {\n      throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n    }\n    var timer = null;\n    _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n      clearTimeout(timer);\n      timer = setTimeout(function () {\n        _this2.highlight();\n        timer = null;\n      }, _this2.options.interval);\n    });\n    _this2.highlight();\n    return _this2;\n  }\n\n  _createClass(Syntax, [{\n    key: 'highlight',\n    value: function highlight() {\n      var _this3 = this;\n\n      if (this.quill.selection.composing) return;\n      this.quill.update(_quill2.default.sources.USER);\n      var range = this.quill.getSelection();\n      this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n        code.highlight(_this3.options.highlight);\n      });\n      this.quill.update(_quill2.default.sources.SILENT);\n      if (range != null) {\n        this.quill.setSelection(range, _quill2.default.sources.SILENT);\n      }\n    }\n  }]);\n\n  return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n  highlight: function () {\n    if (window.hljs == null) return null;\n    return function (text) {\n      var result = window.hljs.highlightAuto(text);\n      return result.value;\n    };\n  }(),\n  interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <g class=\\\"ql-fill ql-color-label\\\"> <polygon points=\\\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\\\"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points=\\\"6.817 5 6 5 6 6 6.38 6 6.817 5\\\"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points=\\\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\\\"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points=\\\"4.63 10 4 10 4 11 4.192 11 4.63 10\\\"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points=\\\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\\\"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points=\\\"12 6.868 12 6 11.62 6 12 6.868\\\"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points=\\\"12.933 9 13 9 13 8 12.495 8 12.933 9\\\"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points=\\\"5.5 13 9 5 12.5 13\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>\";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=4 y=5></rect> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=11 y=5></rect> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M7,8c0,4.031-3,5-3,5></path> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M14,8c0,4.031-3,5-3,5></path> </svg>\";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>\";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>\";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-color-label ql-stroke ql-transparent\\\" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points=\\\"5.5 11 9 3 12.5 11\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>\";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"3 11 5 9 3 7 3 11\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>\";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"15 12 13 10 15 8 15 12\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>\";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform=\\\"translate(24 18) rotate(-180)\\\"/> </svg>\";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>\";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z /> </svg>\";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z /> </svg>\";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>\";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class=\\\"ql-even ql-fill\\\" points=\\\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=\\\"ql-fill ql-stroke\\\" points=\\\"3 7 3 11 5 9 3 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"5 7 5 11 3 9 5 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class=\\\"ql-even ql-stroke\\\" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class=\\\"ql-even ql-stroke\\\" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>\";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class=\\\"ql-stroke ql-thin\\\" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class=\\\"ql-stroke ql-thin\\\" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class=\\\"ql-stroke ql-thin\\\" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>\";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=9 x2=15 y1=4 y2=4></line> <polyline class=ql-stroke points=\\\"3 4 4 5 6 3\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=14 y2=14></line> <polyline class=ql-stroke points=\\\"3 14 4 15 6 13\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"3 9 4 10 6 8\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>\";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>\";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-stroke ql-thin\\\" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>\";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>\";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>\";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=ql-stroke points=\\\"7 11 9 13 11 11 7 11\\\"></polygon> <polygon class=ql-stroke points=\\\"7 7 9 5 11 7 7 7\\\"></polygon> </svg>\";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n  _inherits(BubbleTheme, _BaseTheme);\n\n  function BubbleTheme(quill, options) {\n    _classCallCheck(this, BubbleTheme);\n\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n\n    var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n    _this.quill.container.classList.add('ql-bubble');\n    return _this;\n  }\n\n  _createClass(BubbleTheme, [{\n    key: 'extendToolbar',\n    value: function extendToolbar(toolbar) {\n      this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n      this.tooltip.root.appendChild(toolbar.container);\n      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n    }\n  }]);\n\n  return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function link(value) {\n          if (!value) {\n            this.quill.format('link', false);\n          } else {\n            this.quill.theme.tooltip.edit();\n          }\n        }\n      }\n    }\n  }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n  _inherits(BubbleTooltip, _BaseTooltip);\n\n  function BubbleTooltip(quill, bounds) {\n    _classCallCheck(this, BubbleTooltip);\n\n    var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n    _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n      if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n      if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n        _this2.show();\n        // Lock our width so we will expand beyond our offsetParent boundaries\n        _this2.root.style.left = '0px';\n        _this2.root.style.width = '';\n        _this2.root.style.width = _this2.root.offsetWidth + 'px';\n        var lines = _this2.quill.getLines(range.index, range.length);\n        if (lines.length === 1) {\n          _this2.position(_this2.quill.getBounds(range));\n        } else {\n          var lastLine = lines[lines.length - 1];\n          var index = _this2.quill.getIndex(lastLine);\n          var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n          var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n          _this2.position(_bounds);\n        }\n      } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n        _this2.hide();\n      }\n    });\n    return _this2;\n  }\n\n  _createClass(BubbleTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this3 = this;\n\n      _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n      this.root.querySelector('.ql-close').addEventListener('click', function () {\n        _this3.root.classList.remove('ql-editing');\n      });\n      this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n        // Let selection be restored by toolbar handlers before repositioning\n        setTimeout(function () {\n          if (_this3.root.classList.contains('ql-hidden')) return;\n          var range = _this3.quill.getSelection();\n          if (range != null) {\n            _this3.position(_this3.quill.getBounds(range));\n          }\n        }, 1);\n      });\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      this.show();\n    }\n  }, {\n    key: 'position',\n    value: function position(reference) {\n      var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n      var arrow = this.root.querySelector('.ql-tooltip-arrow');\n      arrow.style.marginLeft = '';\n      if (shift === 0) return shift;\n      arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n    }\n  }]);\n\n  return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['<span class=\"ql-tooltip-arrow\"></span>', '<div class=\"ql-tooltip-editor\">', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-close\"></a>', '</div>'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(63);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"quill\")):\"function\"==typeof define&&define.amd?define([\"quill\"],e):\"object\"==typeof exports?exports.VueQuillEditor=e(require(\"quill\")):t.VueQuillEditor=e(t.Quill)}(this,function(t){return function(t){function e(i){if(n[i])return n[i].exports;var l=n[i]={i:i,l:!1,exports:{}};return t[i].call(l.exports,l,l.exports,e),l.l=!0,l.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/\",e(e.s=2)}([function(e,n){e.exports=t},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(4),l=n.n(i),o=n(6),r=n(5),u=r(l.a,o.a,!1,null,null,null);e.default=u.exports},function(t,e,n){\"use strict\";function i(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.install=e.quillEditor=e.Quill=void 0;var l=n(0),o=i(l),r=n(1),u=i(r),s=window.Quill||o.default,a=function(t,e){e&&(u.default.props.globalOptions.default=function(){return e}),t.component(u.default.name,u.default)},c={Quill:s,quillEditor:u.default,install:a};e.default=c,e.Quill=s,e.quillEditor=u.default,e.install=a},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={theme:\"snow\",boundary:document.body,modules:{toolbar:[[\"bold\",\"italic\",\"underline\",\"strike\"],[\"blockquote\",\"code-block\"],[{header:1},{header:2}],[{list:\"ordered\"},{list:\"bullet\"}],[{script:\"sub\"},{script:\"super\"}],[{indent:\"-1\"},{indent:\"+1\"}],[{direction:\"rtl\"}],[{size:[\"small\",!1,\"large\",\"huge\"]}],[{header:[1,2,3,4,5,6,!1]}],[{color:[]},{background:[]}],[{font:[]}],[{align:[]}],[\"clean\"],[\"link\",\"image\",\"video\"]]},placeholder:\"Insert text here ...\",readOnly:!1}},function(t,e,n){\"use strict\";function i(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0});var l=n(0),o=i(l),r=n(3),u=i(r),s=window.Quill||o.default;\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(t,e){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(t),i=1;i<arguments.length;i++){var l=arguments[i];if(null!=l)for(var o in l)Object.prototype.hasOwnProperty.call(l,o)&&(n[o]=l[o])}return n},writable:!0,configurable:!0}),e.default={name:\"quill-editor\",data:function(){return{_options:{},_content:\"\",defaultOptions:u.default}},props:{content:String,value:String,disabled:{type:Boolean,default:!1},options:{type:Object,required:!1,default:function(){return{}}},globalOptions:{type:Object,required:!1,default:function(){return{}}}},mounted:function(){this.initialize()},beforeDestroy:function(){this.quill=null,delete this.quill},methods:{initialize:function(){var t=this;this.$el&&(this._options=Object.assign({},this.defaultOptions,this.globalOptions,this.options),this.quill=new s(this.$refs.editor,this._options),this.quill.enable(!1),(this.value||this.content)&&this.quill.pasteHTML(this.value||this.content),this.disabled||this.quill.enable(!0),this.quill.on(\"selection-change\",function(e){e?t.$emit(\"focus\",t.quill):t.$emit(\"blur\",t.quill)}),this.quill.on(\"text-change\",function(e,n,i){var l=t.$refs.editor.children[0].innerHTML,o=t.quill,r=t.quill.getText();\"<p><br></p>\"===l&&(l=\"\"),t._content=l,t.$emit(\"input\",t._content),t.$emit(\"change\",{html:l,text:r,quill:o})}),this.$emit(\"ready\",this.quill))}},watch:{content:function(t,e){this.quill&&(t&&t!==this._content?(this._content=t,this.quill.pasteHTML(t)):t||this.quill.setText(\"\"))},value:function(t,e){this.quill&&(t&&t!==this._content?(this._content=t,this.quill.pasteHTML(t)):t||this.quill.setText(\"\"))},disabled:function(t,e){this.quill&&this.quill.enable(!t)}}}},function(t,e){t.exports=function(t,e,n,i,l,o){var r,u=t=t||{},s=typeof t.default;\"object\"!==s&&\"function\"!==s||(r=t,u=t.default);var a=\"function\"==typeof u?u.options:u;e&&(a.render=e.render,a.staticRenderFns=e.staticRenderFns,a._compiled=!0),n&&(a.functional=!0),l&&(a._scopeId=l);var c;if(o?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},a._ssrRegister=c):i&&(c=i),c){var d=a.functional,f=d?a.render:a.beforeCreate;d?(a._injectStyles=c,a.render=function(t,e){return c.call(e),f(t,e)}):a.beforeCreate=f?[].concat(f,c):[c]}return{esModule:r,exports:u,options:a}}},function(t,e,n){\"use strict\";var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"quill-editor\"},[t._t(\"toolbar\"),t._v(\" \"),n(\"div\",{ref:\"editor\"})],2)},l=[],o={render:i,staticRenderFns:l};e.a=o}])});","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=style&index=0&id=00bc57af&lang=scss&scoped=true&\"","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_OVERLAY } from '../../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_OVERLAY } from '../../constants/slots';\nimport { toFloat } from '../../utils/number';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BSpinner } from '../spinner/spinner';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar POSITION_COVER = {\n  top: 0,\n  left: 0,\n  bottom: 0,\n  right: 0\n}; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  // Alternative to variant, allowing a specific\n  // CSS color to be applied to the overlay\n  bgColor: makeProp(PROP_TYPE_STRING),\n  blur: makeProp(PROP_TYPE_STRING, '2px'),\n  fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n  noCenter: makeProp(PROP_TYPE_BOOLEAN, false),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  // If `true, does not render the default slot\n  // and switches to absolute positioning\n  noWrap: makeProp(PROP_TYPE_BOOLEAN, false),\n  opacity: makeProp(PROP_TYPE_NUMBER_STRING, 0.85, function (value) {\n    var number = toFloat(value, 0);\n    return number >= 0 && number <= 1;\n  }),\n  overlayTag: makeProp(PROP_TYPE_STRING, 'div'),\n  rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  show: makeProp(PROP_TYPE_BOOLEAN, false),\n  spinnerSmall: makeProp(PROP_TYPE_BOOLEAN, false),\n  spinnerType: makeProp(PROP_TYPE_STRING, 'border'),\n  spinnerVariant: makeProp(PROP_TYPE_STRING),\n  variant: makeProp(PROP_TYPE_STRING, 'light'),\n  wrapTag: makeProp(PROP_TYPE_STRING, 'div'),\n  zIndex: makeProp(PROP_TYPE_NUMBER_STRING, 10)\n}, NAME_OVERLAY); // --- Main component ---\n// @vue/component\n\nexport var BOverlay = /*#__PURE__*/Vue.extend({\n  name: NAME_OVERLAY,\n  mixins: [normalizeSlotMixin],\n  props: props,\n  computed: {\n    computedRounded: function computedRounded() {\n      var rounded = this.rounded;\n      return rounded === true || rounded === '' ? 'rounded' : !rounded ? '' : \"rounded-\".concat(rounded);\n    },\n    computedVariant: function computedVariant() {\n      var variant = this.variant;\n      return variant && !this.bgColor ? \"bg-\".concat(variant) : '';\n    },\n    slotScope: function slotScope() {\n      return {\n        spinnerType: this.spinnerType || null,\n        spinnerVariant: this.spinnerVariant || null,\n        spinnerSmall: this.spinnerSmall\n      };\n    }\n  },\n  methods: {\n    defaultOverlayFn: function defaultOverlayFn(_ref) {\n      var spinnerType = _ref.spinnerType,\n          spinnerVariant = _ref.spinnerVariant,\n          spinnerSmall = _ref.spinnerSmall;\n      return this.$createElement(BSpinner, {\n        props: {\n          type: spinnerType,\n          variant: spinnerVariant,\n          small: spinnerSmall\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    var _this = this;\n\n    var show = this.show,\n        fixed = this.fixed,\n        noFade = this.noFade,\n        noWrap = this.noWrap,\n        slotScope = this.slotScope;\n    var $overlay = h();\n\n    if (show) {\n      var $background = h('div', {\n        staticClass: 'position-absolute',\n        class: [this.computedVariant, this.computedRounded],\n        style: _objectSpread(_objectSpread({}, POSITION_COVER), {}, {\n          opacity: this.opacity,\n          backgroundColor: this.bgColor || null,\n          backdropFilter: this.blur ? \"blur(\".concat(this.blur, \")\") : null\n        })\n      });\n      var $content = h('div', {\n        staticClass: 'position-absolute',\n        style: this.noCenter ?\n        /* istanbul ignore next */\n        _objectSpread({}, POSITION_COVER) : {\n          top: '50%',\n          left: '50%',\n          transform: 'translateX(-50%) translateY(-50%)'\n        }\n      }, [this.normalizeSlot(SLOT_NAME_OVERLAY, slotScope) || this.defaultOverlayFn(slotScope)]);\n      $overlay = h(this.overlayTag, {\n        staticClass: 'b-overlay',\n        class: {\n          'position-absolute': !noWrap || noWrap && !fixed,\n          'position-fixed': noWrap && fixed\n        },\n        style: _objectSpread(_objectSpread({}, POSITION_COVER), {}, {\n          zIndex: this.zIndex || 10\n        }),\n        on: {\n          click: function click(event) {\n            return _this.$emit(EVENT_NAME_CLICK, event);\n          }\n        },\n        key: 'overlay'\n      }, [$background, $content]);\n    } // Wrap in a fade transition\n\n\n    $overlay = h(BVTransition, {\n      props: {\n        noFade: noFade,\n        appear: true\n      },\n      on: {\n        'after-enter': function afterEnter() {\n          return _this.$emit(EVENT_NAME_SHOWN);\n        },\n        'after-leave': function afterLeave() {\n          return _this.$emit(EVENT_NAME_HIDDEN);\n        }\n      }\n    }, [$overlay]);\n\n    if (noWrap) {\n      return $overlay;\n    }\n\n    return h(this.wrapTag, {\n      staticClass: 'b-overlay-wrap position-relative',\n      attrs: {\n        'aria-busy': show ? 'true' : null\n      }\n    }, noWrap ? [$overlay] : [this.normalizeSlot(), $overlay]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_TEXTAREA } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { getCS, getStyle, isVisible, requestAF, setStyle } from '../../utils/dom';\nimport { isNull } from '../../utils/inspect';\nimport { mathCeil, mathMax, mathMin } from '../../utils/math';\nimport { toInteger, toFloat } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSelectionMixin } from '../../mixins/form-selection';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { formTextMixin, props as formTextProps } from '../../mixins/form-text';\nimport { formValidityMixin } from '../../mixins/form-validity';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { VBVisible } from '../../directives/visible/visible'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formSizeProps), formStateProps), formTextProps), {}, {\n  maxRows: makeProp(PROP_TYPE_NUMBER_STRING),\n  // When in auto resize mode, disable shrinking to content height\n  noAutoShrink: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Disable the resize handle of textarea\n  noResize: makeProp(PROP_TYPE_BOOLEAN, false),\n  rows: makeProp(PROP_TYPE_NUMBER_STRING, 2),\n  // 'soft', 'hard' or 'off'\n  // Browser default is 'soft'\n  wrap: makeProp(PROP_TYPE_STRING, 'soft')\n})), NAME_FORM_TEXTAREA); // --- Main component ---\n// @vue/component\n\nexport var BFormTextarea = /*#__PURE__*/Vue.extend({\n  name: NAME_FORM_TEXTAREA,\n  directives: {\n    'b-visible': VBVisible\n  },\n  // Mixin order is important!\n  mixins: [listenersMixin, idMixin, listenOnRootMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n  props: props,\n  data: function data() {\n    return {\n      heightInPx: null\n    };\n  },\n  computed: {\n    computedStyle: function computedStyle() {\n      var styles = {\n        // Setting `noResize` to true will disable the ability for the user to\n        // manually resize the textarea. We also disable when in auto height mode\n        resize: !this.computedRows || this.noResize ? 'none' : null\n      };\n\n      if (!this.computedRows) {\n        // Conditionally set the computed CSS height when auto rows/height is enabled\n        // We avoid setting the style to `null`, which can override user manual resize handle\n        styles.height = this.heightInPx; // We always add a vertical scrollbar to the textarea when auto-height is\n        // enabled so that the computed height calculation returns a stable value\n\n        styles.overflowY = 'scroll';\n      }\n\n      return styles;\n    },\n    computedMinRows: function computedMinRows() {\n      // Ensure rows is at least 2 and positive (2 is the native textarea value)\n      // A value of 1 can cause issues in some browsers, and most browsers\n      // only support 2 as the smallest value\n      return mathMax(toInteger(this.rows, 2), 2);\n    },\n    computedMaxRows: function computedMaxRows() {\n      return mathMax(this.computedMinRows, toInteger(this.maxRows, 0));\n    },\n    computedRows: function computedRows() {\n      // This is used to set the attribute 'rows' on the textarea\n      // If auto-height is enabled, then we return `null` as we use CSS to control height\n      return this.computedMinRows === this.computedMaxRows ? this.computedMinRows : null;\n    },\n    computedAttrs: function computedAttrs() {\n      var disabled = this.disabled,\n          required = this.required;\n      return {\n        id: this.safeId(),\n        name: this.name || null,\n        form: this.form || null,\n        disabled: disabled,\n        placeholder: this.placeholder || null,\n        required: required,\n        autocomplete: this.autocomplete || null,\n        readonly: this.readonly || this.plaintext,\n        rows: this.computedRows,\n        wrap: this.wrap || null,\n        'aria-required': this.required ? 'true' : null,\n        'aria-invalid': this.computedAriaInvalid\n      };\n    },\n    computedListeners: function computedListeners() {\n      return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n        input: this.onInput,\n        change: this.onChange,\n        blur: this.onBlur\n      });\n    }\n  },\n  watch: {\n    localValue: function localValue() {\n      this.setHeight();\n    }\n  },\n  mounted: function mounted() {\n    this.setHeight();\n  },\n  methods: {\n    // Called by intersection observer directive\n\n    /* istanbul ignore next */\n    visibleCallback: function visibleCallback(visible) {\n      if (visible) {\n        // We use a `$nextTick()` here just to make sure any\n        // transitions or portalling have completed\n        this.$nextTick(this.setHeight);\n      }\n    },\n    setHeight: function setHeight() {\n      var _this = this;\n\n      this.$nextTick(function () {\n        requestAF(function () {\n          _this.heightInPx = _this.computeHeight();\n        });\n      });\n    },\n\n    /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n    computeHeight: function computeHeight() {\n      if (this.$isServer || !isNull(this.computedRows)) {\n        return null;\n      }\n\n      var el = this.$el; // Element must be visible (not hidden) and in document\n      // Must be checked after above checks\n\n      if (!isVisible(el)) {\n        return null;\n      } // Get current computed styles\n\n\n      var computedStyle = getCS(el); // Height of one line of text in px\n\n      var lineHeight = toFloat(computedStyle.lineHeight, 1); // Calculate height of border and padding\n\n      var border = toFloat(computedStyle.borderTopWidth, 0) + toFloat(computedStyle.borderBottomWidth, 0);\n      var padding = toFloat(computedStyle.paddingTop, 0) + toFloat(computedStyle.paddingBottom, 0); // Calculate offset\n\n      var offset = border + padding; // Minimum height for min rows (which must be 2 rows or greater for cross-browser support)\n\n      var minHeight = lineHeight * this.computedMinRows + offset; // Get the current style height (with `px` units)\n\n      var oldHeight = getStyle(el, 'height') || computedStyle.height; // Probe scrollHeight by temporarily changing the height to `auto`\n\n      setStyle(el, 'height', 'auto');\n      var scrollHeight = el.scrollHeight; // Place the original old height back on the element, just in case `computedProp`\n      // returns the same value as before\n\n      setStyle(el, 'height', oldHeight); // Calculate content height in 'rows' (scrollHeight includes padding but not border)\n\n      var contentRows = mathMax((scrollHeight - padding) / lineHeight, 2); // Calculate number of rows to display (limited within min/max rows)\n\n      var rows = mathMin(mathMax(contentRows, this.computedMinRows), this.computedMaxRows); // Calculate the required height of the textarea including border and padding (in pixels)\n\n      var height = mathMax(mathCeil(rows * lineHeight + offset), minHeight); // Computed height remains the larger of `oldHeight` and new `height`,\n      // when height is in `sticky` mode (prop `no-auto-shrink` is true)\n\n      if (this.noAutoShrink && toFloat(oldHeight, 0) > height) {\n        return oldHeight;\n      } // Return the new computed CSS height in px units\n\n\n      return \"\".concat(height, \"px\");\n    }\n  },\n  render: function render(h) {\n    return h('textarea', {\n      class: this.computedClass,\n      style: this.computedStyle,\n      directives: [{\n        name: 'b-visible',\n        value: this.visibleCallback,\n        // If textarea is within 640px of viewport, consider it visible\n        modifiers: {\n          '640': true\n        }\n      }],\n      attrs: this.computedAttrs,\n      domProps: {\n        value: this.localValue\n      },\n      on: this.computedListeners,\n      ref: 'input'\n    });\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_RADIO } from '../../constants/components';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { MODEL_EVENT_NAME, formRadioCheckMixin, props as formRadioCheckProps } from '../../mixins/form-radio-check';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formRadioCheckProps), formSizeProps), formStateProps)), NAME_FORM_RADIO); // --- Main component ---\n// @vue/component\n\nexport var BFormRadio = /*#__PURE__*/Vue.extend({\n  name: NAME_FORM_RADIO,\n  mixins: [idMixin, formRadioCheckMixin, // Includes shared render function\n  formControlMixin, formSizeMixin, formStateMixin],\n  inject: {\n    bvGroup: {\n      from: 'bvRadioGroup',\n      default: false\n    }\n  },\n  props: props,\n  watch: {\n    computedLocalChecked: function computedLocalChecked(newValue, oldValue) {\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB_LINK } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, omit(BLinkProps, ['event', 'routerTag'])), {}, {\n  ariaCurrent: makeProp(PROP_TYPE_STRING, 'location'),\n  html: makeProp(PROP_TYPE_STRING),\n  text: makeProp(PROP_TYPE_STRING)\n})), NAME_BREADCRUMB_LINK); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumbLink = /*#__PURE__*/Vue.extend({\n  name: NAME_BREADCRUMB_LINK,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var suppliedProps = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var active = suppliedProps.active;\n    var tag = active ? 'span' : BLink;\n    var componentData = {\n      attrs: {\n        'aria-current': active ? suppliedProps.ariaCurrent : null\n      },\n      props: pluckProps(props, suppliedProps)\n    };\n\n    if (!children) {\n      componentData.domProps = htmlOrText(suppliedProps.html, suppliedProps.text);\n    }\n\n    return h(tag, mergeData(data, componentData), children);\n  }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB_ITEM } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BBreadcrumbLink, props as BBreadcrumbLinkProps } from './breadcrumb-link'; // --- Props ---\n\nexport var props = makePropsConfigurable(BBreadcrumbLinkProps, NAME_BREADCRUMB_ITEM); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumbItem = /*#__PURE__*/Vue.extend({\n  name: NAME_BREADCRUMB_ITEM,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h('li', mergeData(data, {\n      staticClass: 'breadcrumb-item',\n      class: {\n        active: props.active\n      }\n    }), [h(BBreadcrumbLink, {\n      props: props\n    }, children)]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from '../../vue';\nimport { NAME_ROW } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { identity } from '../../utils/identity';\nimport { memoize } from '../../utils/memoize';\nimport { create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { lowerCase, toString, trim } from '../../utils/string'; // --- Constants ---\n\nvar COMMON_ALIGNMENT = ['start', 'end', 'center']; // --- Helper methods ---\n// Compute a `row-cols-{breakpoint}-{cols}` class name\n// Memoized function for better performance on generating class names\n\nvar computeRowColsClass = memoize(function (breakpoint, cols) {\n  cols = trim(toString(cols));\n  return cols ? lowerCase(['row-cols', breakpoint, cols].filter(identity).join('-')) : null;\n}); // Get the breakpoint name from the `rowCols` prop name\n// Memoized function for better performance on extracting breakpoint names\n\nvar computeRowColsBreakpoint = memoize(function (prop) {\n  return lowerCase(prop.replace('cols', ''));\n}); // Cached copy of the `row-cols` breakpoint prop names\n// Will be populated when the props are generated\n\nvar rowColsPropList = []; // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n  // i.e. 'row-cols-2', 'row-cols-md-4', 'row-cols-xl-6', ...\n  var rowColsProps = getBreakpointsUpCached().reduce(function (props, breakpoint) {\n    props[suffixPropName(breakpoint, 'cols')] = makeProp(PROP_TYPE_NUMBER_STRING);\n    return props;\n  }, create(null)); // Cache the row-cols prop names\n\n  rowColsPropList = keys(rowColsProps); // Return the generated props\n\n  return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, rowColsProps), {}, {\n    alignContent: makeProp(PROP_TYPE_STRING, null, function (value) {\n      return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around', 'stretch'), value);\n    }),\n    alignH: makeProp(PROP_TYPE_STRING, null, function (value) {\n      return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around'), value);\n    }),\n    alignV: makeProp(PROP_TYPE_STRING, null, function (value) {\n      return arrayIncludes(concat(COMMON_ALIGNMENT, 'baseline', 'stretch'), value);\n    }),\n    noGutters: makeProp(PROP_TYPE_BOOLEAN, false),\n    tag: makeProp(PROP_TYPE_STRING, 'div')\n  })), NAME_ROW);\n}; // --- Main component ---\n// We do not use `Vue.extend()` here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BRow = {\n  name: NAME_ROW,\n  functional: true,\n\n  get props() {\n    // Allow props to be lazy evaled on first access and\n    // then they become a non-getter afterwards\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n    delete this.props;\n    this.props = generateProps();\n    return this.props;\n  },\n\n  render: function render(h, _ref) {\n    var _classList$push;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var alignV = props.alignV,\n        alignH = props.alignH,\n        alignContent = props.alignContent; // Loop through row-cols breakpoint props and generate the classes\n\n    var classList = [];\n    rowColsPropList.forEach(function (prop) {\n      var c = computeRowColsClass(computeRowColsBreakpoint(prop), props[prop]); // If a class is returned, push it onto the array\n\n      if (c) {\n        classList.push(c);\n      }\n    });\n    classList.push((_classList$push = {\n      'no-gutters': props.noGutters\n    }, _defineProperty(_classList$push, \"align-items-\".concat(alignV), alignV), _defineProperty(_classList$push, \"justify-content-\".concat(alignH), alignH), _defineProperty(_classList$push, \"align-content-\".concat(alignContent), alignContent), _classList$push));\n    return h(props.tag, mergeData(data, {\n      staticClass: 'row',\n      class: classList\n    }), children);\n  }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TBODY } from '../../constants/components';\nimport { PROP_TYPE_OBJECT } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  tbodyTransitionHandlers: makeProp(PROP_TYPE_OBJECT),\n  tbodyTransitionProps: makeProp(PROP_TYPE_OBJECT)\n}, NAME_TBODY); // --- Main component ---\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTbody = /*#__PURE__*/Vue.extend({\n  name: NAME_TBODY,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide: function provide() {\n    return {\n      bvTableRowGroup: this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    bvTable: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return {};\n      }\n    }\n  },\n  inheritAttrs: false,\n  props: props,\n  computed: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTbody: function isTbody() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark: function isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked: function isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive: function isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader: function isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader: function hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant: function tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    isTransitionGroup: function isTransitionGroup() {\n      return this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n    },\n    tbodyAttrs: function tbodyAttrs() {\n      return _objectSpread({\n        role: 'rowgroup'\n      }, this.bvAttrs);\n    },\n    tbodyProps: function tbodyProps() {\n      var tbodyTransitionProps = this.tbodyTransitionProps;\n      return tbodyTransitionProps ? _objectSpread(_objectSpread({}, tbodyTransitionProps), {}, {\n        tag: 'tbody'\n      }) : {};\n    }\n  },\n  render: function render(h) {\n    var data = {\n      props: this.tbodyProps,\n      attrs: this.tbodyAttrs\n    };\n\n    if (this.isTransitionGroup) {\n      // We use native listeners if a transition group for any delegated events\n      data.on = this.tbodyTransitionHandlers || {};\n      data.nativeOn = this.bvListeners;\n    } else {\n      // Otherwise we place any listeners on the tbody element\n      data.on = this.bvListeners;\n    }\n\n    return h(this.isTransitionGroup ? 'transition-group' : 'tbody', data, this.normalizeSlot());\n  }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../vue';\nimport { NAME_PAGINATION } from '../constants/components';\nimport { CODE_DOWN, CODE_LEFT, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_FUNCTION_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { SLOT_NAME_ELLIPSIS_TEXT, SLOT_NAME_FIRST_TEXT, SLOT_NAME_LAST_TEXT, SLOT_NAME_NEXT_TEXT, SLOT_NAME_PAGE, SLOT_NAME_PREV_TEXT } from '../constants/slots';\nimport { createArray } from '../utils/array';\nimport { attemptFocus, getActiveElement, getAttr, isDisabled, isVisible, selectAll } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { isFunction, isNull } from '../utils/inspect';\nimport { mathFloor, mathMax, mathMin } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string';\nimport { warn } from '../utils/warn';\nimport { normalizeSlotMixin } from '../mixins/normalize-slot';\nimport { BLink } from '../components/link/link'; // Common props, computed, data, render function, and methods\n// for `<b-pagination>` and `<b-pagination-nav>`\n// --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n  defaultValue: null,\n\n  /* istanbul ignore next */\n  validator: function validator(value) {\n    if (!isNull(value) && toInteger(value, 0) < 1) {\n      warn('\"v-model\" value must be a number greater than \"0\"', NAME_PAGINATION);\n      return false;\n    }\n\n    return true;\n  }\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // Threshold of limit size when we start/stop showing ellipsis\n\nvar ELLIPSIS_THRESHOLD = 3; // Default # of buttons limit\n\nvar DEFAULT_LIMIT = 5; // --- Helper methods ---\n// Make an array of N to N+X\n\nvar makePageArray = function makePageArray(startNumber, numberOfPages) {\n  return createArray(numberOfPages, function (_, i) {\n    return {\n      number: startNumber + i,\n      classes: null\n    };\n  });\n}; // Sanitize the provided limit value (converting to a number)\n\n\nvar sanitizeLimit = function sanitizeLimit(value) {\n  var limit = toInteger(value) || 1;\n  return limit < 1 ? DEFAULT_LIMIT : limit;\n}; // Sanitize the provided current page number (converting to a number)\n\n\nvar sanitizeCurrentPage = function sanitizeCurrentPage(val, numberOfPages) {\n  var page = toInteger(val) || 1;\n  return page > numberOfPages ? numberOfPages : page < 1 ? 1 : page;\n}; // Links don't normally respond to SPACE, so we add that\n// functionality via this handler\n\n\nvar onSpaceKey = function onSpaceKey(event) {\n  if (event.keyCode === CODE_SPACE) {\n    // Stop page from scrolling\n    stopEvent(event, {\n      immediatePropagation: true\n    }); // Trigger the click event on the link\n\n    event.currentTarget.click();\n    return false;\n  }\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n  align: makeProp(PROP_TYPE_STRING, 'left'),\n  ariaLabel: makeProp(PROP_TYPE_STRING, 'Pagination'),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  ellipsisClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  ellipsisText: makeProp(PROP_TYPE_STRING, \"\\u2026\"),\n  // '…'\n  firstClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  firstNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n  firstText: makeProp(PROP_TYPE_STRING, \"\\xAB\"),\n  // '«'\n  hideEllipsis: makeProp(PROP_TYPE_BOOLEAN, false),\n  hideGotoEndButtons: makeProp(PROP_TYPE_BOOLEAN, false),\n  labelFirstPage: makeProp(PROP_TYPE_STRING, 'Go to first page'),\n  labelLastPage: makeProp(PROP_TYPE_STRING, 'Go to last page'),\n  labelNextPage: makeProp(PROP_TYPE_STRING, 'Go to next page'),\n  labelPage: makeProp(PROP_TYPE_FUNCTION_STRING, 'Go to page'),\n  labelPrevPage: makeProp(PROP_TYPE_STRING, 'Go to previous page'),\n  lastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  lastNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n  lastText: makeProp(PROP_TYPE_STRING, \"\\xBB\"),\n  // '»'\n  limit: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_LIMIT,\n  /* istanbul ignore next */\n  function (value) {\n    if (toInteger(value, 0) < 1) {\n      warn('Prop \"limit\" must be a number greater than \"0\"', NAME_PAGINATION);\n      return false;\n    }\n\n    return true;\n  }),\n  nextClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  nextText: makeProp(PROP_TYPE_STRING, \"\\u203A\"),\n  // '›'\n  pageClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  pills: makeProp(PROP_TYPE_BOOLEAN, false),\n  prevClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  prevText: makeProp(PROP_TYPE_STRING, \"\\u2039\"),\n  // '‹'\n  size: makeProp(PROP_TYPE_STRING)\n})), 'pagination'); // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n  mixins: [modelMixin, normalizeSlotMixin],\n  props: props,\n  data: function data() {\n    // `-1` signifies no page initially selected\n    var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n    currentPage = currentPage > 0 ? currentPage : -1;\n    return {\n      currentPage: currentPage,\n      localNumberOfPages: 1,\n      localLimit: DEFAULT_LIMIT\n    };\n  },\n  computed: {\n    btnSize: function btnSize() {\n      var size = this.size;\n      return size ? \"pagination-\".concat(size) : '';\n    },\n    alignment: function alignment() {\n      var align = this.align;\n\n      if (align === 'center') {\n        return 'justify-content-center';\n      } else if (align === 'end' || align === 'right') {\n        return 'justify-content-end';\n      } else if (align === 'fill') {\n        // The page-items will also have 'flex-fill' added\n        // We add text centering to make the button appearance better in fill mode\n        return 'text-center';\n      }\n\n      return '';\n    },\n    styleClass: function styleClass() {\n      return this.pills ? 'b-pagination-pills' : '';\n    },\n    computedCurrentPage: function computedCurrentPage() {\n      return sanitizeCurrentPage(this.currentPage, this.localNumberOfPages);\n    },\n    paginationParams: function paginationParams() {\n      // Determine if we should show the the ellipsis\n      var limit = this.localLimit,\n          numberOfPages = this.localNumberOfPages,\n          currentPage = this.computedCurrentPage,\n          hideEllipsis = this.hideEllipsis,\n          firstNumber = this.firstNumber,\n          lastNumber = this.lastNumber;\n      var showFirstDots = false;\n      var showLastDots = false;\n      var numberOfLinks = limit;\n      var startNumber = 1;\n\n      if (numberOfPages <= limit) {\n        // Special case: Less pages available than the limit of displayed pages\n        numberOfLinks = numberOfPages;\n      } else if (currentPage < limit - 1 && limit > ELLIPSIS_THRESHOLD) {\n        if (!hideEllipsis || lastNumber) {\n          showLastDots = true;\n          numberOfLinks = limit - (firstNumber ? 0 : 1);\n        }\n\n        numberOfLinks = mathMin(numberOfLinks, limit);\n      } else if (numberOfPages - currentPage + 2 < limit && limit > ELLIPSIS_THRESHOLD) {\n        if (!hideEllipsis || firstNumber) {\n          showFirstDots = true;\n          numberOfLinks = limit - (lastNumber ? 0 : 1);\n        }\n\n        startNumber = numberOfPages - numberOfLinks + 1;\n      } else {\n        // We are somewhere in the middle of the page list\n        if (limit > ELLIPSIS_THRESHOLD) {\n          numberOfLinks = limit - (hideEllipsis ? 0 : 2);\n          showFirstDots = !!(!hideEllipsis || firstNumber);\n          showLastDots = !!(!hideEllipsis || lastNumber);\n        }\n\n        startNumber = currentPage - mathFloor(numberOfLinks / 2);\n      } // Sanity checks\n\n      /* istanbul ignore if */\n\n\n      if (startNumber < 1) {\n        startNumber = 1;\n        showFirstDots = false;\n      } else if (startNumber > numberOfPages - numberOfLinks) {\n        startNumber = numberOfPages - numberOfLinks + 1;\n        showLastDots = false;\n      }\n\n      if (showFirstDots && firstNumber && startNumber < 4) {\n        numberOfLinks = numberOfLinks + 2;\n        startNumber = 1;\n        showFirstDots = false;\n      }\n\n      var lastPageNumber = startNumber + numberOfLinks - 1;\n\n      if (showLastDots && lastNumber && lastPageNumber > numberOfPages - 3) {\n        numberOfLinks = numberOfLinks + (lastPageNumber === numberOfPages - 2 ? 2 : 3);\n        showLastDots = false;\n      } // Special handling for lower limits (where ellipsis are never shown)\n\n\n      if (limit <= ELLIPSIS_THRESHOLD) {\n        if (firstNumber && startNumber === 1) {\n          numberOfLinks = mathMin(numberOfLinks + 1, numberOfPages, limit + 1);\n        } else if (lastNumber && numberOfPages === startNumber + numberOfLinks - 1) {\n          startNumber = mathMax(startNumber - 1, 1);\n          numberOfLinks = mathMin(numberOfPages - startNumber + 1, numberOfPages, limit + 1);\n        }\n      }\n\n      numberOfLinks = mathMin(numberOfLinks, numberOfPages - startNumber + 1);\n      return {\n        showFirstDots: showFirstDots,\n        showLastDots: showLastDots,\n        numberOfLinks: numberOfLinks,\n        startNumber: startNumber\n      };\n    },\n    pageList: function pageList() {\n      // Generates the pageList array\n      var _this$paginationParam = this.paginationParams,\n          numberOfLinks = _this$paginationParam.numberOfLinks,\n          startNumber = _this$paginationParam.startNumber;\n      var currentPage = this.computedCurrentPage; // Generate list of page numbers\n\n      var pages = makePageArray(startNumber, numberOfLinks); // We limit to a total of 3 page buttons on XS screens\n      // So add classes to page links to hide them for XS breakpoint\n      // Note: Ellipsis will also be hidden on XS screens\n      // TODO: Make this visual limit configurable based on breakpoint(s)\n\n      if (pages.length > 3) {\n        var idx = currentPage - startNumber; // THe following is a bootstrap-vue custom utility class\n\n        var classes = 'bv-d-xs-down-none';\n\n        if (idx === 0) {\n          // Keep leftmost 3 buttons visible when current page is first page\n          for (var i = 3; i < pages.length; i++) {\n            pages[i].classes = classes;\n          }\n        } else if (idx === pages.length - 1) {\n          // Keep rightmost 3 buttons visible when current page is last page\n          for (var _i = 0; _i < pages.length - 3; _i++) {\n            pages[_i].classes = classes;\n          }\n        } else {\n          // Hide all except current page, current page - 1 and current page + 1\n          for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n            // hide some left button(s)\n            pages[_i2].classes = classes;\n          }\n\n          for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n            // hide some right button(s)\n            pages[_i3].classes = classes;\n          }\n        }\n      }\n\n      return pages;\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.currentPage = sanitizeCurrentPage(newValue, this.localNumberOfPages);\n    }\n  }), _defineProperty(_watch, \"currentPage\", function currentPage(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      // Emit `null` if no page selected\n      this.$emit(MODEL_EVENT_NAME, newValue > 0 ? newValue : null);\n    }\n  }), _defineProperty(_watch, \"limit\", function limit(newValue, oldValue) {\n    if (newValue !== oldValue) {\n      this.localLimit = sanitizeLimit(newValue);\n    }\n  }), _watch),\n  created: function created() {\n    var _this = this;\n\n    // Set our default values in data\n    this.localLimit = sanitizeLimit(this.limit);\n    this.$nextTick(function () {\n      // Sanity check\n      _this.currentPage = _this.currentPage > _this.localNumberOfPages ? _this.localNumberOfPages : _this.currentPage;\n    });\n  },\n  methods: {\n    handleKeyNav: function handleKeyNav(event) {\n      var keyCode = event.keyCode,\n          shiftKey = event.shiftKey;\n      /* istanbul ignore if */\n\n      if (this.isNav) {\n        // We disable left/right keyboard navigation in `<b-pagination-nav>`\n        return;\n      }\n\n      if (keyCode === CODE_LEFT || keyCode === CODE_UP) {\n        stopEvent(event, {\n          propagation: false\n        });\n        shiftKey ? this.focusFirst() : this.focusPrev();\n      } else if (keyCode === CODE_RIGHT || keyCode === CODE_DOWN) {\n        stopEvent(event, {\n          propagation: false\n        });\n        shiftKey ? this.focusLast() : this.focusNext();\n      }\n    },\n    getButtons: function getButtons() {\n      // Return only buttons that are visible\n      return selectAll('button.page-link, a.page-link', this.$el).filter(function (btn) {\n        return isVisible(btn);\n      });\n    },\n    focusCurrent: function focusCurrent() {\n      var _this2 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var btn = _this2.getButtons().find(function (el) {\n          return toInteger(getAttr(el, 'aria-posinset'), 0) === _this2.computedCurrentPage;\n        });\n\n        if (!attemptFocus(btn)) {\n          // Fallback if current page is not in button list\n          _this2.focusFirst();\n        }\n      });\n    },\n    focusFirst: function focusFirst() {\n      var _this3 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var btn = _this3.getButtons().find(function (el) {\n          return !isDisabled(el);\n        });\n\n        attemptFocus(btn);\n      });\n    },\n    focusLast: function focusLast() {\n      var _this4 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var btn = _this4.getButtons().reverse().find(function (el) {\n          return !isDisabled(el);\n        });\n\n        attemptFocus(btn);\n      });\n    },\n    focusPrev: function focusPrev() {\n      var _this5 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var buttons = _this5.getButtons();\n\n        var index = buttons.indexOf(getActiveElement());\n\n        if (index > 0 && !isDisabled(buttons[index - 1])) {\n          attemptFocus(buttons[index - 1]);\n        }\n      });\n    },\n    focusNext: function focusNext() {\n      var _this6 = this;\n\n      // We do this in `$nextTick()` to ensure buttons have finished rendering\n      this.$nextTick(function () {\n        var buttons = _this6.getButtons();\n\n        var index = buttons.indexOf(getActiveElement());\n\n        if (index < buttons.length - 1 && !isDisabled(buttons[index + 1])) {\n          attemptFocus(buttons[index + 1]);\n        }\n      });\n    }\n  },\n  render: function render(h) {\n    var _this7 = this;\n\n    var disabled = this.disabled,\n        labelPage = this.labelPage,\n        ariaLabel = this.ariaLabel,\n        isNav = this.isNav,\n        numberOfPages = this.localNumberOfPages,\n        currentPage = this.computedCurrentPage;\n    var pageNumbers = this.pageList.map(function (p) {\n      return p.number;\n    });\n    var _this$paginationParam2 = this.paginationParams,\n        showFirstDots = _this$paginationParam2.showFirstDots,\n        showLastDots = _this$paginationParam2.showLastDots;\n    var fill = this.align === 'fill';\n    var $buttons = []; // Helper function and flag\n\n    var isActivePage = function isActivePage(pageNumber) {\n      return pageNumber === currentPage;\n    };\n\n    var noCurrentPage = this.currentPage < 1; // Factory function for prev/next/first/last buttons\n\n    var makeEndBtn = function makeEndBtn(linkTo, ariaLabel, btnSlot, btnText, btnClass, pageTest, key) {\n      var isDisabled = disabled || isActivePage(pageTest) || noCurrentPage || linkTo < 1 || linkTo > numberOfPages;\n      var pageNumber = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo;\n      var scope = {\n        disabled: isDisabled,\n        page: pageNumber,\n        index: pageNumber - 1\n      };\n      var $btnContent = _this7.normalizeSlot(btnSlot, scope) || toString(btnText) || h();\n      var $inner = h(isDisabled ? 'span' : isNav ? BLink : 'button', {\n        staticClass: 'page-link',\n        class: {\n          'flex-grow-1': !isNav && !isDisabled && fill\n        },\n        props: isDisabled || !isNav ? {} : _this7.linkProps(linkTo),\n        attrs: {\n          role: isNav ? null : 'menuitem',\n          type: isNav || isDisabled ? null : 'button',\n          tabindex: isDisabled || isNav ? null : '-1',\n          'aria-label': ariaLabel,\n          'aria-controls': _this7.ariaControls || null,\n          'aria-disabled': isDisabled ? 'true' : null\n        },\n        on: isDisabled ? {} : {\n          '!click': function click(event) {\n            _this7.onClick(event, linkTo);\n          },\n          keydown: onSpaceKey\n        }\n      }, [$btnContent]);\n      return h('li', {\n        key: key,\n        staticClass: 'page-item',\n        class: [{\n          disabled: isDisabled,\n          'flex-fill': fill,\n          'd-flex': fill && !isNav && !isDisabled\n        }, btnClass],\n        attrs: {\n          role: isNav ? null : 'presentation',\n          'aria-hidden': isDisabled ? 'true' : null\n        }\n      }, [$inner]);\n    }; // Ellipsis factory\n\n\n    var makeEllipsis = function makeEllipsis(isLast) {\n      return h('li', {\n        staticClass: 'page-item',\n        class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : '', _this7.ellipsisClass],\n        attrs: {\n          role: 'separator'\n        },\n        key: \"ellipsis-\".concat(isLast ? 'last' : 'first')\n      }, [h('span', {\n        staticClass: 'page-link'\n      }, [_this7.normalizeSlot(SLOT_NAME_ELLIPSIS_TEXT) || toString(_this7.ellipsisText) || h()])]);\n    }; // Page button factory\n\n\n    var makePageButton = function makePageButton(page, idx) {\n      var pageNumber = page.number;\n      var active = isActivePage(pageNumber) && !noCurrentPage; // Active page will have tabindex of 0, or if no current page and first page button\n\n      var tabIndex = disabled ? null : active || noCurrentPage && idx === 0 ? '0' : '-1';\n      var attrs = {\n        role: isNav ? null : 'menuitemradio',\n        type: isNav || disabled ? null : 'button',\n        'aria-disabled': disabled ? 'true' : null,\n        'aria-controls': _this7.ariaControls || null,\n        'aria-label': hasPropFunction(labelPage) ?\n        /* istanbul ignore next */\n        labelPage(pageNumber) : \"\".concat(isFunction(labelPage) ? labelPage() : labelPage, \" \").concat(pageNumber),\n        'aria-checked': isNav ? null : active ? 'true' : 'false',\n        'aria-current': isNav && active ? 'page' : null,\n        'aria-posinset': isNav ? null : pageNumber,\n        'aria-setsize': isNav ? null : numberOfPages,\n        // ARIA \"roving tabindex\" method (except in `isNav` mode)\n        tabindex: isNav ? null : tabIndex\n      };\n      var btnContent = toString(_this7.makePage(pageNumber));\n      var scope = {\n        page: pageNumber,\n        index: pageNumber - 1,\n        content: btnContent,\n        active: active,\n        disabled: disabled\n      };\n      var $inner = h(disabled ? 'span' : isNav ? BLink : 'button', {\n        props: disabled || !isNav ? {} : _this7.linkProps(pageNumber),\n        staticClass: 'page-link',\n        class: {\n          'flex-grow-1': !isNav && !disabled && fill\n        },\n        attrs: attrs,\n        on: disabled ? {} : {\n          '!click': function click(event) {\n            _this7.onClick(event, pageNumber);\n          },\n          keydown: onSpaceKey\n        }\n      }, [_this7.normalizeSlot(SLOT_NAME_PAGE, scope) || btnContent]);\n      return h('li', {\n        staticClass: 'page-item',\n        class: [{\n          disabled: disabled,\n          active: active,\n          'flex-fill': fill,\n          'd-flex': fill && !isNav && !disabled\n        }, page.classes, _this7.pageClass],\n        attrs: {\n          role: isNav ? null : 'presentation'\n        },\n        key: \"page-\".concat(pageNumber)\n      }, [$inner]);\n    }; // Goto first page button\n    // Don't render button when `hideGotoEndButtons` or `firstNumber` is set\n\n\n    var $firstPageBtn = h();\n\n    if (!this.firstNumber && !this.hideGotoEndButtons) {\n      $firstPageBtn = makeEndBtn(1, this.labelFirstPage, SLOT_NAME_FIRST_TEXT, this.firstText, this.firstClass, 1, 'pagination-goto-first');\n    }\n\n    $buttons.push($firstPageBtn); // Goto previous page button\n\n    $buttons.push(makeEndBtn(currentPage - 1, this.labelPrevPage, SLOT_NAME_PREV_TEXT, this.prevText, this.prevClass, 1, 'pagination-goto-prev')); // Show first (1) button?\n\n    $buttons.push(this.firstNumber && pageNumbers[0] !== 1 ? makePageButton({\n      number: 1\n    }, 0) : h()); // First ellipsis\n\n    $buttons.push(showFirstDots ? makeEllipsis(false) : h()); // Individual page links\n\n    this.pageList.forEach(function (page, idx) {\n      var offset = showFirstDots && _this7.firstNumber && pageNumbers[0] !== 1 ? 1 : 0;\n      $buttons.push(makePageButton(page, idx + offset));\n    }); // Last ellipsis\n\n    $buttons.push(showLastDots ? makeEllipsis(true) : h()); // Show last page button?\n\n    $buttons.push(this.lastNumber && pageNumbers[pageNumbers.length - 1] !== numberOfPages ? makePageButton({\n      number: numberOfPages\n    }, -1) : h()); // Goto next page button\n\n    $buttons.push(makeEndBtn(currentPage + 1, this.labelNextPage, SLOT_NAME_NEXT_TEXT, this.nextText, this.nextClass, numberOfPages, 'pagination-goto-next')); // Goto last page button\n    // Don't render button when `hideGotoEndButtons` or `lastNumber` is set\n\n    var $lastPageBtn = h();\n\n    if (!this.lastNumber && !this.hideGotoEndButtons) {\n      $lastPageBtn = makeEndBtn(numberOfPages, this.labelLastPage, SLOT_NAME_LAST_TEXT, this.lastText, this.lastClass, numberOfPages, 'pagination-goto-last');\n    }\n\n    $buttons.push($lastPageBtn); // Assemble the pagination buttons\n\n    var $pagination = h('ul', {\n      staticClass: 'pagination',\n      class: ['b-pagination', this.btnSize, this.alignment, this.styleClass],\n      attrs: {\n        role: isNav ? null : 'menubar',\n        'aria-disabled': disabled ? 'true' : 'false',\n        'aria-label': isNav ? null : ariaLabel || null\n      },\n      // We disable keyboard left/right nav when `<b-pagination-nav>`\n      on: isNav ? {} : {\n        keydown: this.handleKeyNav\n      },\n      ref: 'ul'\n    }, $buttons); // If we are `<b-pagination-nav>`, wrap in `<nav>` wrapper\n\n    if (isNav) {\n      return h('nav', {\n        attrs: {\n          'aria-disabled': disabled ? 'true' : null,\n          'aria-hidden': disabled ? 'true' : 'false',\n          'aria-label': isNav ? ariaLabel || null : null\n        }\n      }, [$pagination]);\n    }\n\n    return $pagination;\n  }\n});","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./projectdetail.vue?vue&type=style&index=1&id=64ea179a&scoped=true&lang=css&\"","import { Vue } from '../vue';\nimport { PROP_TYPE_BOOLEAN } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  plain: makeProp(PROP_TYPE_BOOLEAN, false)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formCustomMixin = Vue.extend({\n  props: props,\n  computed: {\n    custom: function custom() {\n      return !this.plain;\n    }\n  }\n});","import { Vue } from '../vue';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  size: makeProp(PROP_TYPE_STRING)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formSizeMixin = Vue.extend({\n  props: props,\n  computed: {\n    sizeFormClass: function sizeFormClass() {\n      return [this.size ? \"form-control-\".concat(this.size) : null];\n    }\n  }\n});","//download.js v4.2, by dandavis; 2008-2016. [MIT] see http://danml.com/download.html for tests/usage\n// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime\n// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs\n// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.\n// v4 adds AMD/UMD, commonJS, and plain browser support\n// v4.1 adds url download capability via solo URL argument (same domain/CORS only)\n// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors\n// https://github.com/rndme/download\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.download = factory();\n  }\n}(this, function () {\n\n\treturn function download(data, strFileName, strMimeType) {\n\n\t\tvar self = window, // this script is only for browsers anyway...\n\t\t\tdefaultMime = \"application/octet-stream\", // this default mime also triggers iframe downloads\n\t\t\tmimeType = strMimeType || defaultMime,\n\t\t\tpayload = data,\n\t\t\turl = !strFileName && !strMimeType && payload,\n\t\t\tanchor = document.createElement(\"a\"),\n\t\t\ttoString = function(a){return String(a);},\n\t\t\tmyBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),\n\t\t\tfileName = strFileName || \"download\",\n\t\t\tblob,\n\t\t\treader;\n\t\t\tmyBlob= myBlob.call ? myBlob.bind(self) : Blob ;\n\t  \n\t\tif(String(this)===\"true\"){ //reverse arguments, allowing download.bind(true, \"text/xml\", \"export.xml\") to act as a callback\n\t\t\tpayload=[payload, mimeType];\n\t\t\tmimeType=payload[0];\n\t\t\tpayload=payload[1];\n\t\t}\n\n\n\t\tif(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument\n\t\t\tfileName = url.split(\"/\").pop().split(\"?\")[0];\n\t\t\tanchor.href = url; // assign href prop to temp anchor\n\t\t  \tif(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path:\n        \t\tvar ajax=new XMLHttpRequest();\n        \t\tajax.open( \"GET\", url, true);\n        \t\tajax.responseType = 'blob';\n        \t\tajax.onload= function(e){ \n\t\t\t\t  download(e.target.response, fileName, defaultMime);\n\t\t\t\t};\n        \t\tsetTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return:\n\t\t\t    return ajax;\n\t\t\t} // end if valid url?\n\t\t} // end if url?\n\n\n\t\t//go ahead and download dataURLs right away\n\t\tif(/^data:([\\w+-]+\\/[\\w+.-]+)?[,;]/.test(payload)){\n\t\t\n\t\t\tif(payload.length > (1024*1024*1.999) && myBlob !== toString ){\n\t\t\t\tpayload=dataUrlToBlob(payload);\n\t\t\t\tmimeType=payload.type || defaultMime;\n\t\t\t}else{\t\t\t\n\t\t\t\treturn navigator.msSaveBlob ?  // IE10 can't do a[download], only Blobs:\n\t\t\t\t\tnavigator.msSaveBlob(dataUrlToBlob(payload), fileName) :\n\t\t\t\t\tsaver(payload) ; // everyone else can save dataURLs un-processed\n\t\t\t}\n\t\t\t\n\t\t}else{//not data url, is it a string with special needs?\n\t\t\tif(/([\\x80-\\xff])/.test(payload)){\t\t\t  \n\t\t\t\tvar i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length;\n\t\t\t\tfor(i;i<mx;++i) tempUiArr[i]= payload.charCodeAt(i);\n\t\t\t \tpayload=new myBlob([tempUiArr], {type: mimeType});\n\t\t\t}\t\t  \n\t\t}\n\t\tblob = payload instanceof myBlob ?\n\t\t\tpayload :\n\t\t\tnew myBlob([payload], {type: mimeType}) ;\n\n\n\t\tfunction dataUrlToBlob(strUrl) {\n\t\t\tvar parts= strUrl.split(/[:;,]/),\n\t\t\ttype= parts[1],\n\t\t\tdecoder= parts[2] == \"base64\" ? atob : decodeURIComponent,\n\t\t\tbinData= decoder( parts.pop() ),\n\t\t\tmx= binData.length,\n\t\t\ti= 0,\n\t\t\tuiArr= new Uint8Array(mx);\n\n\t\t\tfor(i;i<mx;++i) uiArr[i]= binData.charCodeAt(i);\n\n\t\t\treturn new myBlob([uiArr], {type: type});\n\t\t }\n\n\t\tfunction saver(url, winMode){\n\n\t\t\tif ('download' in anchor) { //html5 A[download]\n\t\t\t\tanchor.href = url;\n\t\t\t\tanchor.setAttribute(\"download\", fileName);\n\t\t\t\tanchor.className = \"download-js-link\";\n\t\t\t\tanchor.innerHTML = \"downloading...\";\n\t\t\t\tanchor.style.display = \"none\";\n\t\t\t\tdocument.body.appendChild(anchor);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tanchor.click();\n\t\t\t\t\tdocument.body.removeChild(anchor);\n\t\t\t\t\tif(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(anchor.href);}, 250 );}\n\t\t\t\t}, 66);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// handle non-a[download] safari as best we can:\n\t\t\tif(/(Version)\\/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*Safari\\//.test(navigator.userAgent)) {\n\t\t\t\tif(/^data:/.test(url))\turl=\"data:\"+url.replace(/^data:([\\w\\/\\-\\+]+)/, defaultMime);\n\t\t\t\tif(!window.open(url)){ // popup blocked, offer direct download:\n\t\t\t\t\tif(confirm(\"Displaying New Document\\n\\nUse Save As... to download, then click back to return to this page.\")){ location.href=url; }\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t//do iframe dataURL download (old ch+FF):\n\t\t\tvar f = document.createElement(\"iframe\");\n\t\t\tdocument.body.appendChild(f);\n\n\t\t\tif(!winMode && /^data:/.test(url)){ // force a mime that will download:\n\t\t\t\turl=\"data:\"+url.replace(/^data:([\\w\\/\\-\\+]+)/, defaultMime);\n\t\t\t}\n\t\t\tf.src=url;\n\t\t\tsetTimeout(function(){ document.body.removeChild(f); }, 333);\n\n\t\t}//end saver\n\n\n\n\n\t\tif (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)\n\t\t\treturn navigator.msSaveBlob(blob, fileName);\n\t\t}\n\n\t\tif(self.URL){ // simple fast and modern way using Blob and URL:\n\t\t\tsaver(self.URL.createObjectURL(blob), true);\n\t\t}else{\n\t\t\t// handle non-Blob()+non-URL browsers:\n\t\t\tif(typeof blob === \"string\" || blob.constructor===toString ){\n\t\t\t\ttry{\n\t\t\t\t\treturn saver( \"data:\" +  mimeType   + \";base64,\"  +  self.btoa(blob)  );\n\t\t\t\t}catch(y){\n\t\t\t\t\treturn saver( \"data:\" +  mimeType   + \",\" + encodeURIComponent(blob)  );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Blob but not URL support:\n\t\t\treader=new FileReader();\n\t\t\treader.onload=function(e){\n\t\t\t\tsaver(this.result);\n\t\t\t};\n\t\t\treader.readAsDataURL(blob);\n\t\t}\n\t\treturn true;\n\t}; /* end download() */\n}));\n","import { closest, getAttr, getById, matches, select } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\nvar TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\n\nexport var filterEvent = function filterEvent(event) {\n  // Exit early when we don't have a target element\n  if (!event || !event.target) {\n    /* istanbul ignore next */\n    return false;\n  }\n\n  var el = event.target; // Exit early when element is disabled or a table element\n\n  if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n    return false;\n  } // Ignore the click when it was inside a dropdown menu\n\n\n  if (closest('.dropdown-menu', el)) {\n    return true;\n  }\n\n  var label = el.tagName === 'LABEL' ? el : closest('label', el); // If the label's form control is not disabled then we don't propagate event\n  // Modern browsers have `label.control` that references the associated input, but IE 11\n  // does not have this property on the label element, so we resort to DOM lookups\n\n  if (label) {\n    var labelFor = getAttr(label, 'for');\n    var input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n\n    if (input && !input.disabled) {\n      return true;\n    }\n  } // Otherwise check if the event target matches one of the selectors in the\n  // event filter (i.e. anchors, non disabled inputs, etc.)\n  // Return `true` if we should ignore the event\n\n\n  return matches(el, EVENT_FILTER);\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active'; // --- Helper methods ---\n\nvar getHeadSlotName = function getHeadSlotName(value) {\n  return \"head(\".concat(value || '', \")\");\n};\n\nvar getFootSlotName = function getFootSlotName(value) {\n  return \"foot(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = {\n  // Any Bootstrap theme variant (or custom)\n  headRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'light', 'dark' or `null` (or custom)\n  headVariant: makeProp(PROP_TYPE_STRING),\n  theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var theadMixin = Vue.extend({\n  props: props,\n  methods: {\n    fieldClasses: function fieldClasses(field) {\n      // Header field (<th>) classes\n      return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n    },\n    headClicked: function headClicked(event, field, isFoot) {\n      if (this.stopIfBusy && this.stopIfBusy(event)) {\n        // If table is busy (via provider) then don't propagate\n        return;\n      } else if (filterEvent(event)) {\n        // Clicked on a non-disabled control so ignore\n        return;\n      } else if (textSelectionActive(this.$el)) {\n        // User is selecting text, so ignore\n\n        /* istanbul ignore next: JSDOM doesn't support getSelection() */\n        return;\n      }\n\n      stopEvent(event);\n      this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n    },\n    renderThead: function renderThead() {\n      var _this = this;\n\n      var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var fields = this.computedFields,\n          isSortable = this.isSortable,\n          isSelectable = this.isSelectable,\n          headVariant = this.headVariant,\n          footVariant = this.footVariant,\n          headRowVariant = this.headRowVariant,\n          footRowVariant = this.footRowVariant;\n      var h = this.$createElement; // In always stacked mode, we don't bother rendering the head/foot\n      // Or if no field headings (empty table)\n\n      if (this.isStackedAlways || fields.length === 0) {\n        return h();\n      }\n\n      var hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED); // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n\n      var selectAllRows = isSelectable ? this.selectAllRows : noop;\n      var clearSelected = isSelectable ? this.clearSelected : noop; // Helper function to generate a field <th> cell\n\n      var makeCell = function makeCell(field, colIndex) {\n        var label = field.label,\n            labelHtml = field.labelHtml,\n            variant = field.variant,\n            stickyColumn = field.stickyColumn,\n            key = field.key;\n        var ariaLabel = null;\n\n        if (!field.label.trim() && !field.headerTitle) {\n          // In case field's label and title are empty/blank\n          // We need to add a hint about what the column is about for non-sighted users\n\n          /* istanbul ignore next */\n          ariaLabel = startCase(field.key);\n        }\n\n        var on = {};\n\n        if (hasHeadClickListener) {\n          on.click = function (event) {\n            _this.headClicked(event, field, isFoot);\n          };\n\n          on.keydown = function (event) {\n            var keyCode = event.keyCode;\n\n            if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n              _this.headClicked(event, field, isFoot);\n            }\n          };\n        }\n\n        var sortAttrs = isSortable ? _this.sortTheadThAttrs(key, field, isFoot) : {};\n        var sortClass = isSortable ? _this.sortTheadThClasses(key, field, isFoot) : null;\n        var sortLabel = isSortable ? _this.sortTheadThLabel(key, field, isFoot) : null;\n        var data = {\n          class: [_this.fieldClasses(field), sortClass],\n          props: {\n            variant: variant,\n            stickyColumn: stickyColumn\n          },\n          style: field.thStyle || {},\n          attrs: _objectSpread(_objectSpread({\n            // We only add a `tabindex` of `0` if there is a head-clicked listener\n            // and the current field is sortable\n            tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n            abbr: field.headerAbbr || null,\n            title: field.headerTitle || null,\n            'aria-colindex': colIndex + 1,\n            'aria-label': ariaLabel\n          }, _this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {})), sortAttrs),\n          on: on,\n          key: key\n        }; // Handle edge case where in-document templates are used with new\n        // `v-slot:name` syntax where the browser lower-cases the v-slot's\n        // name (attributes become lower cased when parsed by the browser)\n        // We have replaced the square bracket syntax with round brackets\n        // to prevent confusion with dynamic slot names\n\n        var slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()]; // Footer will fallback to header slot names\n\n        if (isFoot) {\n          slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName()].concat(_toConsumableArray(slotNames));\n        }\n\n        var scope = {\n          label: label,\n          column: key,\n          field: field,\n          isFoot: isFoot,\n          // Add in row select methods\n          selectAllRows: selectAllRows,\n          clearSelected: clearSelected\n        };\n        var $content = _this.normalizeSlot(slotNames, scope) || h('div', {\n          domProps: htmlOrText(labelHtml, label)\n        });\n        var $srLabel = sortLabel ? h('span', {\n          staticClass: 'sr-only'\n        }, \" (\".concat(sortLabel, \")\")) : null; // Return the header cell\n\n        return h(BTh, data, [$content, $srLabel].filter(identity));\n      }; // Generate the array of <th> cells\n\n\n      var $cells = fields.map(makeCell).filter(identity); // Generate the row(s)\n\n      var $trs = [];\n\n      if (isFoot) {\n        $trs.push(h(BTr, {\n          class: this.tfootTrClass,\n          props: {\n            variant: isUndefinedOrNull(footRowVariant) ? headRowVariant :\n            /* istanbul ignore next */\n            footRowVariant\n          }\n        }, $cells));\n      } else {\n        var scope = {\n          columns: fields.length,\n          fields: fields,\n          // Add in row select methods\n          selectAllRows: selectAllRows,\n          clearSelected: clearSelected\n        };\n        $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n        $trs.push(h(BTr, {\n          class: this.theadTrClass,\n          props: {\n            variant: headRowVariant\n          }\n        }, $cells));\n      }\n\n      return h(isFoot ? BTfoot : BThead, {\n        class: (isFoot ? this.tfootClass : this.theadClass) || null,\n        props: isFoot ? {\n          footVariant: footVariant || headVariant || null\n        } : {\n          headVariant: headVariant || null\n        },\n        key: isFoot ? 'bv-tfoot' : 'bv-thead'\n      }, $trs);\n    }\n  }\n});","var _objectSpread2;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_CHECKBOX } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { isArray } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { looseIndexOf } from '../../utils/loose-index-of';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { MODEL_EVENT_NAME, formRadioCheckMixin, props as formRadioCheckProps } from '../../mixins/form-radio-check'; // --- Constants ---\n\nvar MODEL_PROP_NAME_INDETERMINATE = 'indeterminate';\nvar MODEL_EVENT_NAME_INDETERMINATE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_INDETERMINATE; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formRadioCheckProps), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, MODEL_PROP_NAME_INDETERMINATE, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"switch\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"uncheckedValue\", makeProp(PROP_TYPE_ANY, false)), _defineProperty(_objectSpread2, \"value\", makeProp(PROP_TYPE_ANY, true)), _objectSpread2))), NAME_FORM_CHECKBOX); // --- Main component ---\n// @vue/component\n\nexport var BFormCheckbox = /*#__PURE__*/Vue.extend({\n  name: NAME_FORM_CHECKBOX,\n  mixins: [formRadioCheckMixin],\n  inject: {\n    bvGroup: {\n      from: 'bvCheckGroup',\n      default: null\n    }\n  },\n  props: props,\n  computed: {\n    isChecked: function isChecked() {\n      var value = this.value,\n          checked = this.computedLocalChecked;\n      return isArray(checked) ? looseIndexOf(checked, value) > -1 : looseEqual(checked, value);\n    },\n    isRadio: function isRadio() {\n      return false;\n    }\n  },\n  watch: _defineProperty({}, MODEL_PROP_NAME_INDETERMINATE, function (newValue, oldValue) {\n    if (!looseEqual(newValue, oldValue)) {\n      this.setIndeterminate(newValue);\n    }\n  }),\n  mounted: function mounted() {\n    // Set initial indeterminate state\n    this.setIndeterminate(this[MODEL_PROP_NAME_INDETERMINATE]);\n  },\n  methods: {\n    computedLocalCheckedWatcher: function computedLocalCheckedWatcher(newValue, oldValue) {\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n        var $input = this.$refs.input;\n\n        if ($input) {\n          this.$emit(MODEL_EVENT_NAME_INDETERMINATE, $input.indeterminate);\n        }\n      }\n    },\n    handleChange: function handleChange(_ref) {\n      var _this = this;\n\n      var _ref$target = _ref.target,\n          checked = _ref$target.checked,\n          indeterminate = _ref$target.indeterminate;\n      var value = this.value,\n          uncheckedValue = this.uncheckedValue; // Update `computedLocalChecked`\n\n      var localChecked = this.computedLocalChecked;\n\n      if (isArray(localChecked)) {\n        var index = looseIndexOf(localChecked, value);\n\n        if (checked && index < 0) {\n          // Add value to array\n          localChecked = localChecked.concat(value);\n        } else if (!checked && index > -1) {\n          // Remove value from array\n          localChecked = localChecked.slice(0, index).concat(localChecked.slice(index + 1));\n        }\n      } else {\n        localChecked = checked ? value : uncheckedValue;\n      }\n\n      this.computedLocalChecked = localChecked; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n      this.$nextTick(function () {\n        // Change is only emitted on user interaction\n        _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n        if (_this.isGroup) {\n          _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n        }\n\n        _this.$emit(MODEL_EVENT_NAME_INDETERMINATE, indeterminate);\n      });\n    },\n    setIndeterminate: function setIndeterminate(state) {\n      // Indeterminate only supported in single checkbox mode\n      if (isArray(this.computedLocalChecked)) {\n        state = false;\n      }\n\n      var $input = this.$refs.input;\n\n      if ($input) {\n        $input.indeterminate = state; // Emit update event to prop\n\n        this.$emit(MODEL_EVENT_NAME_INDETERMINATE, state);\n      }\n    }\n  }\n});","import { looseEqual } from './loose-equal'; // Assumes that the first argument is an array\n\nexport var looseIndexOf = function looseIndexOf(array, value) {\n  for (var i = 0; i < array.length; i++) {\n    if (looseEqual(array[i], value)) {\n      return i;\n    }\n  }\n\n  return -1;\n};","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_FILE } from '../../constants/components';\nimport { HAS_PROMISE_SUPPORT } from '../../constants/env';\nimport { EVENT_NAME_CHANGE, EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DROP_PLACEHOLDER, SLOT_NAME_FILE_NAME, SLOT_NAME_PLACEHOLDER } from '../../constants/slots';\nimport { RX_EXTENSION, RX_STAR } from '../../constants/regex';\nimport { File } from '../../constants/safe-types';\nimport { from as arrayFrom, flatten, flattenDeep } from '../../utils/array';\nimport { cloneDeep } from '../../utils/clone-deep';\nimport { closest } from '../../utils/dom';\nimport { eventOn, eventOff, stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isArray, isFile, isFunction, isNull, isUndefinedOrNull } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props';\nimport { escapeRegExp } from '../../utils/string';\nimport { warn } from '../../utils/warn';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formCustomMixin, props as formCustomProps } from '../../mixins/form-custom';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as formSizeProps } from '../../mixins/form-size'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: [PROP_TYPE_ARRAY, File],\n  defaultValue: null,\n  validator: function validator(value) {\n    /* istanbul ignore next */\n    if (value === '') {\n      warn(VALUE_EMPTY_DEPRECATED_MSG, NAME_FORM_FILE);\n      return true;\n    }\n\n    return isUndefinedOrNull(value) || isValidValue(value);\n  }\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nvar VALUE_EMPTY_DEPRECATED_MSG = 'Setting \"value\"/\"v-model\" to an empty string for reset is deprecated. Set to \"null\" instead.'; // --- Helper methods ---\n\nvar isValidValue = function isValidValue(value) {\n  return isFile(value) || isArray(value) && value.every(function (v) {\n    return isValidValue(v);\n  });\n}; // Helper method to \"safely\" get the entry from a data-transfer item\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getDataTransferItemEntry = function getDataTransferItemEntry(item) {\n  return isFunction(item.getAsEntry) ? item.getAsEntry() : isFunction(item.webkitGetAsEntry) ? item.webkitGetAsEntry() : null;\n}; // Drop handler function to get all files\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getAllFileEntries = function getAllFileEntries(dataTransferItemList) {\n  var traverseDirectories = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  return Promise.all(arrayFrom(dataTransferItemList).filter(function (item) {\n    return item.kind === 'file';\n  }).map(function (item) {\n    var entry = getDataTransferItemEntry(item);\n\n    if (entry) {\n      if (entry.isDirectory && traverseDirectories) {\n        return getAllFileEntriesInDirectory(entry.createReader(), \"\".concat(entry.name, \"/\"));\n      } else if (entry.isFile) {\n        return new Promise(function (resolve) {\n          entry.file(function (file) {\n            file.$path = '';\n            resolve(file);\n          });\n        });\n      }\n    }\n\n    return null;\n  }).filter(identity));\n}; // Get all the file entries (recursive) in a directory\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getAllFileEntriesInDirectory = function getAllFileEntriesInDirectory(directoryReader) {\n  var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  return new Promise(function (resolve) {\n    var entryPromises = [];\n\n    var readDirectoryEntries = function readDirectoryEntries() {\n      directoryReader.readEntries(function (entries) {\n        if (entries.length === 0) {\n          resolve(Promise.all(entryPromises).then(function (entries) {\n            return flatten(entries);\n          }));\n        } else {\n          entryPromises.push(Promise.all(entries.map(function (entry) {\n            if (entry) {\n              if (entry.isDirectory) {\n                return getAllFileEntriesInDirectory(entry.createReader(), \"\".concat(path).concat(entry.name, \"/\"));\n              } else if (entry.isFile) {\n                return new Promise(function (resolve) {\n                  entry.file(function (file) {\n                    file.$path = \"\".concat(path).concat(file.name);\n                    resolve(file);\n                  });\n                });\n              }\n            }\n\n            return null;\n          }).filter(identity)));\n          readDirectoryEntries();\n        }\n      });\n    };\n\n    readDirectoryEntries();\n  });\n}; // --- Props ---\n\n\nvar props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formCustomProps), formStateProps), formSizeProps), {}, {\n  accept: makeProp(PROP_TYPE_STRING, ''),\n  browseText: makeProp(PROP_TYPE_STRING, 'Browse'),\n  // Instruct input to capture from camera\n  capture: makeProp(PROP_TYPE_BOOLEAN, false),\n  directory: makeProp(PROP_TYPE_BOOLEAN, false),\n  dropPlaceholder: makeProp(PROP_TYPE_STRING, 'Drop files here'),\n  fileNameFormatter: makeProp(PROP_TYPE_FUNCTION),\n  multiple: makeProp(PROP_TYPE_BOOLEAN, false),\n  noDrop: makeProp(PROP_TYPE_BOOLEAN, false),\n  noDropPlaceholder: makeProp(PROP_TYPE_STRING, 'Not allowed'),\n  // TODO:\n  //   Should we deprecate this and only support flat file structures?\n  //   Nested file structures are only supported when files are dropped\n  //   A Chromium \"bug\" prevents `webkitEntries` from being populated\n  //   on the file input's `change` event and is marked as \"WontFix\"\n  //   Mozilla implemented the behavior the same way as Chromium\n  //   See: https://bugs.chromium.org/p/chromium/issues/detail?id=138987\n  //   See: https://bugzilla.mozilla.org/show_bug.cgi?id=1326031\n  noTraverse: makeProp(PROP_TYPE_BOOLEAN, false),\n  placeholder: makeProp(PROP_TYPE_STRING, 'No file chosen')\n})), NAME_FORM_FILE); // --- Main component ---\n// @vue/component\n\nexport var BFormFile = /*#__PURE__*/Vue.extend({\n  name: NAME_FORM_FILE,\n  mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formStateMixin, formCustomMixin, normalizeSlotMixin],\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    return {\n      files: [],\n      dragging: false,\n      // IE 11 doesn't respect setting `event.dataTransfer.dropEffect`,\n      // so we handle it ourselves as well\n      // https://stackoverflow.com/a/46915971/2744776\n      dropAllowed: !this.noDrop,\n      hasFocus: false\n    };\n  },\n  computed: {\n    // Convert `accept` to an array of `[{ RegExpr, isMime }, ...]`\n    computedAccept: function computedAccept() {\n      var accept = this.accept;\n      accept = (accept || '').trim().split(/[,\\s]+/).filter(identity); // Allow any file type/extension\n\n      if (accept.length === 0) {\n        return null;\n      }\n\n      return accept.map(function (extOrType) {\n        var prop = 'name';\n        var startMatch = '^';\n        var endMatch = '$';\n\n        if (RX_EXTENSION.test(extOrType)) {\n          // File extension /\\.ext$/\n          startMatch = '';\n        } else {\n          // MIME type /^mime\\/.+$/ or /^mime\\/type$/\n          prop = 'type';\n\n          if (RX_STAR.test(extOrType)) {\n            endMatch = '.+$'; // Remove trailing `*`\n\n            extOrType = extOrType.slice(0, -1);\n          }\n        } // Escape all RegExp special chars\n\n\n        extOrType = escapeRegExp(extOrType);\n        var rx = new RegExp(\"\".concat(startMatch).concat(extOrType).concat(endMatch));\n        return {\n          rx: rx,\n          prop: prop\n        };\n      });\n    },\n    computedCapture: function computedCapture() {\n      var capture = this.capture;\n      return capture === true || capture === '' ? true : capture || null;\n    },\n    computedAttrs: function computedAttrs() {\n      var name = this.name,\n          disabled = this.disabled,\n          required = this.required,\n          form = this.form,\n          computedCapture = this.computedCapture,\n          accept = this.accept,\n          multiple = this.multiple,\n          directory = this.directory;\n      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n        type: 'file',\n        id: this.safeId(),\n        name: name,\n        disabled: disabled,\n        required: required,\n        form: form || null,\n        capture: computedCapture,\n        accept: accept || null,\n        multiple: multiple,\n        directory: directory,\n        webkitdirectory: directory,\n        'aria-required': required ? 'true' : null\n      });\n    },\n    computedFileNameFormatter: function computedFileNameFormatter() {\n      var fileNameFormatter = this.fileNameFormatter;\n      return hasPropFunction(fileNameFormatter) ? fileNameFormatter : this.defaultFileNameFormatter;\n    },\n    clonedFiles: function clonedFiles() {\n      return cloneDeep(this.files);\n    },\n    flattenedFiles: function flattenedFiles() {\n      return flattenDeep(this.files);\n    },\n    fileNames: function fileNames() {\n      return this.flattenedFiles.map(function (file) {\n        return file.name;\n      });\n    },\n    labelContent: function labelContent() {\n      // Draging active\n\n      /* istanbul ignore next: used by drag/drop which can't be tested easily */\n      if (this.dragging && !this.noDrop) {\n        return (// TODO: Add additional scope with file count, and other not-allowed reasons\n          this.normalizeSlot(SLOT_NAME_DROP_PLACEHOLDER, {\n            allowed: this.dropAllowed\n          }) || (this.dropAllowed ? this.dropPlaceholder : this.$createElement('span', {\n            staticClass: 'text-danger'\n          }, this.noDropPlaceholder))\n        );\n      } // No file chosen\n\n\n      if (this.files.length === 0) {\n        return this.normalizeSlot(SLOT_NAME_PLACEHOLDER) || this.placeholder;\n      }\n\n      var flattenedFiles = this.flattenedFiles,\n          clonedFiles = this.clonedFiles,\n          fileNames = this.fileNames,\n          computedFileNameFormatter = this.computedFileNameFormatter; // There is a slot for formatting the files/names\n\n      if (this.hasNormalizedSlot(SLOT_NAME_FILE_NAME)) {\n        return this.normalizeSlot(SLOT_NAME_FILE_NAME, {\n          files: flattenedFiles,\n          filesTraversed: clonedFiles,\n          names: fileNames\n        });\n      }\n\n      return computedFileNameFormatter(flattenedFiles, clonedFiles, fileNames);\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n    if (!newValue || isArray(newValue) && newValue.length === 0) {\n      this.reset();\n    }\n  }), _defineProperty(_watch, \"files\", function files(newValue, oldValue) {\n    if (!looseEqual(newValue, oldValue)) {\n      var multiple = this.multiple,\n          noTraverse = this.noTraverse;\n      var files = !multiple || noTraverse ? flattenDeep(newValue) : newValue;\n      this.$emit(MODEL_EVENT_NAME, multiple ? files : files[0] || null);\n    }\n  }), _watch),\n  created: function created() {\n    // Create private non-reactive props\n    this.$_form = null;\n  },\n  mounted: function mounted() {\n    // Listen for form reset events, to reset the file input\n    var $form = closest('form', this.$el);\n\n    if ($form) {\n      eventOn($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n      this.$_form = $form;\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    var $form = this.$_form;\n\n    if ($form) {\n      eventOff($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n    }\n  },\n  methods: {\n    isFileValid: function isFileValid(file) {\n      if (!file) {\n        return false;\n      }\n\n      var accept = this.computedAccept;\n      return accept ? accept.some(function (a) {\n        return a.rx.test(file[a.prop]);\n      }) : true;\n    },\n    isFilesArrayValid: function isFilesArrayValid(files) {\n      var _this = this;\n\n      return isArray(files) ? files.every(function (file) {\n        return _this.isFileValid(file);\n      }) : this.isFileValid(files);\n    },\n    defaultFileNameFormatter: function defaultFileNameFormatter(flattenedFiles, clonedFiles, fileNames) {\n      return fileNames.join(', ');\n    },\n    setFiles: function setFiles(files) {\n      // Reset the dragging flags\n      this.dropAllowed = !this.noDrop;\n      this.dragging = false; // Set the selected files\n\n      this.files = this.multiple ? this.directory ? files : flattenDeep(files) : flattenDeep(files).slice(0, 1);\n    },\n\n    /* istanbul ignore next: used by Drag/Drop */\n    setInputFiles: function setInputFiles(files) {\n      // Try an set the file input files array so that `required`\n      // constraint works for dropped files (will fail in IE11 though)\n      // To be used only when dropping files\n      try {\n        // Firefox < 62 workaround exploiting https://bugzilla.mozilla.org/show_bug.cgi?id=1422655\n        var dataTransfer = new ClipboardEvent('').clipboardData || new DataTransfer(); // Add flattened files to temp `dataTransfer` object to get a true `FileList` array\n\n        flattenDeep(cloneDeep(files)).forEach(function (file) {\n          // Make sure to remove the custom `$path` attribute\n          delete file.$path;\n          dataTransfer.items.add(file);\n        });\n        this.$refs.input.files = dataTransfer.files;\n      } catch (_unused) {}\n    },\n    reset: function reset() {\n      // IE 11 doesn't support setting `$input.value` to `''` or `null`\n      // So we use this little extra hack to reset the value, just in case\n      // This also appears to work on modern browsers as well\n      // Wrapped in try in case IE 11 or mobile Safari crap out\n      try {\n        var $input = this.$refs.input;\n        $input.value = '';\n        $input.type = '';\n        $input.type = 'file';\n      } catch (_unused2) {}\n\n      this.files = [];\n    },\n    handleFiles: function handleFiles(files) {\n      var isDrop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (isDrop) {\n        // When dropped, make sure to filter files with the internal `accept` logic\n        var filteredFiles = files.filter(this.isFilesArrayValid); // Only update files when we have any after filtering\n\n        if (filteredFiles.length > 0) {\n          this.setFiles(filteredFiles); // Try an set the file input's files array so that `required`\n          // constraint works for dropped files (will fail in IE 11 though)\n\n          this.setInputFiles(filteredFiles);\n        }\n      } else {\n        // We always update the files from the `change` event\n        this.setFiles(files);\n      }\n    },\n    focusHandler: function focusHandler(event) {\n      // Bootstrap v4 doesn't have focus styling for custom file input\n      // Firefox has a `[type=file]:focus ~ sibling` selector issue,\n      // so we add a `focus` class to get around these bugs\n      if (this.plain || event.type === 'focusout') {\n        this.hasFocus = false;\n      } else {\n        // Add focus styling for custom file input\n        this.hasFocus = true;\n      }\n    },\n    onChange: function onChange(event) {\n      var _this2 = this;\n\n      var type = event.type,\n          target = event.target,\n          _event$dataTransfer = event.dataTransfer,\n          dataTransfer = _event$dataTransfer === void 0 ? {} : _event$dataTransfer;\n      var isDrop = type === 'drop'; // Always emit original event\n\n      this.$emit(EVENT_NAME_CHANGE, event);\n      var items = arrayFrom(dataTransfer.items || []);\n\n      if (HAS_PROMISE_SUPPORT && items.length > 0 && !isNull(getDataTransferItemEntry(items[0]))) {\n        // Drop handling for modern browsers\n        // Supports nested directory structures in `directory` mode\n\n        /* istanbul ignore next: not supported in JSDOM */\n        getAllFileEntries(items, this.directory).then(function (files) {\n          return _this2.handleFiles(files, isDrop);\n        });\n      } else {\n        // Standard file input handling (native file input change event),\n        // or fallback drop mode (IE 11 / Opera) which don't support `directory` mode\n        var files = arrayFrom(target.files || dataTransfer.files || []).map(function (file) {\n          // Add custom `$path` property to each file (to be consistent with drop mode)\n          file.$path = file.webkitRelativePath || '';\n          return file;\n        });\n        this.handleFiles(files, isDrop);\n      }\n    },\n    onDragenter: function onDragenter(event) {\n      stopEvent(event);\n      this.dragging = true;\n      var _event$dataTransfer2 = event.dataTransfer,\n          dataTransfer = _event$dataTransfer2 === void 0 ? {} : _event$dataTransfer2; // Early exit when the input or dropping is disabled\n\n      if (this.noDrop || this.disabled || !this.dropAllowed) {\n        // Show deny feedback\n\n        /* istanbul ignore next: not supported in JSDOM */\n        dataTransfer.dropEffect = 'none';\n        this.dropAllowed = false;\n        return;\n      }\n      /* istanbul ignore next: not supported in JSDOM */\n\n\n      dataTransfer.dropEffect = 'copy';\n    },\n    // Note this event fires repeatedly while the mouse is over the dropzone at\n    // intervals in the milliseconds, so avoid doing much processing in here\n    onDragover: function onDragover(event) {\n      stopEvent(event);\n      this.dragging = true;\n      var _event$dataTransfer3 = event.dataTransfer,\n          dataTransfer = _event$dataTransfer3 === void 0 ? {} : _event$dataTransfer3; // Early exit when the input or dropping is disabled\n\n      if (this.noDrop || this.disabled || !this.dropAllowed) {\n        // Show deny feedback\n\n        /* istanbul ignore next: not supported in JSDOM */\n        dataTransfer.dropEffect = 'none';\n        this.dropAllowed = false;\n        return;\n      }\n      /* istanbul ignore next: not supported in JSDOM */\n\n\n      dataTransfer.dropEffect = 'copy';\n    },\n    onDragleave: function onDragleave(event) {\n      var _this3 = this;\n\n      stopEvent(event);\n      this.$nextTick(function () {\n        _this3.dragging = false; // Reset `dropAllowed` to default\n\n        _this3.dropAllowed = !_this3.noDrop;\n      });\n    },\n    // Triggered by a file drop onto drop target\n    onDrop: function onDrop(event) {\n      var _this4 = this;\n\n      stopEvent(event);\n      this.dragging = false; // Early exit when the input or dropping is disabled\n\n      if (this.noDrop || this.disabled || !this.dropAllowed) {\n        this.$nextTick(function () {\n          // Reset `dropAllowed` to default\n          _this4.dropAllowed = !_this4.noDrop;\n        });\n        return;\n      }\n\n      this.onChange(event);\n    }\n  },\n  render: function render(h) {\n    var custom = this.custom,\n        plain = this.plain,\n        size = this.size,\n        dragging = this.dragging,\n        stateClass = this.stateClass,\n        bvAttrs = this.bvAttrs; // Form Input\n\n    var $input = h('input', {\n      class: [{\n        'form-control-file': plain,\n        'custom-file-input': custom,\n        focus: custom && this.hasFocus\n      }, stateClass],\n      // With IE 11, the input gets in the \"way\" of the drop events,\n      // so we move it out of the way by putting it behind the label\n      // Bootstrap v4 has it in front\n      style: custom ? {\n        zIndex: -5\n      } : {},\n      attrs: this.computedAttrs,\n      on: {\n        change: this.onChange,\n        focusin: this.focusHandler,\n        focusout: this.focusHandler,\n        reset: this.reset\n      },\n      ref: 'input'\n    });\n\n    if (plain) {\n      return $input;\n    } // Overlay label\n\n\n    var $label = h('label', {\n      staticClass: 'custom-file-label',\n      class: {\n        dragging: dragging\n      },\n      attrs: {\n        for: this.safeId(),\n        // This goes away in Bootstrap v5\n        'data-browse': this.browseText || null\n      }\n    }, [h('span', {\n      staticClass: 'd-block form-file-text',\n      // `pointer-events: none` is used to make sure\n      // the drag events fire only on the label\n      style: {\n        pointerEvents: 'none'\n      }\n    }, [this.labelContent])]); // Return rendered custom file input\n\n    return h('div', {\n      staticClass: 'custom-file b-form-file',\n      class: [_defineProperty({}, \"b-custom-control-\".concat(size), size), stateClass, bvAttrs.class],\n      style: bvAttrs.style,\n      attrs: {\n        id: this.safeId('_BV_file_outer_')\n      },\n      on: {\n        dragenter: this.onDragenter,\n        dragover: this.onDragover,\n        dragleave: this.onDragleave,\n        drop: this.onDrop\n      }\n    }, [$input, $label]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_APPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_APPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAppend = /*#__PURE__*/Vue.extend({\n  name: NAME_INPUT_GROUP_APPEND,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    // Pass all our data down to child, and set `append` to `true`\n    return h(BInputGroupAddon, mergeData(data, {\n      props: _objectSpread(_objectSpread({}, props), {}, {\n        append: true\n      })\n    }), children);\n  }\n});","import { getSel, isElement } from '../../../utils/dom'; // Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\n\nexport var textSelectionActive = function textSelectionActive() {\n  var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n  var sel = getSel();\n  return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ?\n  /* istanbul ignore next */\n  sel.containsNode(el, true) : false;\n};","import { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupText = /*#__PURE__*/Vue.extend({\n  name: NAME_INPUT_GROUP_TEXT,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'input-group-text'\n    }), children);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_LIST_GROUP_ITEM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes } from '../../utils/array';\nimport { isTag } from '../../utils/dom';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Constants ---\n\nvar actionTags = ['a', 'router-link', 'button', 'b-link']; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n  action: makeProp(PROP_TYPE_BOOLEAN, false),\n  button: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  variant: makeProp(PROP_TYPE_STRING)\n})), NAME_LIST_GROUP_ITEM); // --- Main component ---\n// @vue/component\n\nexport var BListGroupItem = /*#__PURE__*/Vue.extend({\n  name: NAME_LIST_GROUP_ITEM,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var _class;\n\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var button = props.button,\n        variant = props.variant,\n        active = props.active,\n        disabled = props.disabled;\n    var link = isLink(props);\n    var tag = button ? 'button' : !link ? props.tag : BLink;\n    var action = !!(props.action || link || button || arrayIncludes(actionTags, props.tag));\n    var attrs = {};\n    var itemProps = {};\n\n    if (isTag(tag, 'button')) {\n      if (!data.attrs || !data.attrs.type) {\n        // Add a type for button is one not provided in passed attributes\n        attrs.type = 'button';\n      }\n\n      if (props.disabled) {\n        // Set disabled attribute if button and disabled\n        attrs.disabled = true;\n      }\n    } else {\n      itemProps = pluckProps(linkProps, props);\n    }\n\n    return h(tag, mergeData(data, {\n      attrs: attrs,\n      props: itemProps,\n      staticClass: 'list-group-item',\n      class: (_class = {}, _defineProperty(_class, \"list-group-item-\".concat(variant), variant), _defineProperty(_class, 'list-group-item-action', action), _defineProperty(_class, \"active\", active), _defineProperty(_class, \"disabled\", disabled), _class)\n    }), children);\n  }\n});","var _watch, _methods;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../vue';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { EVENT_NAME_CHANGE } from '../constants/events';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { isBoolean } from '../utils/inspect';\nimport { looseEqual } from '../utils/loose-equal';\nimport { makeModelMixin } from '../utils/model';\nimport { sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { attrsMixin } from './attrs';\nimport { formControlMixin, props as formControlProps } from './form-control';\nimport { formCustomMixin, props as formCustomProps } from './form-custom';\nimport { formSizeMixin, props as formSizeProps } from './form-size';\nimport { formStateMixin, props as formStateProps } from './form-state';\nimport { idMixin, props as idProps } from './id';\nimport { normalizeSlotMixin } from './normalize-slot'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('checked', {\n  defaultValue: null\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formSizeProps), formStateProps), formCustomProps), {}, {\n  ariaLabel: makeProp(PROP_TYPE_STRING),\n  ariaLabelledby: makeProp(PROP_TYPE_STRING),\n  // Only applicable in standalone mode (non group)\n  button: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Only applicable when rendered with button style\n  buttonVariant: makeProp(PROP_TYPE_STRING),\n  inline: makeProp(PROP_TYPE_BOOLEAN, false),\n  value: makeProp(PROP_TYPE_ANY)\n})), 'formRadioCheckControls'); // --- Mixin ---\n// @vue/component\n\nexport var formRadioCheckMixin = Vue.extend({\n  mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin],\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    return {\n      localChecked: this.isGroup ? this.bvGroup[MODEL_PROP_NAME] : this[MODEL_PROP_NAME],\n      hasFocus: false\n    };\n  },\n  computed: {\n    computedLocalChecked: {\n      get: function get() {\n        return this.isGroup ? this.bvGroup.localChecked : this.localChecked;\n      },\n      set: function set(value) {\n        if (this.isGroup) {\n          this.bvGroup.localChecked = value;\n        } else {\n          this.localChecked = value;\n        }\n      }\n    },\n    isChecked: function isChecked() {\n      return looseEqual(this.value, this.computedLocalChecked);\n    },\n    isRadio: function isRadio() {\n      return true;\n    },\n    isGroup: function isGroup() {\n      // Is this check/radio a child of check-group or radio-group?\n      return !!this.bvGroup;\n    },\n    isBtnMode: function isBtnMode() {\n      // Support button style in single input mode\n      return this.isGroup ? this.bvGroup.buttons : this.button;\n    },\n    isPlain: function isPlain() {\n      return this.isBtnMode ? false : this.isGroup ? this.bvGroup.plain : this.plain;\n    },\n    isCustom: function isCustom() {\n      return this.isBtnMode ? false : !this.isPlain;\n    },\n    isSwitch: function isSwitch() {\n      // Custom switch styling (checkboxes only)\n      return this.isBtnMode || this.isRadio || this.isPlain ? false : this.isGroup ? this.bvGroup.switches : this.switch;\n    },\n    isInline: function isInline() {\n      return this.isGroup ? this.bvGroup.inline : this.inline;\n    },\n    isDisabled: function isDisabled() {\n      // Child can be disabled while parent isn't, but is always disabled if group is\n      return this.isGroup ? this.bvGroup.disabled || this.disabled : this.disabled;\n    },\n    isRequired: function isRequired() {\n      // Required only works when a name is provided for the input(s)\n      // Child can only be required when parent is\n      // Groups will always have a name (either user supplied or auto generated)\n      return this.computedName && (this.isGroup ? this.bvGroup.required : this.required);\n    },\n    computedName: function computedName() {\n      // Group name preferred over local name\n      return (this.isGroup ? this.bvGroup.groupName : this.name) || null;\n    },\n    computedForm: function computedForm() {\n      return (this.isGroup ? this.bvGroup.form : this.form) || null;\n    },\n    computedSize: function computedSize() {\n      return (this.isGroup ? this.bvGroup.size : this.size) || '';\n    },\n    computedState: function computedState() {\n      return this.isGroup ? this.bvGroup.computedState : isBoolean(this.state) ? this.state : null;\n    },\n    computedButtonVariant: function computedButtonVariant() {\n      // Local variant preferred over group variant\n      var buttonVariant = this.buttonVariant;\n\n      if (buttonVariant) {\n        return buttonVariant;\n      }\n\n      if (this.isGroup && this.bvGroup.buttonVariant) {\n        return this.bvGroup.buttonVariant;\n      }\n\n      return 'secondary';\n    },\n    buttonClasses: function buttonClasses() {\n      var _ref;\n\n      var computedSize = this.computedSize;\n      return ['btn', \"btn-\".concat(this.computedButtonVariant), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(computedSize), computedSize), _defineProperty(_ref, \"disabled\", this.isDisabled), _defineProperty(_ref, \"active\", this.isChecked), _defineProperty(_ref, \"focus\", this.hasFocus), _ref)];\n    },\n    computedAttrs: function computedAttrs() {\n      var disabled = this.isDisabled,\n          required = this.isRequired;\n      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n        id: this.safeId(),\n        type: this.isRadio ? 'radio' : 'checkbox',\n        name: this.computedName,\n        form: this.computedForm,\n        disabled: disabled,\n        required: required,\n        'aria-required': required || null,\n        'aria-label': this.ariaLabel || null,\n        'aria-labelledby': this.ariaLabelledby || null\n      });\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function () {\n    this[\"\".concat(MODEL_PROP_NAME, \"Watcher\")].apply(this, arguments);\n  }), _defineProperty(_watch, \"computedLocalChecked\", function computedLocalChecked() {\n    this.computedLocalCheckedWatcher.apply(this, arguments);\n  }), _watch),\n  methods: (_methods = {}, _defineProperty(_methods, \"\".concat(MODEL_PROP_NAME, \"Watcher\"), function Watcher(newValue) {\n    if (!looseEqual(newValue, this.computedLocalChecked)) {\n      this.computedLocalChecked = newValue;\n    }\n  }), _defineProperty(_methods, \"computedLocalCheckedWatcher\", function computedLocalCheckedWatcher(newValue, oldValue) {\n    if (!looseEqual(newValue, oldValue)) {\n      this.$emit(MODEL_EVENT_NAME, newValue);\n    }\n  }), _defineProperty(_methods, \"handleChange\", function handleChange(_ref2) {\n    var _this = this;\n\n    var checked = _ref2.target.checked;\n    var value = this.value;\n    var localChecked = checked ? value : null;\n    this.computedLocalChecked = value; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n    this.$nextTick(function () {\n      // Change is only emitted on user interaction\n      _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n      if (_this.isGroup) {\n        _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n      }\n    });\n  }), _defineProperty(_methods, \"handleFocus\", function handleFocus(event) {\n    // When in buttons mode, we need to add 'focus' class to label when input focused\n    // As it is the hidden input which has actual focus\n    if (event.target) {\n      if (event.type === 'focus') {\n        this.hasFocus = true;\n      } else if (event.type === 'blur') {\n        this.hasFocus = false;\n      }\n    }\n  }), _defineProperty(_methods, \"focus\", function focus() {\n    if (!this.isDisabled) {\n      attemptFocus(this.$refs.input);\n    }\n  }), _defineProperty(_methods, \"blur\", function blur() {\n    if (!this.isDisabled) {\n      attemptBlur(this.$refs.input);\n    }\n  }), _methods),\n  render: function render(h) {\n    var isRadio = this.isRadio,\n        isBtnMode = this.isBtnMode,\n        isPlain = this.isPlain,\n        isCustom = this.isCustom,\n        isInline = this.isInline,\n        isSwitch = this.isSwitch,\n        computedSize = this.computedSize,\n        bvAttrs = this.bvAttrs;\n    var $content = this.normalizeSlot();\n    var $input = h('input', {\n      class: [{\n        'form-check-input': isPlain,\n        'custom-control-input': isCustom,\n        // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n        'position-static': isPlain && !$content\n      }, isBtnMode ? '' : this.stateClass],\n      directives: [{\n        name: 'model',\n        value: this.computedLocalChecked\n      }],\n      attrs: this.computedAttrs,\n      domProps: {\n        value: this.value,\n        checked: this.isChecked\n      },\n      on: _objectSpread({\n        change: this.handleChange\n      }, isBtnMode ? {\n        focus: this.handleFocus,\n        blur: this.handleFocus\n      } : {}),\n      key: 'input',\n      ref: 'input'\n    });\n\n    if (isBtnMode) {\n      var $button = h('label', {\n        class: this.buttonClasses\n      }, [$input, $content]);\n\n      if (!this.isGroup) {\n        // Standalone button mode, so wrap in 'btn-group-toggle'\n        // and flag it as inline-block to mimic regular buttons\n        $button = h('div', {\n          class: ['btn-group-toggle', 'd-inline-block']\n        }, [$button]);\n      }\n\n      return $button;\n    } // If no label content in plain mode we dont render the label\n    // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n\n\n    var $label = h();\n\n    if (!(isPlain && !$content)) {\n      $label = h('label', {\n        class: {\n          'form-check-label': isPlain,\n          'custom-control-label': isCustom\n        },\n        attrs: {\n          for: this.safeId()\n        }\n      }, $content);\n    }\n\n    return h('div', {\n      class: [_defineProperty({\n        'form-check': isPlain,\n        'form-check-inline': isPlain && isInline,\n        'custom-control': isCustom,\n        'custom-control-inline': isCustom && isInline,\n        'custom-checkbox': isCustom && !isRadio && !isSwitch,\n        'custom-switch': isSwitch,\n        'custom-radio': isCustom && isRadio\n      }, \"b-custom-control-\".concat(computedSize), computedSize && !isBtnMode), bvAttrs.class],\n      style: bvAttrs.style\n    }, [$input, $label]);\n  }\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var colgroupMixin = Vue.extend({\n  methods: {\n    renderColgroup: function renderColgroup() {\n      var fields = this.computedFields;\n      var h = this.$createElement;\n      var $colgroup = h();\n\n      if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n        $colgroup = h('colgroup', {\n          key: 'colgroup'\n        }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n          columns: fields.length,\n          fields: fields\n        })]);\n      }\n\n      return $colgroup;\n    }\n  }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  textTag: makeProp(PROP_TYPE_STRING, 'p')\n}, NAME_CARD_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BCardText = /*#__PURE__*/Vue.extend({\n  name: NAME_CARD_TEXT,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    return h(props.textTag, mergeData(data, {\n      staticClass: 'card-text'\n    }), children);\n  }\n});","import { Vue } from '../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptFocus, isVisible, matches, requestAF, select } from '../utils/dom';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Constants ---\n\nvar SELECTOR = 'input, textarea, select'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  autofocus: makeProp(PROP_TYPE_BOOLEAN, false),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  form: makeProp(PROP_TYPE_STRING),\n  id: makeProp(PROP_TYPE_STRING),\n  name: makeProp(PROP_TYPE_STRING),\n  required: makeProp(PROP_TYPE_BOOLEAN, false)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formControlMixin = Vue.extend({\n  props: props,\n  mounted: function mounted() {\n    this.handleAutofocus();\n  },\n\n  /* istanbul ignore next */\n  activated: function activated() {\n    this.handleAutofocus();\n  },\n  methods: {\n    handleAutofocus: function handleAutofocus() {\n      var _this = this;\n\n      this.$nextTick(function () {\n        requestAF(function () {\n          var el = _this.$el;\n\n          if (_this.autofocus && isVisible(el)) {\n            if (!matches(el, SELECTOR)) {\n              el = select(SELECTOR, el);\n            }\n\n            attemptFocus(el);\n          }\n        });\n      });\n    }\n  }\n});","// Base on-demand component for tooltip / popover templates\n//\n// Currently:\n//   Responsible for positioning and transitioning the template\n//   Templates are only instantiated when shown, and destroyed when hidden\n//\nimport Popper from 'popper.js';\nimport { Vue } from '../../../vue';\nimport { NAME_POPPER } from '../../../constants/components';\nimport { EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, HOOK_EVENT_NAME_DESTROYED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { HTMLElement, SVGElement } from '../../../constants/safe-types';\nimport { getCS, requestAF, select } from '../../../utils/dom';\nimport { toFloat } from '../../../utils/number';\nimport { makeProp } from '../../../utils/props';\nimport { BVTransition } from '../../transition/bv-transition'; // --- Constants ---\n\nvar AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: 'right',\n  BOTTOM: 'bottom',\n  LEFT: 'left',\n  TOPLEFT: 'top',\n  TOPRIGHT: 'top',\n  RIGHTTOP: 'right',\n  RIGHTBOTTOM: 'right',\n  BOTTOMLEFT: 'bottom',\n  BOTTOMRIGHT: 'bottom',\n  LEFTTOP: 'left',\n  LEFTBOTTOM: 'left'\n};\nvar OffsetMap = {\n  AUTO: 0,\n  TOPLEFT: -1,\n  TOP: 0,\n  TOPRIGHT: +1,\n  RIGHTTOP: -1,\n  RIGHT: 0,\n  RIGHTBOTTOM: +1,\n  BOTTOMLEFT: -1,\n  BOTTOM: 0,\n  BOTTOMRIGHT: +1,\n  LEFTTOP: -1,\n  LEFT: 0,\n  LEFTBOTTOM: +1\n}; // --- Props ---\n\nexport var props = {\n  // The minimum distance (in `px`) from the edge of the\n  // tooltip/popover that the arrow can be positioned\n  arrowPadding: makeProp(PROP_TYPE_NUMBER_STRING, 6),\n  // 'scrollParent', 'viewport', 'window', or `Element`\n  boundary: makeProp([HTMLElement, PROP_TYPE_STRING], 'scrollParent'),\n  // Tooltip/popover will try and stay away from\n  // boundary edge by this many pixels\n  boundaryPadding: makeProp(PROP_TYPE_NUMBER_STRING, 5),\n  fallbackPlacement: makeProp(PROP_TYPE_ARRAY_STRING, 'flip'),\n  offset: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n  placement: makeProp(PROP_TYPE_STRING, 'top'),\n  // Element that the tooltip/popover is positioned relative to\n  target: makeProp([HTMLElement, SVGElement])\n}; // --- Main component ---\n// @vue/component\n\nexport var BVPopper = /*#__PURE__*/Vue.extend({\n  name: NAME_POPPER,\n  props: props,\n  data: function data() {\n    return {\n      // reactive props set by parent\n      noFade: false,\n      // State related data\n      localShow: true,\n      attachment: this.getAttachment(this.placement)\n    };\n  },\n  computed: {\n    /* istanbul ignore next */\n    templateType: function templateType() {\n      // Overridden by template component\n      return 'unknown';\n    },\n    popperConfig: function popperConfig() {\n      var _this = this;\n\n      var placement = this.placement;\n      return {\n        placement: this.getAttachment(placement),\n        modifiers: {\n          offset: {\n            offset: this.getOffset(placement)\n          },\n          flip: {\n            behavior: this.fallbackPlacement\n          },\n          // `arrow.element` can also be a reference to an HTML Element\n          // maybe we should make this a `$ref` in the templates?\n          arrow: {\n            element: '.arrow'\n          },\n          preventOverflow: {\n            padding: this.boundaryPadding,\n            boundariesElement: this.boundary\n          }\n        },\n        onCreate: function onCreate(data) {\n          // Handle flipping arrow classes\n          if (data.originalPlacement !== data.placement) {\n            /* istanbul ignore next: can't test in JSDOM */\n            _this.popperPlacementChange(data);\n          }\n        },\n        onUpdate: function onUpdate(data) {\n          // Handle flipping arrow classes\n          _this.popperPlacementChange(data);\n        }\n      };\n    }\n  },\n  created: function created() {\n    var _this2 = this;\n\n    // Note: We are created on-demand, and should be guaranteed that\n    // DOM is rendered/ready by the time the created hook runs\n    this.$_popper = null; // Ensure we show as we mount\n\n    this.localShow = true; // Create popper instance before shown\n\n    this.$on(EVENT_NAME_SHOW, function (el) {\n      _this2.popperCreate(el);\n    }); // Self destruct handler\n\n    var handleDestroy = function handleDestroy() {\n      _this2.$nextTick(function () {\n        // In a `requestAF()` to release control back to application\n        requestAF(function () {\n          _this2.$destroy();\n        });\n      });\n    }; // Self destruct if parent destroyed\n\n\n    this.$parent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy); // Self destruct after hidden\n\n    this.$once(EVENT_NAME_HIDDEN, handleDestroy);\n  },\n  beforeMount: function beforeMount() {\n    // Ensure that the attachment position is correct before mounting\n    // as our propsData is added after `new Template({...})`\n    this.attachment = this.getAttachment(this.placement);\n  },\n  updated: function updated() {\n    // Update popper if needed\n    // TODO: Should this be a watcher on `this.popperConfig` instead?\n    this.updatePopper();\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.destroyPopper();\n  },\n  destroyed: function destroyed() {\n    // Make sure template is removed from DOM\n    var el = this.$el;\n    el && el.parentNode && el.parentNode.removeChild(el);\n  },\n  methods: {\n    // \"Public\" method to trigger hide template\n    hide: function hide() {\n      this.localShow = false;\n    },\n    // Private\n    getAttachment: function getAttachment(placement) {\n      return AttachmentMap[String(placement).toUpperCase()] || 'auto';\n    },\n    getOffset: function getOffset(placement) {\n      if (!this.offset) {\n        // Could set a ref for the arrow element\n        var arrow = this.$refs.arrow || select('.arrow', this.$el);\n        var arrowOffset = toFloat(getCS(arrow).width, 0) + toFloat(this.arrowPadding, 0);\n\n        switch (OffsetMap[String(placement).toUpperCase()] || 0) {\n          /* istanbul ignore next: can't test in JSDOM */\n          case +1:\n            /* istanbul ignore next: can't test in JSDOM */\n            return \"+50%p - \".concat(arrowOffset, \"px\");\n\n          /* istanbul ignore next: can't test in JSDOM */\n\n          case -1:\n            /* istanbul ignore next: can't test in JSDOM */\n            return \"-50%p + \".concat(arrowOffset, \"px\");\n\n          default:\n            return 0;\n        }\n      }\n      /* istanbul ignore next */\n\n\n      return this.offset;\n    },\n    popperCreate: function popperCreate(el) {\n      this.destroyPopper(); // We use `el` rather than `this.$el` just in case the original\n      // mountpoint root element type was changed by the template\n\n      this.$_popper = new Popper(this.target, el, this.popperConfig);\n    },\n    destroyPopper: function destroyPopper() {\n      this.$_popper && this.$_popper.destroy();\n      this.$_popper = null;\n    },\n    updatePopper: function updatePopper() {\n      this.$_popper && this.$_popper.scheduleUpdate();\n    },\n    popperPlacementChange: function popperPlacementChange(data) {\n      // Callback used by popper to adjust the arrow placement\n      this.attachment = this.getAttachment(data.placement);\n    },\n\n    /* istanbul ignore next */\n    renderTemplate: function renderTemplate(h) {\n      // Will be overridden by templates\n      return h('div');\n    }\n  },\n  render: function render(h) {\n    var _this3 = this;\n\n    var noFade = this.noFade; // Note: 'show' and 'fade' classes are only appled during transition\n\n    return h(BVTransition, {\n      // Transitions as soon as mounted\n      props: {\n        appear: true,\n        noFade: noFade\n      },\n      on: {\n        // Events used by parent component/instance\n        beforeEnter: function beforeEnter(el) {\n          return _this3.$emit(EVENT_NAME_SHOW, el);\n        },\n        afterEnter: function afterEnter(el) {\n          return _this3.$emit(EVENT_NAME_SHOWN, el);\n        },\n        beforeLeave: function beforeLeave(el) {\n          return _this3.$emit(EVENT_NAME_HIDE, el);\n        },\n        afterLeave: function afterLeave(el) {\n          return _this3.$emit(EVENT_NAME_HIDDEN, el);\n        }\n      }\n    }, [this.localShow ? this.renderTemplate(h) : h()]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { NAME_TOOLTIP_TEMPLATE } from '../../../constants/components';\nimport { EVENT_NAME_FOCUSIN, EVENT_NAME_FOCUSOUT, EVENT_NAME_MOUSEENTER, EVENT_NAME_MOUSELEAVE } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { scopedStyleMixin } from '../../../mixins/scoped-style';\nimport { BVPopper } from './bv-popper'; // --- Props ---\n\nexport var props = {\n  // Used only by the directive versions\n  html: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Other non-reactive (while open) props are pulled in from BVPopper\n  id: makeProp(PROP_TYPE_STRING)\n}; // --- Main component ---\n// @vue/component\n\nexport var BVTooltipTemplate = /*#__PURE__*/Vue.extend({\n  name: NAME_TOOLTIP_TEMPLATE,\n  extends: BVPopper,\n  mixins: [scopedStyleMixin],\n  props: props,\n  data: function data() {\n    // We use data, rather than props to ensure reactivity\n    // Parent component will directly set this data\n    return {\n      title: '',\n      content: '',\n      variant: null,\n      customClass: null,\n      interactive: true\n    };\n  },\n  computed: {\n    templateType: function templateType() {\n      return 'tooltip';\n    },\n    templateClasses: function templateClasses() {\n      var _ref;\n\n      var variant = this.variant,\n          attachment = this.attachment,\n          templateType = this.templateType;\n      return [(_ref = {\n        // Disables pointer events to hide the tooltip when the user\n        // hovers over its content\n        noninteractive: !this.interactive\n      }, _defineProperty(_ref, \"b-\".concat(templateType, \"-\").concat(variant), variant), _defineProperty(_ref, \"bs-\".concat(templateType, \"-\").concat(attachment), attachment), _ref), this.customClass];\n    },\n    templateAttributes: function templateAttributes() {\n      var id = this.id;\n      return _objectSpread(_objectSpread({}, this.$parent.$parent.$attrs), {}, {\n        id: id,\n        role: 'tooltip',\n        tabindex: '-1'\n      }, this.scopedStyleAttrs);\n    },\n    templateListeners: function templateListeners() {\n      var _this = this;\n\n      // Used for hover/focus trigger listeners\n      return {\n        mouseenter:\n        /* istanbul ignore next */\n        function mouseenter(event) {\n          _this.$emit(EVENT_NAME_MOUSEENTER, event);\n        },\n        mouseleave:\n        /* istanbul ignore next */\n        function mouseleave(event) {\n          _this.$emit(EVENT_NAME_MOUSELEAVE, event);\n        },\n        focusin:\n        /* istanbul ignore next */\n        function focusin(event) {\n          _this.$emit(EVENT_NAME_FOCUSIN, event);\n        },\n        focusout:\n        /* istanbul ignore next */\n        function focusout(event) {\n          _this.$emit(EVENT_NAME_FOCUSOUT, event);\n        }\n      };\n    }\n  },\n  methods: {\n    renderTemplate: function renderTemplate(h) {\n      var title = this.title; // Title can be a scoped slot function\n\n      var $title = isFunction(title) ? title({}) : title; // Directive versions only\n\n      var domProps = this.html && !isFunction(title) ? {\n        innerHTML: title\n      } : {};\n      return h('div', {\n        staticClass: 'tooltip b-tooltip',\n        class: this.templateClasses,\n        attrs: this.templateAttributes,\n        on: this.templateListeners\n      }, [h('div', {\n        staticClass: 'arrow',\n        ref: 'arrow'\n      }), h('div', {\n        staticClass: 'tooltip-inner',\n        domProps: domProps\n      }, [$title])]);\n    }\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB } from '../../constants/components';\nimport { PROP_TYPE_ARRAY } from '../../constants/props';\nimport { isArray, isObject } from '../../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { BBreadcrumbItem } from './breadcrumb-item'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  items: makeProp(PROP_TYPE_ARRAY)\n}, NAME_BREADCRUMB); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumb = /*#__PURE__*/Vue.extend({\n  name: NAME_BREADCRUMB,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var items = props.items; // Build child nodes from items, if given\n\n    var childNodes = children;\n\n    if (isArray(items)) {\n      var activeDefined = false;\n      childNodes = items.map(function (item, idx) {\n        if (!isObject(item)) {\n          item = {\n            text: toString(item)\n          };\n        } // Copy the value here so we can normalize it\n\n\n        var _item = item,\n            active = _item.active;\n\n        if (active) {\n          activeDefined = true;\n        } // Auto-detect active by position in list\n\n\n        if (!active && !activeDefined) {\n          active = idx + 1 === items.length;\n        }\n\n        return h(BBreadcrumbItem, {\n          props: _objectSpread(_objectSpread({}, item), {}, {\n            active: active\n          })\n        });\n      });\n    }\n\n    return h('ol', mergeData(data, {\n      staticClass: 'breadcrumb'\n    }), childNodes);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_AVATAR } from '../../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_IMG_ERROR } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BADGE } from '../../constants/slots';\nimport { isNumber, isNumeric, isString } from '../../utils/inspect';\nimport { toFloat } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIcon } from '../../icons/icon';\nimport { BIconPersonFill } from '../../icons/icons';\nimport { BButton } from '../button/button';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Constants ---\n\nvar CLASS_NAME = 'b-avatar';\nvar SIZES = ['sm', null, 'lg'];\nvar FONT_SIZE_SCALE = 0.4;\nvar BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * 0.7; // --- Helper methods ---\n\nexport var computeSize = function computeSize(value) {\n  // Parse to number when value is a float-like string\n  value = isString(value) && isNumeric(value) ? toFloat(value, 0) : value; // Convert all numbers to pixel values\n\n  return isNumber(value) ? \"\".concat(value, \"px\") : value || null;\n}; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['active', 'event', 'routerTag']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n  alt: makeProp(PROP_TYPE_STRING, 'avatar'),\n  ariaLabel: makeProp(PROP_TYPE_STRING),\n  badge: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  badgeLeft: makeProp(PROP_TYPE_BOOLEAN, false),\n  badgeOffset: makeProp(PROP_TYPE_STRING),\n  badgeTop: makeProp(PROP_TYPE_BOOLEAN, false),\n  badgeVariant: makeProp(PROP_TYPE_STRING, 'primary'),\n  button: makeProp(PROP_TYPE_BOOLEAN, false),\n  buttonType: makeProp(PROP_TYPE_STRING, 'button'),\n  icon: makeProp(PROP_TYPE_STRING),\n  rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  size: makeProp(PROP_TYPE_NUMBER_STRING),\n  square: makeProp(PROP_TYPE_BOOLEAN, false),\n  src: makeProp(PROP_TYPE_STRING),\n  text: makeProp(PROP_TYPE_STRING),\n  variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_AVATAR); // --- Main component ---\n// @vue/component\n\nexport var BAvatar = /*#__PURE__*/Vue.extend({\n  name: NAME_AVATAR,\n  mixins: [normalizeSlotMixin],\n  inject: {\n    bvAvatarGroup: {\n      default: null\n    }\n  },\n  props: props,\n  data: function data() {\n    return {\n      localSrc: this.src || null\n    };\n  },\n  computed: {\n    computedSize: function computedSize() {\n      // Always use the avatar group size\n      var bvAvatarGroup = this.bvAvatarGroup;\n      return computeSize(bvAvatarGroup ? bvAvatarGroup.size : this.size);\n    },\n    computedVariant: function computedVariant() {\n      var bvAvatarGroup = this.bvAvatarGroup;\n      return bvAvatarGroup && bvAvatarGroup.variant ? bvAvatarGroup.variant : this.variant;\n    },\n    computedRounded: function computedRounded() {\n      var bvAvatarGroup = this.bvAvatarGroup;\n      var square = bvAvatarGroup && bvAvatarGroup.square ? true : this.square;\n      var rounded = bvAvatarGroup && bvAvatarGroup.rounded ? bvAvatarGroup.rounded : this.rounded;\n      return square ? '0' : rounded === '' ? true : rounded || 'circle';\n    },\n    fontStyle: function fontStyle() {\n      var size = this.computedSize;\n      var fontSize = SIZES.indexOf(size) === -1 ? \"calc(\".concat(size, \" * \").concat(FONT_SIZE_SCALE, \")\") : null;\n      return fontSize ? {\n        fontSize: fontSize\n      } : {};\n    },\n    marginStyle: function marginStyle() {\n      var size = this.computedSize,\n          bvAvatarGroup = this.bvAvatarGroup;\n      var overlapScale = bvAvatarGroup ? bvAvatarGroup.overlapScale : 0;\n      var value = size && overlapScale ? \"calc(\".concat(size, \" * -\").concat(overlapScale, \")\") : null;\n      return value ? {\n        marginLeft: value,\n        marginRight: value\n      } : {};\n    },\n    badgeStyle: function badgeStyle() {\n      var size = this.computedSize,\n          badgeTop = this.badgeTop,\n          badgeLeft = this.badgeLeft,\n          badgeOffset = this.badgeOffset;\n      var offset = badgeOffset || '0px';\n      return {\n        fontSize: SIZES.indexOf(size) === -1 ? \"calc(\".concat(size, \" * \").concat(BADGE_FONT_SIZE_SCALE, \" )\") : null,\n        top: badgeTop ? offset : null,\n        bottom: badgeTop ? null : offset,\n        left: badgeLeft ? offset : null,\n        right: badgeLeft ? null : offset\n      };\n    }\n  },\n  watch: {\n    src: function src(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.localSrc = newValue || null;\n      }\n    }\n  },\n  methods: {\n    onImgError: function onImgError(event) {\n      this.localSrc = null;\n      this.$emit(EVENT_NAME_IMG_ERROR, event);\n    },\n    onClick: function onClick(event) {\n      this.$emit(EVENT_NAME_CLICK, event);\n    }\n  },\n  render: function render(h) {\n    var _class2;\n\n    var variant = this.computedVariant,\n        disabled = this.disabled,\n        rounded = this.computedRounded,\n        icon = this.icon,\n        src = this.localSrc,\n        text = this.text,\n        fontStyle = this.fontStyle,\n        marginStyle = this.marginStyle,\n        size = this.computedSize,\n        button = this.button,\n        type = this.buttonType,\n        badge = this.badge,\n        badgeVariant = this.badgeVariant,\n        badgeStyle = this.badgeStyle;\n    var link = !button && isLink(this);\n    var tag = button ? BButton : link ? BLink : 'span';\n    var alt = this.alt;\n    var ariaLabel = this.ariaLabel || null;\n    var $content = null;\n\n    if (this.hasNormalizedSlot()) {\n      // Default slot overrides props\n      $content = h('span', {\n        staticClass: 'b-avatar-custom'\n      }, [this.normalizeSlot()]);\n    } else if (src) {\n      $content = h('img', {\n        style: variant ? {} : {\n          width: '100%',\n          height: '100%'\n        },\n        attrs: {\n          src: src,\n          alt: alt\n        },\n        on: {\n          error: this.onImgError\n        }\n      });\n      $content = h('span', {\n        staticClass: 'b-avatar-img'\n      }, [$content]);\n    } else if (icon) {\n      $content = h(BIcon, {\n        props: {\n          icon: icon\n        },\n        attrs: {\n          'aria-hidden': 'true',\n          alt: alt\n        }\n      });\n    } else if (text) {\n      $content = h('span', {\n        staticClass: 'b-avatar-text',\n        style: fontStyle\n      }, [h('span', text)]);\n    } else {\n      // Fallback default avatar content\n      $content = h(BIconPersonFill, {\n        attrs: {\n          'aria-hidden': 'true',\n          alt: alt\n        }\n      });\n    }\n\n    var $badge = h();\n    var hasBadgeSlot = this.hasNormalizedSlot(SLOT_NAME_BADGE);\n\n    if (badge || badge === '' || hasBadgeSlot) {\n      var badgeText = badge === true ? '' : badge;\n      $badge = h('span', {\n        staticClass: 'b-avatar-badge',\n        class: _defineProperty({}, \"badge-\".concat(badgeVariant), badgeVariant),\n        style: badgeStyle\n      }, [hasBadgeSlot ? this.normalizeSlot(SLOT_NAME_BADGE) : badgeText]);\n    }\n\n    var componentData = {\n      staticClass: CLASS_NAME,\n      class: (_class2 = {}, _defineProperty(_class2, \"\".concat(CLASS_NAME, \"-\").concat(size), size && SIZES.indexOf(size) !== -1), _defineProperty(_class2, \"badge-\".concat(variant), !button && variant), _defineProperty(_class2, \"rounded\", rounded === true), _defineProperty(_class2, \"rounded-\".concat(rounded), rounded && rounded !== true), _defineProperty(_class2, \"disabled\", disabled), _class2),\n      style: _objectSpread(_objectSpread({}, marginStyle), {}, {\n        width: size,\n        height: size\n      }),\n      attrs: {\n        'aria-label': ariaLabel || null\n      },\n      props: button ? {\n        variant: variant,\n        disabled: disabled,\n        type: type\n      } : link ? pluckProps(linkProps, this) : {},\n      on: button || link ? {\n        click: this.onClick\n      } : {}\n    };\n    return h(tag, componentData, [$content, $badge]);\n  }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_BADGE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n  pill: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'span'),\n  variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_BADGE); // --- Main component ---\n// @vue/component\n\nexport var BBadge = /*#__PURE__*/Vue.extend({\n  name: NAME_BADGE,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var active = props.active,\n        disabled = props.disabled;\n    var link = isLink(props);\n    var tag = link ? BLink : props.tag;\n    var variant = props.variant || 'secondary';\n    return h(tag, mergeData(data, {\n      staticClass: 'badge',\n      class: [\"badge-\".concat(variant), {\n        'badge-pill': props.pill,\n        active: active,\n        disabled: disabled\n      }],\n      props: link ? pluckProps(linkProps, props) : {}\n    }), children);\n  }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_SELECT_OPTION } from '../../constants/components';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  value: makeProp(PROP_TYPE_ANY, undefined, true) // Required\n\n}, NAME_FORM_SELECT_OPTION); // --- Main component ---\n// @vue/component\n\nexport var BFormSelectOption = /*#__PURE__*/Vue.extend({\n  name: NAME_FORM_SELECT_OPTION,\n  functional: true,\n  props: props,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        children = _ref.children;\n    var value = props.value,\n        disabled = props.disabled;\n    return h('option', mergeData(data, {\n      attrs: {\n        disabled: disabled\n      },\n      domProps: {\n        value: value\n      }\n    }), children);\n  }\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('b-overlay',{staticClass:\"loaderPreview\",attrs:{\"show\":_vm.loading,\"variant\":_vm.variant,\"opacity\":_vm.opacity,\"blur\":_vm.blur,\"spinner-variant\":\"primary\",\"spinner-type\":\"grow\",\"spinner-large\":\"\",\"rounded\":\"sm\"}},[((_vm.meta.breadcrumb || _vm.meta.pageTitle) && _vm.funnelName)?_c('b-row',{staticClass:\"content-header\"},[_c('b-col',{staticClass:\"content-header-left mb-2\",attrs:{\"cols\":\"12\",\"md\":\"8\"}},[_c('b-row',{staticClass:\"breadcrumbs-top\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('h2',{staticClass:\"content-header-title float-left pr-1 mb-0\"},[_vm._v(\" Project Detail \")]),_c('div',{staticClass:\"breadcrumb-wrapper\"},[_c('b-breadcrumb',[_c('b-breadcrumb-item',{attrs:{\"to\":\"/\"}},[_c('feather-icon',{staticClass:\"align-text-top\",attrs:{\"icon\":\"HomeIcon\",\"size\":\"16\"}})],1),_vm._l((_vm.meta.breadcrumb),function(item){return _c('b-breadcrumb-item',{key:item.text,attrs:{\"active\":item.active,\"to\":item.to}},[_vm._v(\" \"+_vm._s(item.text)+\" \")])}),_c('b-breadcrumb-item',{attrs:{\"active\":_vm.breadcrumbActive}},[_vm._v(\" \"+_vm._s(_vm.funnelName)+\" \")]),((_vm.UserFunnelFirstStep && (_vm.UserFunnelFirstStep.UserFunnelStepVariationId==null || _vm.UserFunnelFirstStep.UserFunnelStepVariationId < 0)) || (_vm.UserFunnelSecondStep && (_vm.UserFunnelSecondStep.UserFunnelStepVariationId==null || _vm.UserFunnelSecondStep.UserFunnelStepVariationId < 0)))?_c('b-breadcrumb-item',[(_vm.showFirstStep)?_c('b-link',{attrs:{\"data-stepindex\":\"0\",\"data-Id\":_vm.UserFunnelFirstStep.Id,\"data-isLoaded\":_vm.UserFunnelFirstStep.UserFunnelStepVariationId <= 0 ? '0' : '1',\"data-order\":_vm.UserFunnelFirstStep.Order,\"data-temptypeId\":_vm.UserFunnelFirstStep.TemplateTypeId,\"data-userStepId\":_vm.UserFunnelFirstStep.Id,\"data-templateId\":_vm.UserFunnelFirstStep.TemplateId},on:{\"click\":_vm.LoadTemplates}},[_vm._v(\" \"+_vm._s(_vm.UserFunnelFirstStep.Name)+\" \")]):_vm._e(),(_vm.showSecondStep)?_c('b-link',{attrs:{\"data-stepindex\":\"1\",\"data-Id\":_vm.UserFunnelSecondStep.Id,\"data-isLoaded\":_vm.UserFunnelSecondStep.UserFunnelStepVariationId <= 0 ? '0' : '1',\"data-order\":_vm.UserFunnelSecondStep.Order,\"data-temptypeId\":_vm.UserFunnelSecondStep.TemplateTypeId,\"data-userStepId\":_vm.UserFunnelSecondStep.Id,\"data-templateId\":_vm.UserFunnelSecondStep.TemplateId},on:{\"click\":_vm.LoadTemplates}},[_vm._v(\" \"+_vm._s(_vm.UserFunnelSecondStep.Name)+\" \")]):_vm._e()],1):_vm._e()],2)],1)])],1)],1),_c('b-col',{staticClass:\"content-header-right text-md-right d-md-block d-none mb-1\",attrs:{\"md\":\"4\",\"cols\":\"12\"}},[(_vm.funnelDef && _vm.UserFunnelFirstStep.TemplateTypeId != 22 && _vm.funnelDef.PDFFileURL)?_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-secondary\",modifiers:{\"hover\":true,\"v-secondary\":true}},{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.funnelDef.PDFFileURL),expression:\"funnelDef.PDFFileURL\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onPDFCopy),expression:\"onPDFCopy\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onPDFError),expression:\"onPDFError\",arg:\"error\"}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"Copy PDF URL\",\"variant\":\"flat-secondary\"}},[_c('feather-icon',{attrs:{\"icon\":\"FileIcon\"}})],1):_vm._e(),(_vm.funnelDef && _vm.UserFunnelFirstStep.TemplateTypeId != 22 && !_vm.funnelDef.PDFFileURL)?_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-secondary\",modifiers:{\"hover\":true,\"v-secondary\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"Copy PDF URL\",\"variant\":\"flat-secondary\"},on:{\"click\":_vm.attachPDFMsg}},[_c('feather-icon',{attrs:{\"icon\":\"FileIcon\"}})],1):_vm._e(),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-primary\",modifiers:{\"hover\":true,\"v-primary\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"to\":'/projectcontacts/' + _vm.userFunnelId,\"title\":\"Project Contacts\",\"variant\":\"flat-primary\"}},[_c('feather-icon',{attrs:{\"icon\":\"UsersIcon\"}})],1),(_vm.isProjectCompleted && _vm.funnelPath)?_c('b-button',{directives:[{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.funnelPath),expression:\"funnelPath\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onPathCopy),expression:\"onPathCopy\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onPathError),expression:\"onPathError\",arg:\"error\"},{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-success\",modifiers:{\"hover\":true,\"v-success\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"Copy Project URL\",\"variant\":\"flat-success\"}},[_c('feather-icon',{attrs:{\"icon\":\"CopyIcon\"}})],1):_vm._e(),(!_vm.isProjectCompleted)?_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-success\",modifiers:{\"hover\":true,\"v-success\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"Copy Project URL\",\"variant\":\"flat-success\"},on:{\"click\":_vm.completeProjectMessage}},[_c('feather-icon',{attrs:{\"icon\":\"CopyIcon\"}})],1):_vm._e(),(_vm.isProjectCompleted && _vm.funnelPath)?_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-warning\",modifiers:{\"hover\":true,\"v-warning\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"View Project URL\",\"href\":_vm.funnelPath,\"target\":\"_blank\",\"variant\":\"flat-warning\"}},[_c('feather-icon',{attrs:{\"icon\":\"ExternalLinkIcon\"}})],1):_vm._e(),(!_vm.isProjectCompleted)?_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-warning\",modifiers:{\"hover\":true,\"v-warning\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"View Project URL\",\"variant\":\"flat-warning\"},on:{\"click\":_vm.completeProjectMessage}},[_c('feather-icon',{attrs:{\"icon\":\"ExternalLinkIcon\"}})],1):_vm._e(),(_vm.UserFunnelFirstStep.TemplateTypeId == 22)?_c('b-button',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.projectTermsPrivacyPolicy\",modifiers:{\"projectTermsPrivacyPolicy\":true}},{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-info\",modifiers:{\"hover\":true,\"v-info\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"Terms & Privacy Policy\",\"variant\":\"flat-info\"}},[_c('feather-icon',{attrs:{\"icon\":\"FileIcon\"}})],1):_vm._e(),_c('b-button',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.projectSettingsModal\",modifiers:{\"projectSettingsModal\":true}},{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-info\",modifiers:{\"hover\":true,\"v-info\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"Settings\",\"variant\":\"flat-primary\"}},[_c('feather-icon',{attrs:{\"icon\":\"SettingsIcon\"}})],1)],1)],1):_vm._e(),_c('div',{staticClass:\"post\"},[(_vm.error)?_c('div',{staticClass:\"error\"},[_vm._v(\" \"+_vm._s(_vm.error)+\" \")]):_vm._e()]),(_vm.UserFunnelFirstStep && (_vm.UserFunnelFirstStep.UserFunnelStepVariationId==null || _vm.UserFunnelFirstStep.UserFunnelStepVariationId < 0))?_c('div',[_c('b-link',{ref:\"refFirstStep\",staticClass:\"hidden\",attrs:{\"id\":\"refFirstStep\",\"data-stepindex\":\"0\",\"data-Id\":_vm.UserFunnelFirstStep.Id,\"data-isLoaded\":_vm.UserFunnelFirstStep.UserFunnelStepVariationId <= 0 ? '0' : '1',\"data-order\":_vm.UserFunnelFirstStep.Order,\"data-temptypeId\":_vm.UserFunnelFirstStep.TemplateTypeId,\"data-userStepId\":_vm.UserFunnelFirstStep.Id,\"data-templateId\":_vm.UserFunnelFirstStep.TemplateId},on:{\"click\":_vm.LoadTemplates}},[_vm._v(\" \"+_vm._s(_vm.UserFunnelFirstStep.Name)+\" \")]),(_vm.showFirstStep)?_c('b-row',{staticClass:\"match-height\"},[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-row',_vm._l((_vm.Templates),function(temp){return (_vm.UserFunnelFirstStep.UserFunnelStepVariationId <= 0)?_c('b-col',{key:temp.Name,staticClass:\"custom-col-6\",attrs:{\"lg\":\"4\",\"data\":temp}},[_c('b-card',{staticClass:\"shadow-none\",attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"text-center\"},[_c('expandable-image',{staticClass:\"image\",attrs:{\"src\":_vm.WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.FolderOne +'/_template_files/thumb.Jpg'}})],1),_c('b-row',{staticClass:\"text-center mx-0\"},[_c('b-col',{staticClass:\"border-top d-flex align-items-between flex-column py-1\",attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"font-weight-bolder mb-0\"},[_c('b-link',{staticClass:\"btn mr-1 btn-outline-primary templates\",attrs:{\"data-UserStepId\":temp.UserStepId,\"data-CurrentTabId\":_vm.UserFunnelFirstStep.Id,\"data-index\":\"0\",\"data-parentFolder\":temp.ParentFolder,\"data-mainFolder\":temp.MainFolder,\"data-childFolder\":temp.FolderOne,\"data-TemplateFunnelId\":temp.TemplateFunnelId,\"data-templateTypeId\":temp.TemplateTypeId,\"data-funnelId\":_vm.userFunnelId,\"data-templateFileName\":temp.TemplateFileName,\"data-IsUserTemplate\":temp.IsUserTemplate,\"data-value\":temp.Id},on:{\"click\":_vm.UseThisTemplate}},[_c('i',{staticClass:\"fa fa-mouse-pointer\"}),_c('span',{staticClass:\"name\"},[_vm._v(\"Use This\")])]),_c('b-link',{staticClass:\"btn mr-1 btn-outline-success\",attrs:{\"target\":\"_blank\",\"href\":_vm.WebAPIURL +'/Home/' +temp.TemplateUrl +'/' +temp.FolderOne}},[_c('i',{staticClass:\"fa fa-eye\"}),_c('span',{staticClass:\"name\"},[_vm._v(\"Preview\")])])],1)])],1)],1)],1):_vm._e()}),1)],1)],1):_vm._e()],1):_vm._e(),(_vm.UserFunnelSecondStep && (_vm.UserFunnelSecondStep.UserFunnelStepVariationId==null || _vm.UserFunnelSecondStep.UserFunnelStepVariationId < 0))?_c('div',[_c('b-link',{ref:\"refSecondStep\",staticClass:\"hidden\",attrs:{\"id\":\"refSecondStep\",\"data-stepindex\":\"1\",\"data-Id\":_vm.UserFunnelSecondStep.Id,\"data-isLoaded\":_vm.UserFunnelSecondStep.UserFunnelStepVariationId <= 0 ? '0' : '1',\"data-order\":_vm.UserFunnelSecondStep.Order,\"data-temptypeId\":_vm.UserFunnelSecondStep.TemplateTypeId,\"data-userStepId\":_vm.UserFunnelSecondStep.Id,\"data-templateId\":_vm.UserFunnelSecondStep.TemplateId},on:{\"click\":_vm.LoadTemplates}},[_vm._v(\" \"+_vm._s(_vm.UserFunnelSecondStep.Name)+\" \")]),(_vm.showSecondStep)?_c('b-row',{staticClass:\"match-height\"},[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-row',_vm._l((_vm.Templates),function(temp){return (_vm.UserFunnelSecondStep.UserFunnelStepVariationId <= 0)?_c('b-col',{key:temp.Name,staticClass:\"custom-col-6\",attrs:{\"lg\":\"4\",\"data\":temp}},[_c('b-card',{staticClass:\"shadow-none\",attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"text-center\",staticStyle:{\"width\":\"100%\"}},[_c('expandable-image',{staticClass:\"image\",attrs:{\"src\":_vm.WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.FolderOne +'/_template_files/thumb.Jpg'}})],1),_c('b-row',{staticClass:\"text-center mx-0\"},[_c('b-col',{staticClass:\"border-top d-flex align-items-between flex-column py-1\",attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"font-weight-bolder mb-0\"},[_c('b-link',{staticClass:\"btn mr-1 btn-outline-primary templates\",attrs:{\"data-UserStepId\":temp.UserStepId,\"data-CurrentTabId\":_vm.UserFunnelSecondStep.Id,\"data-index\":\"1\",\"data-parentFolder\":temp.ParentFolder,\"data-mainFolder\":temp.MainFolder,\"data-childFolder\":temp.FolderOne,\"data-TemplateFunnelId\":temp.TemplateFunnelId,\"data-templateTypeId\":temp.TemplateTypeId,\"data-funnelId\":_vm.userFunnelId,\"data-templateFileName\":temp.TemplateFileName,\"data-IsUserTemplate\":temp.IsUserTemplate,\"data-value\":temp.Id},on:{\"click\":_vm.UseThisTemplate}},[_c('i',{staticClass:\"fa fa-mouse-pointer\"}),_c('span',{staticClass:\"name\"},[_vm._v(\"Use This\")])]),_c('b-link',{staticClass:\"btn mr-1 btn-outline-success\",attrs:{\"target\":\"_blank\",\"href\":_vm.WebAPIURL +'/Home/' +temp.TemplateUrl +'/' +temp.FolderOne}},[_c('i',{staticClass:\"fa fa-eye\"}),_c('span',{staticClass:\"name\"},[_vm._v(\"Preview\")])])],1)])],1)],1)],1):_vm._e()}),1)],1)],1):_vm._e()],1):_vm._e(),(_vm.UserFunnelFirstStep && _vm.UserFunnelFirstStep.UserFunnelStepVariationId > 0 && _vm.UserFunnelSecondStep && _vm.UserFunnelSecondStep.UserFunnelStepVariationId > 0)?_c('b-row',_vm._l((_vm.UserFunnelSteps),function(item,index){return _c('b-col',{key:index,attrs:{\"lg\":\"6\",\"data\":item}},[_c('b-card',{attrs:{\"no-body\":\"\"}},[_c('b-card-header',[_c('b-card-title',[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"6\"}},[_vm._v(\" \"+_vm._s(item.Name)+\" \")]),_c('b-col',{staticClass:\"text-right\",attrs:{\"lg\":\"6\"}},[_c('b-button',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.stepSettingsModal\",modifiers:{\"stepSettingsModal\":true}},{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-warning\",modifiers:{\"hover\":true,\"v-warning\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"View Step URL/Link\",\"data-stepname\":item.Name,\"data-stepurl\":index == 0 ? _vm.firstStepURL : _vm.secondStepURL,\"data-customdomainid\":item.CustomDomainId,\"data-customdomainvariationid\":item.CustomDomainVariationId,\"data-stepid\":item.Id,\"data-variationid\":\"0\",\"data-currIndex\":index,\"variant\":\"flat-warning\"},on:{\"click\":_vm.OpenSettingsModal}},[_c('feather-icon',{attrs:{\"icon\":\"LinkIcon\"}})],1)],1)],1)],1)],1),_c('b-card-body',[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('expandable-image',{attrs:{\"src\":_vm.SubDomainURL +'/' +_vm.userFilesDir +'/'+_vm.CustomUserId+'/' +item.UserFunnelId +'/' +item.Id +'/_template_files_' +item.TemplateFileName.replace('.html','').replace('.json', '') +'/thumb.Jpg?a='+_vm.randomStr+''}})],1)],1)],1),_c('b-card-footer',{staticClass:\"card-profile\"},[_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('div',[_c('h6',{staticClass:\"text-muted font-weight-bolder\"},[_vm._v(\" Total Visitors \")]),_c('h3',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(item.StepTotalVisitors)+\" \")])]),_c('div',[_c('b-button',{staticClass:\"text-secondary p-0 mr\",attrs:{\"variant\":\"text-plain\",\"to\":'/projectcontacts/' + item.UserFunnelId}},[_vm._v(\" Contacts \")]),_c('h3',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(item.ContactsCount)+\" \")])],1),_c('div',{staticClass:\"text-right\"},[_c('b-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-primary\",modifiers:{\"hover\":true,\"v-primary\":true}},{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"btn-icon\",attrs:{\"title\":\"Edit Template\",\"to\":'/editproject/' +item.UserFunnelStepVariationId,\"variant\":\"flat-primary\"}},[_c('feather-icon',{attrs:{\"icon\":\"EditIcon\"}})],1),_c('b-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-warning\",modifiers:{\"hover\":true,\"v-warning\":true}},{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"btn-icon\",attrs:{\"title\":\"View\",\"href\":index == 0 ? _vm.firstStepPageURL : _vm.secondStepPageURL,\"target\":\"_blank\",\"variant\":\"flat-warning\"}},[_c('feather-icon',{attrs:{\"icon\":\"EyeIcon\"}})],1),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-info\",modifiers:{\"hover\":true,\"v-info\":true}}],staticClass:\"btn-icon\",attrs:{\"title\":\"Download HTML\",\"data-stepid\":item.Id,\"data-subDomain\":item.FunnelStepPageURL.replace(item.FunnelStepURL,''),\"variant\":\"flat-info\"},on:{\"click\":_vm.downloadHTML}},[_c('feather-icon',{attrs:{\"icon\":\"ArrowDownCircleIcon\"}})],1),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-danger\",modifiers:{\"hover\":true,\"v-danger\":true}}],staticClass:\"btn-icon\",attrs:{\"title\":\"Reset Template\",\"data-UserFunnelId\":item.UserFunnelId,\"data-UserFunnelStepId\":item.Id,\"data-UserFunnelStepVariationId\":item.UserFunnelStepVariationId,\"variant\":\"flat-danger\"},on:{\"click\":_vm.resetProjectTemplate}},[_c('feather-icon',{attrs:{\"icon\":\"RefreshCwIcon\"}})],1)],1)])])],1)],1)}),1):_vm._e(),(_vm.UserFunnelFirstStep)?_c('b-tabs',[(_vm.UserFunnelFirstStep.TemplateTypeId == 22)?_c('b-tab',{attrs:{\"title\":\"Product\"}},[_c('b-card',{staticClass:\"cardMobile\"},[(!_vm.StepProducts)?_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',{staticClass:\"text-right\",attrs:{\"lg\":\"12\"}},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"data-id\":\"0\",\"type\":\"button\",\"variant\":\"outline-success\"},on:{\"click\":_vm.addEditProduct}},[_c('feather-icon',{attrs:{\"icon\":\"PlusIcon\",\"size\":\"18\"}}),_vm._v(\" Add New Product \")],1)],1)],1):_vm._e(),_c('b-row',{staticClass:\"match-height\"},[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-table',{attrs:{\"striped\":\"\",\"hover\":\"\",\"caption-top\":\"\",\"fixed\":\"\",\"bordered\":\"\",\"items\":_vm.StepProducts,\"fields\":_vm.prodTablefields,\"search-options\":{enabled: true,externalQuery: _vm.prodSearchTerm,},\"pagination-options\":{enabled: true,perPage: _vm.prodPageLength,},\"show-empty\":\"\"},scopedSlots:_vm._u([{key:\"empty\",fn:function(scope){return [_vm._v(\" Record doesn't exist \")]}},{key:\"cell(Id)\",fn:function(data){return [_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-primary\",modifiers:{\"hover\":true,\"v-primary\":true}}],staticClass:\"btn-icon\",attrs:{\"data-id\":data.item.Id,\"title\":\"Edit\",\"variant\":\"flat-primary\"},on:{\"click\":_vm.addEditProduct}},[_c('feather-icon',{attrs:{\"icon\":\"EditIcon\"}})],1),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-danger\",modifiers:{\"hover\":true,\"v-danger\":true}}],staticClass:\"btn-icon\",attrs:{\"data-id\":data.item.Id,\"title\":\"Delete\",\"variant\":\"flat-danger\"},on:{\"click\":_vm.removeProduct}},[_c('feather-icon',{attrs:{\"icon\":\"ArchiveIcon\"}})],1)]}}],null,false,1807841377)})],1)],1)],1)],1):_vm._e(),_c('b-tab',{attrs:{\"title\":\"Email Automation\"}},[_c('b-card',[_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',{staticClass:\"text-right\",attrs:{\"lg\":\"12\"}},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"data-id\":\"0\",\"type\":\"button\",\"variant\":\"outline-success\"},on:{\"click\":_vm.addEditEmail}},[_c('feather-icon',{attrs:{\"icon\":\"PlusIcon\",\"size\":\"18\"}}),_vm._v(\" Add New Email \")],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-table',{staticClass:\"position-relative\",attrs:{\"striped\":\"\",\"hover\":\"\",\"responsive\":\"\",\"bordered\":\"\",\"fixed\":\"\",\"items\":_vm.StepFunnelEmails,\"fields\":_vm.emailTablefields,\"show-empty\":\"\"},scopedSlots:_vm._u([{key:\"empty\",fn:function(scope){return [_vm._v(\" Record doesn't exist \")]}},{key:\"cell(EmailOpenCount)\",fn:function(data){return [_vm._v(\" \"+_vm._s(data.item.EmailDeliveryCount > 0? ((data.item.EmailOpenCount /data.item.EmailDeliveryCount) *100).toFixed(2): 0)+\" \")]}},{key:\"cell(EmailClickCount)\",fn:function(data){return [_vm._v(\" \"+_vm._s(data.item.EmailDeliveryCount > 0? (data.item.EmailClickCount /data.item.EmailDeliveryCount).toFixed(2) *100: 0)+\" \")]}},{key:\"cell(Status)\",fn:function(data){return [_vm._v(\" \"+_vm._s(data.item.IsScheduled ? \"Schedule\" : \"Draft\")+\" \")]}},{key:\"cell(Id)\",fn:function(data){return [_c('b-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-info\",modifiers:{\"hover\":true,\"v-info\":true}},{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(40, 199, 111, 0.15)'),expression:\"'rgba(40, 199, 111, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"btn-icon\",attrs:{\"data-id\":data.item.Id,\"title\":\"Clone\",\"variant\":\"flat-info\"},on:{\"click\":_vm.cloneFunnelEmail}},[_c('feather-icon',{attrs:{\"icon\":\"CopyIcon\"}})],1),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-primary\",modifiers:{\"hover\":true,\"v-primary\":true}}],staticClass:\"btn-icon\",attrs:{\"data-id\":data.item.Id,\"title\":\"Edit\",\"variant\":\"flat-primary\"},on:{\"click\":_vm.addEditEmail}},[_c('feather-icon',{attrs:{\"icon\":\"EditIcon\"}})],1),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-danger\",modifiers:{\"hover\":true,\"v-danger\":true}}],staticClass:\"btn-icon\",attrs:{\"data-IsScheduled\":data.item.IsScheduled,\"data-id\":data.item.Id,\"title\":\"Delete\",\"variant\":\"flat-danger\"},on:{\"click\":_vm.deleteStepEmails}},[_c('feather-icon',{attrs:{\"icon\":\"ArchiveIcon\"}})],1)]}}],null,false,3474491077)}),_c('b-card-body',{staticClass:\"d-flex justify-content-between flex-wrap pt-0\"})],1)],1)],1)],1),_c('b-tab',{attrs:{\"title\":\"Auto Responders\",\"active\":_vm.activeTab === 'AutoResponder'}},[(_vm.autoResponders)?_c('b-card',[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"Auto Responder(Optional) Please note that without auto responders leads will be saved in your Landingly database\",\"label-for\":\"AutoResponderID\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.UserFunnelSteps[0].AutoResponderID),expression:\"UserFunnelSteps[0].AutoResponderID\"}],staticClass:\"form-control\",attrs:{\"name\":\"AutoResponderID\",\"id\":\"AutoResponderID\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.UserFunnelSteps[0], \"AutoResponderID\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},function($event){return _vm.onAutoRespChange($event)}]}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Select One\")]),_vm._l((_vm.autoResponders),function(auto){return _c('option',{domProps:{\"value\":auto.Id}},[_vm._v(\" \"+_vm._s(auto.Name)+\" \")])})],2)])],1),(_vm.showGetResponse)?_c('b-col',{attrs:{\"lg\":\"12\"}},[(_vm.lstResponseAccount.length > 0)?_c('div',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"Select a List\",\"label-for\":\"ResponseCompainID\"}},[_c('b-input-group',[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.UserFunnelSteps[0].ResponseCompainID),expression:\"UserFunnelSteps[0].ResponseCompainID\"}],staticClass:\"form-control\",attrs:{\"name\":\"ResponseCompainID\",\"id\":\"ResponseCompainID\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.UserFunnelSteps[0], \"ResponseCompainID\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Select One\")]),_vm._l((_vm.lstResponseAccount),function(res){return _c('optgroup',{attrs:{\"label\":\"res.APIKey\"}},_vm._l((res.ResponseCampaignList),function(list){return (res.ResponseCampaignList.length > 0)?_c('option',{domProps:{\"value\":list.Id}},[_vm._v(\" \"+_vm._s(list.Name)+\" \")]):_vm._e()}),0)})],2)])],1)],1),_c('b-col',{staticClass:\"text-right\",attrs:{\"lg\":\"12\"}},[_c('b-link',{attrs:{\"data-action\":\"AddOther\"},on:{\"click\":_vm.loadGetResponseAccount}},[_vm._v(\" Login With Other Account \")])],1)],1):_vm._e(),(_vm.lstResponseAccount.length < 1)?_c('div',{staticClass:\"text-right\"},[_c('b-link',{staticClass:\"btn mb-1 btn-success\",attrs:{\"data-action\":\"AddOther\"},on:{\"click\":_vm.loadGetResponseAccount}},[_vm._v(\" Login to GetResponse \")])],1):_vm._e()]):_vm._e(),(_vm.showSendLane)?_c('b-col',{attrs:{\"lg\":\"12\"}},[(_vm.lstSendLaneAccount.length > 0)?_c('div',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"Select a List\",\"label-for\":\"ResponseCompainID\"}},[_c('b-input-group',[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.UserFunnelSteps[0].SendLaneListId),expression:\"UserFunnelSteps[0].SendLaneListId\"}],staticClass:\"form-control\",attrs:{\"name\":\"SendLaneListId\",\"id\":\"SendLaneListId\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.UserFunnelSteps[0], \"SendLaneListId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Select One\")]),_vm._l((_vm.lstSendLaneAccount),function(account){return _c('optgroup',{attrs:{\"label\":'Subdomain: ' + account.SubDomain}},_vm._l((account.SendLaneLists),function(list){return (account.SendLaneLists.length >0)?_c('option',{domProps:{\"value\":list.Id}},[_vm._v(\" \"+_vm._s(list.Name)+\" \")]):_vm._e()}),0)})],2)])],1)],1)],1):_vm._e(),_c('validation-observer',{ref:\"sendLaneRules\"},[_c('form',{ref:\"SendLaneForm\",attrs:{\"id\":\"SendLaneForm\"},on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();}}},[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-form-group',[_c('label',[_vm._v(\"SendLane SubDomain\")]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"SendLane SubDomain\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-input-group',[_c('b-form-input',{attrs:{\"id\":\"SendLaneSubDomain\",\"name\":\"SendLaneSubDomain\",\"placeholder\":\"Give SendLane SubDomain...\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.SendLaneSubDomain),callback:function ($$v) {_vm.SendLaneSubDomain=$$v},expression:\"SendLaneSubDomain\"}}),_c('b-input-group-append',{attrs:{\"is-text\":\"\"}},[_vm._v(\" .sendlane.com \")])],1),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,2909622591)})],1)],1),_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-form-group',[_c('label',[_vm._v(\"SendLane APIKey\")]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"SendLane APIKey\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"SendLaneAPIKey\",\"name\":\"SendLaneAPIKey\",\"placeholder\":\"Give SendLane APIKey...\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.SendLaneAPIKey),callback:function ($$v) {_vm.SendLaneAPIKey=$$v},expression:\"SendLaneAPIKey\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,1398689880)})],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',[_vm._v(\"SendLane HashKey\")]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"SendLane HashKey\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-input-group',[_c('b-form-input',{attrs:{\"id\":\"SendLaneHashKey\",\"name\":\"SendLaneHashKey\",\"placeholder\":\"Give SendLane HashKey...\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.SendLaneHashKey),callback:function ($$v) {_vm.SendLaneHashKey=$$v},expression:\"SendLaneHashKey\"}}),_c('b-input-group-append',[_c('b-button',{attrs:{\"variant\":\"outline-primary\"},on:{\"click\":_vm.loadSendLaneAccount}},[_vm._v(\" Load \")])],1)],1),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,430711925)})],1)],1)],1)],1)])],1):_vm._e(),(_vm.showMailChimp)?_c('b-col',{attrs:{\"lg\":\"12\"}},[(_vm.lstMailChimpAccount.length > 0)?_c('div',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"Select a List\",\"label-for\":\"MailChimpListId\"}},[_c('b-input-group',[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.UserFunnelSteps[0].MailChimpListId),expression:\"UserFunnelSteps[0].MailChimpListId\"}],staticClass:\"form-control\",attrs:{\"name\":\"MailChimpListId\",\"id\":\"MailChimpListId\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.UserFunnelSteps[0], \"MailChimpListId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Select One\")]),_vm._l((_vm.lstMailChimpAccount),function(mail){return _c('optgroup',{attrs:{\"label\":\"auto.APIKey\"}},_vm._l((mail.MailChimpList),function(list){return (mail.MailChimpList.length > 0)?_c('option',{domProps:{\"value\":list.Id}},[_vm._v(\" \"+_vm._s(list.ListId)+\" \")]):_vm._e()}),0)})],2)])],1)],1),_c('b-col',{staticClass:\"text-right\",attrs:{\"lg\":\"12\"}},[_c('b-link',{attrs:{\"data-action\":\"AddOther\"},on:{\"click\":_vm.loadMailChimpAccount}},[_vm._v(\" Login With Other Account \")])],1)],1):_vm._e(),(_vm.lstMailChimpAccount.length < 1)?_c('div',{staticClass:\"text-right\"},[_c('b-link',{staticClass:\"btn btn-success mb-1\",attrs:{\"data-action\":\"Add\"},on:{\"click\":_vm.loadMailChimpAccount}},[_vm._v(\" Login to MailChimp \")])],1):_vm._e()]):_vm._e(),(_vm.showAWeber)?_c('b-col',{attrs:{\"lg\":\"12\"}},[(_vm.lstAWeberAccount.length > 0)?_c('div',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"Select a List\",\"label-for\":\"AWeberListId\"}},[_c('b-input-group',[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.UserFunnelSteps[0].AWeberListId),expression:\"UserFunnelSteps[0].AWeberListId\"}],staticClass:\"form-control\",attrs:{\"name\":\"AWeberListId\",\"id\":\"AWeberListId\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.UserFunnelSteps[0], \"AWeberListId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Select One\")]),_vm._l((_vm.lstAWeberAccount),function(account){return _c('optgroup',{attrs:{\"label\":\"account.Name\"}},_vm._l((account.Lists),function(list){return (account.Lists.length > 0)?_c('option',{domProps:{\"value\":list.Id}},[_vm._v(\" \"+_vm._s(list.AWeberId)+\" \")]):_vm._e()}),0)})],2)])],1)],1),_c('b-col',{staticClass:\"text-right\",attrs:{\"lg\":\"12\"}},[_c('b-link',{attrs:{\"data-action\":\"AddOther\"},on:{\"click\":_vm.loadAWeberAccount}},[_vm._v(\" Login With Other Account \")])],1)],1):_vm._e(),(_vm.lstAWeberAccount.length < 1)?_c('div',{staticClass:\"text-right\"},[_c('b-link',{staticClass:\"btn btn-success mb-1\",attrs:{\"data-action\":\"Add\"},on:{\"click\":_vm.loadAWeberAccount}},[_vm._v(\" Login to AWeber \")])],1):_vm._e()]):_vm._e(),_c('b-col',{staticClass:\"text-right\",attrs:{\"lg\":\"12\"}},[_c('b-link',{staticClass:\"btn btn-primary\",on:{\"click\":_vm.updateAutoResponder}},[_c('feather-icon',{attrs:{\"icon\":\"SaveIcon\",\"size\":\"18\"}}),_vm._v(\" Save \")],1)],1)],1)],1):_vm._e()],1),(_vm.UserFunnelFirstStep.TemplateTypeId == 15)?_c('b-tab',{attrs:{\"title\":\"Web Form\"}},[(_vm.webFormCode)?_c('b-card',[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"FORM HEADLINE\",\"label-for\":\"FormHeading\"}},[_c('b-form-input',{attrs:{\"id\":\"FormHeading\",\"name\":\"FormHeading\",\"placeholder\":\"Give Form Name...\"},model:{value:(_vm.webFormCode.FormHeading),callback:function ($$v) {_vm.$set(_vm.webFormCode, \"FormHeading\", $$v)},expression:\"webFormCode.FormHeading\"}})],1)],1),_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',[_c('label',[_vm._v(\"FORM FIELD\")]),_c('br'),_c('label',[_vm._v(\"Email\")])])],1),_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',[_c('label',[_vm._v(\"Display?\")]),_c('b-form-checkbox',{attrs:{\"disabled\":\"\",\"value\":\"true\"},model:{value:(_vm.webFormCode.DisplayEmail),callback:function ($$v) {_vm.$set(_vm.webFormCode, \"DisplayEmail\", $$v)},expression:\"webFormCode.DisplayEmail\"}})],1)],1),_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',[_c('label',[_vm._v(\"Required?\")]),_c('b-form-checkbox',{attrs:{\"disabled\":\"\",\"value\":\"true\"},model:{value:(_vm.webFormCode.RequiredEmail),callback:function ($$v) {_vm.$set(_vm.webFormCode, \"RequiredEmail\", $$v)},expression:\"webFormCode.RequiredEmail\"}})],1)],1),_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',[_c('label',[_vm._v(\"FORM FIELD\")]),_c('br'),_c('label',[_vm._v(\"Name\")])])],1),_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',[_c('label',[_vm._v(\"Display?\")]),_c('b-form-checkbox',{attrs:{\"value\":\"true\"},model:{value:(_vm.webFormCode.DisplayName),callback:function ($$v) {_vm.$set(_vm.webFormCode, \"DisplayName\", $$v)},expression:\"webFormCode.DisplayName\"}})],1)],1),_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',[_c('label',[_vm._v(\"Required?\")]),_c('b-form-checkbox',{attrs:{\"value\":\"true\"},model:{value:(_vm.webFormCode.RequiredName),callback:function ($$v) {_vm.$set(_vm.webFormCode, \"RequiredName\", $$v)},expression:\"webFormCode.RequiredName\"}})],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',[_vm._v(\"FORM TYPE\")]),_c('div',{staticClass:\"demo-inline-spacing\"},[_c('b-form-radio',{attrs:{\"id\":\"inline\",\"value\":\"inline\"},on:{\"change\":function($event){return _vm.onPopupTypeChange($event)}},model:{value:(_vm.webFormCode.PopupType),callback:function ($$v) {_vm.$set(_vm.webFormCode, \"PopupType\", $$v)},expression:\"webFormCode.PopupType\"}},[_vm._v(\" Inline \")]),_c('br'),_c('b-form-radio',{attrs:{\"id\":\"popup\",\"value\":\"popup\"},model:{value:(_vm.webFormCode.PopupType),callback:function ($$v) {_vm.$set(_vm.webFormCode, \"PopupType\", $$v)},expression:\"webFormCode.PopupType\"}},[_vm._v(\" Popup \")])],1)])],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[(_vm.webFormCode.PopupType == 'inline')?_c('b-alert',{attrs:{\"variant\":\"primary\",\"show\":\"\"}},[_c('div',{staticClass:\"alert-body\"},[_c('span',[_vm._v(\" This allows you to place and display a standard form anywhere on your website. \")])])]):_vm._e(),(_vm.webFormCode.PopupType == 'popup')?_c('b-alert',{attrs:{\"variant\":\"primary\",\"show\":\"\"}},[_c('div',{staticClass:\"alert-body\"},[_c('span',[_vm._v(\" This allows you to place and display an overlay on your webste. \")])])]):_vm._e()],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',[_vm._v(\"ON SUCCESS\")]),_c('div',{staticClass:\"demo-inline-spacing\"},[_c('b-form-radio',{attrs:{\"id\":\"message\",\"value\":\"message\"},model:{value:(_vm.webFormCode.RedirectionType),callback:function ($$v) {_vm.$set(_vm.webFormCode, \"RedirectionType\", $$v)},expression:\"webFormCode.RedirectionType\"}},[_vm._v(\" Message \")]),_c('br'),_c('b-form-radio',{attrs:{\"id\":\"redirect\",\"value\":\"redirect\"},model:{value:(_vm.webFormCode.RedirectionType),callback:function ($$v) {_vm.$set(_vm.webFormCode, \"RedirectionType\", $$v)},expression:\"webFormCode.RedirectionType\"}},[_vm._v(\" Redirect \")])],1)])],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[(_vm.webFormCode.RedirectionType == 'message')?_c('b-alert',{attrs:{\"variant\":\"primary\",\"show\":\"\"}},[_c('div',{staticClass:\"alert-body\"},[_c('span',[_vm._v(\" It will show thank you message to subscriber. \")])])]):_vm._e(),(_vm.webFormCode.RedirectionType == 'redirect')?_c('b-alert',{attrs:{\"variant\":\"primary\",\"show\":\"\"}},[_c('div',{staticClass:\"alert-body\"},[_c('span',[_vm._v(\" It will redirect subscriber to your already setup Thank You / Download Page. \")])])]):_vm._e()],1),_c('b-col',{staticClass:\"text-right\",attrs:{\"lg\":\"12\"}},[_c('b-link',{staticClass:\"btn mr-1 btn-primary\",on:{\"click\":_vm.saveFormCode}},[_c('feather-icon',{attrs:{\"icon\":\"SaveIcon\",\"size\":\"18\"}}),_vm._v(\" Save Settings & Generate Code \")],1)],1),(_vm.webFormCode.GeneratedHTMLCode)?_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',[_vm._v(\"YOUR WEB FORM CODE\")]),_c('b-input-group',[_c('b-input-group-prepend',[_c('b-button',{directives:[{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.webFormCode.GeneratedHTMLCode),expression:\"webFormCode.GeneratedHTMLCode\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onCopy),expression:\"onCopy\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onError),expression:\"onError\",arg:\"error\"}],attrs:{\"variant\":\"outline-success\"}},[_c('feather-icon',{attrs:{\"icon\":\"CopyIcon\"}})],1)],1),_c('b-form-textarea',{attrs:{\"id\":\"textarea-plaintext\",\"readonly\":\"\",\"value\":_vm.webFormCode.GeneratedHTMLCode,\"rows\":\"3\",\"no-resize\":\"\"}})],1)],1)],1):_vm._e()],1)],1):_vm._e()],1):_vm._e(),(_vm.funnelDef && _vm.funnelDef.IsTwoStepOptin == true)?_c('b-tab',{attrs:{\"title\":\"Double Optin\"}},[(_vm.StepDoubleOptin)?_c('b-card',[_c('b-row',[_c('validation-observer',{ref:\"emailRules\"},[_c('form',{ref:\"CreateDoubleOptinEmail\",attrs:{\"id\":\"CreateDoubleOptinEmail\"},on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.saveDoubleOptinEmail($event)}}},[_c('div',[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-form-group',{attrs:{\"label\":\"From/SMTP:\",\"label-for\":\"SmtpConfigurationId\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.StepDoubleOptin.SMTPConfigurationId),expression:\"StepDoubleOptin.SMTPConfigurationId\"}],staticClass:\"form-control\",attrs:{\"name\":\"ConfigurationId\",\"id\":\"ConfigurationId\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.StepDoubleOptin, \"SMTPConfigurationId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.UserFromEmail)+\" \")]),_vm._l((_vm.UserSmtpConfiguration),function(smtp){return _c('option',{attrs:{\"data-FromName\":smtp.FromName,\"data-FromEmail\":smtp.FromEmail},domProps:{\"value\":smtp.Id}},[_vm._v(\" \"+_vm._s(smtp.FromName + \" <\" + smtp.FromEmail + \">\")+\" \")])})],2)])],1),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"FunnelEmailId\",\"name\":\"FunnelEmailId\"},domProps:{\"value\":_vm.StepDoubleOptin.Id}}),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"EmailProjectId\",\"id\":\"EmailProjectId\"},domProps:{\"value\":_vm.userFunnelId}}),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"EmailUserStepId\",\"name\":\"EmailUserStepId\"},domProps:{\"value\":_vm.CurrStepID}}),_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"FromName\"}},[_vm._v(\"From Name\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"From Name\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"FromName\",\"name\":\"FromName\",\"placeholder\":\"Please Enter From Name\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.StepDoubleOptin.FromName),callback:function ($$v) {_vm.$set(_vm.StepDoubleOptin, \"FromName\", $$v)},expression:\"StepDoubleOptin.FromName\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,2417750204)})],1)],1),_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"Subject\"}},[_vm._v(\"Subject\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"Subject\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"Subject\",\"name\":\"Subject\",\"placeholder\":\"Please Enter Email Subject\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.StepDoubleOptin.Subject),callback:function ($$v) {_vm.$set(_vm.StepDoubleOptin, \"Subject\", $$v)},expression:\"StepDoubleOptin.Subject\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,2697433168)})],1)],1),_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"ReplyToEmail\"}},[_vm._v(\"Reply To Email\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required|email\",\"name\":\"Reply To Email\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"ReplyToEmail\",\"name\":\"ReplyToEmail\",\"placeholder\":\"Please Enter Reply To Email\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.StepDoubleOptin.ReplyToEmail),callback:function ($$v) {_vm.$set(_vm.StepDoubleOptin, \"ReplyToEmail\", $$v)},expression:\"StepDoubleOptin.ReplyToEmail\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,1314687548)})],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"label-for\":\"EmailText\"}},[_vm._v(\"Email Body\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"Email Body\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('quill-editor',{class:errors.length > 0 ? 'error' : 'valid',attrs:{\"id\":\"EmailText\",\"name\":\"EmailText\",\"options\":_vm.snowOption,\"state\":errors.length > 0 ? false : null},model:{value:(_vm.StepDoubleOptin.EmailText),callback:function ($$v) {_vm.$set(_vm.StepDoubleOptin, \"EmailText\", $$v)},expression:\"StepDoubleOptin.EmailText\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,662016345)})],1)],1)],1)],1)])]),_c('b-col',{staticClass:\"text-right\",attrs:{\"lg\":\"12\"}},[_c('b-link',{staticClass:\"btn btn-primary\",on:{\"click\":_vm.saveOptinEmail}},[_c('feather-icon',{attrs:{\"icon\":\"SaveIcon\",\"size\":\"18\"}}),_vm._v(\" Save \")],1)],1)],1)],1):_vm._e()],1):_vm._e()],1):_vm._e(),_c('b-modal',{ref:\"modal\",attrs:{\"id\":\"stepSettingsModal\",\"title\":\"Update Step URL\",\"ok-title\":\"Submit\",\"centered\":\"\"},on:{\"hidden\":_vm.resetModal,\"ok\":_vm.handleOk}},[_c('form',{ref:\"CurrStepURLForm\",on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.handleSubmit($event)}}},[_c('validation-observer',{ref:\"CurrStepURLFormRules\"},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"CurrStepURL\"}},[_vm._v(\"Step URL\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"Step URL\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-input-group',[_c('b-form-input',{attrs:{\"id\":\"CurrStepURL\",\"name\":\"CurrStepURL\",\"placeholder\":\"Please Enter Step URL\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.CurrStepURL),callback:function ($$v) {_vm.CurrStepURL=$$v},expression:\"CurrStepURL\"}}),_c('b-input-group-append',[_c('b-button',{attrs:{\"variant\":\"outline-primary\"}},[_c('b-link',{attrs:{\"href\":_vm.currIndexSettings == 0? _vm.firstStepPageURL: _vm.secondStepPageURL,\"target\":\"_blank\"}},[_c('feather-icon',{attrs:{\"icon\":\"ExternalLinkIcon\"}})],1)],1)],1)],1),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}])})],1)],1)],1)]),_c('b-modal',{ref:\"modal\",attrs:{\"id\":\"addEditProductsModal\",\"title\":_vm.ProductDetail!=null && _vm.ProductDetail.FFProduct.Id>0?'Edit Product':'Add Product',\"ok-title\":\"Submit\",\"ok-icon\":\"PlusIcon\",\"centered\":\"\",\"size\":\"lg\"},on:{\"ok\":_vm.handleFormOk},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(ref){\nvar cancel = ref.cancel;\nvar ok = ref.ok;\nreturn [_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"secondary\",\"type\":\"button\"},on:{\"click\":_vm.closeProductModal}},[_c('feather-icon',{attrs:{\"icon\":\"XCircleIcon\",\"size\":\"18\"}}),_vm._v(\" Cancel \")],1),(_vm.CheckoutTempId>0 || _vm.PaymentMethod=='PAYPAL')?_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"info\",\"type\":\"button\"},on:{\"click\":_vm.saveProduct}},[_c('feather-icon',{attrs:{\"icon\":\"SaveIcon\",\"size\":\"18\"}}),_vm._v(\" Save \")],1):_vm._e()]}}])},[_c('validation-observer',{ref:\"productRules\"},[_c('form',{ref:\"CreateProductFormFunnel\",attrs:{\"id\":\"CreateProductFormFunnel\"},on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.saveProduct($event)}}},[_c('b-tabs',[_c('b-tab',{attrs:{\"title\":\"Basic Info\"}},[(_vm.ProductDetail)?_c('div',[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"ProductName\"}},[_vm._v(\"Name\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"Product Name\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"ProductName\",\"name\":\"ProductName\",\"placeholder\":\"Please Enter Product Name\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.ProductDetail.FFProduct.ProductName),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"ProductName\", $$v)},expression:\"ProductDetail.FFProduct.ProductName\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,492733800)})],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"ProductPrice\"}},[_vm._v(\"Price\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required|min_One_decimal\",\"name\":\"Product Price\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-input-group',[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.ProductDetail.FFProduct.CurrencySymbol)+\" \")]),_c('b-form-input',{attrs:{\"id\":\"ProductPrice\",\"name\":\"ProductPrice\",\"placeholder\":\"Please Enter Product Price\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.ProductDetail.FFProduct.ProductPrice),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"ProductPrice\", $$v)},expression:\"ProductDetail.FFProduct.ProductPrice\"}}),_c('b-input-group-append',{attrs:{\"is-text\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.ProductDetail.FFProduct.CurrencyCode)+\" \")])],1),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,2196659156)})],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"lg\":\"4\"}},[(_vm.ProductDetail.PaymentMethod.length > 0)?_c('b-form-group',[_c('label',{attrs:{\"for\":\"PaymentMethodId\"}},[_vm._v(\"Payment Methods\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"CheckOut Options\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('select',{staticClass:\"form-control\",attrs:{\"name\":\"PaymentMethodId\",\"id\":\"PaymentMethodId\",\"state\":errors.length > 0 ? false : null},on:{\"change\":function($event){return _vm.openPaymentProcessor($event)}}},[_c('option',[_vm._v(\"Select Payment Method\")]),_vm._l((_vm.ProductDetail.PaymentMethod),function(pay){return _c('option',{attrs:{\"dataName\":pay.Code},domProps:{\"value\":pay.Id,\"selected\":pay.Id ==_vm.ProductDetail.FFProduct.PaymentMethodId}},[_vm._v(\" \"+_vm._s(pay.Name)+\" \")])})],2),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,1597866288)})],1):_vm._e(),(_vm.ProductDetail.PaymentMethod.length < 1)?_c('b-form-group',{attrs:{\"label\":\"Please set your payment configurations in your profile.\"}}):_vm._e()],1),(_vm.PaymentMethodId==1 || _vm.PaymentMethodId=='1' )?_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',{attrs:{\"id\":\"PaypalDiv\"}},[_c('label',{attrs:{\"for\":\"PaypalAccounts\"}},[_vm._v(\"Choose Account\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"PaypalAccounts\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('select',{staticClass:\"form-control\",class:errors.length > 0 ? 'is-invalid' : 'valid',attrs:{\"name\":\"PaypalAccounts\",\"id\":\"PaypalAccounts\",\"state\":errors.length > 0 ? false : null}},_vm._l((_vm.ProductDetail.PaypalAccounts),function(pay){return _c('option',{domProps:{\"value\":pay.Id,\"selected\":pay.Id ==_vm.ProductDetail.FFProduct.PaymentProcessorId}},[_vm._v(\" \"+_vm._s(pay.AccountName)+\" \")])}),0),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,3780086580)})],1)],1):_vm._e(),(_vm.PaymentMethodId==2 || _vm.PaymentMethodId=='2' )?_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',{attrs:{\"id\":\"stripeDiv\"}},[_c('label',{attrs:{\"for\":\"StripeAccounts\"}},[_vm._v(\"Choose Account\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"StripeAccounts\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('select',{staticClass:\"form-control\",class:errors.length > 0 ? 'is-invalid' : 'valid',attrs:{\"name\":\"StripeAccounts\",\"id\":\"StripeAccounts\",\"state\":errors.length > 0 ? false : null}},_vm._l((_vm.ProductDetail.StripeAccounts),function(pay){return _c('option',{domProps:{\"value\":pay.Id,\"selected\":pay.Id ==_vm.ProductDetail.FFProduct.PaymentProcessorId}},[_vm._v(\" \"+_vm._s(pay.Email)+\" \")])}),0),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,2486356674)})],1)],1):_vm._e(),(_vm.PaymentMethodId==3 || _vm.PaymentMethodId=='3' )?_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',{attrs:{\"id\":\"authorizenetDiv\"}},[_c('label',{attrs:{\"for\":\"AuthorizeNetAccounts\"}},[_vm._v(\"Choose Account\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"AuthorizeNetAccounts\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('select',{staticClass:\"form-control\",class:errors.length > 0 ? 'is-invalid' : 'valid',attrs:{\"name\":\"AuthorizeNetAccounts\",\"id\":\"AuthorizeNetAccounts\",\"state\":errors.length > 0 ? false : null}},_vm._l((_vm.ProductDetail.AuthorizeNetAccounts),function(pay){return _c('option',{domProps:{\"value\":pay.Id,\"selected\":pay.Id ==_vm.ProductDetail.FFProduct.PaymentProcessorId}},[_vm._v(\" \"+_vm._s(pay.AccountName)+\" \")])}),0),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,1952235549)})],1)],1):_vm._e(),(_vm.PaymentMethodId !=0 || _vm.PaymentMethodId!='0')?_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',[_c('label',[_vm._v(\"Payment Mode\")]),_c('div',{staticClass:\"demo-inline-spacing\",staticStyle:{\"margin-top\":\"-0.5rem\"}},[_c('b-form-radio',{attrs:{\"id\":\"PaymentModeSandbox\",\"value\":\"true\"},model:{value:(_vm.ProductDetail.FFProduct.IsSandBox),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"IsSandBox\", $$v)},expression:\"ProductDetail.FFProduct.IsSandBox\"}},[_vm._v(\" Sandbox \")]),_c('br'),_c('b-form-radio',{attrs:{\"id\":\"PaymentModeLive\",\"value\":\"false\"},model:{value:(_vm.ProductDetail.FFProduct.IsSandBox),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"IsSandBox\", $$v)},expression:\"ProductDetail.FFProduct.IsSandBox\"}},[_vm._v(\" Live \")])],1)])],1):_vm._e()],1),(_vm.PaymentMethodId==4 || _vm.PaymentMethodId=='4' )?_c('b-row',[_c('b-col',{attrs:{\"lg\":_vm.Subscription?'6':'12'}},[_c('b-form-group',{attrs:{\"label\":\"BrainTree Accounts\",\"id\":\"braintreeDiv\",\"label-for\":\"BrainTree Accounts\"}},[_c('select',{staticClass:\"form-control\",attrs:{\"name\":\"BrainTreeAccounts\",\"id\":\"BrainTreeAccounts\"}},_vm._l((_vm.ProductDetail.BrainTreeAccounts),function(pay){return _c('option',{domProps:{\"value\":pay.Id,\"selected\":pay.Id ==_vm.ProductDetail.FFProduct.PaymentProcessorId}},[_vm._v(\" \"+_vm._s(pay.AccountName)+\" \")])}),0)])],1),(_vm.Subscription)?_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-form-group',{attrs:{\"label\":\"BrainTree Plain ID\",\"label-for\":\"PlanId\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"BrainTree Plain ID\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"PlanId\",\"name\":\"PlanId\",\"placeholder\":\"BrainTree Plain ID...\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.ProductDetail.FFProduct.PlanId),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"PlanId\", $$v)},expression:\"ProductDetail.FFProduct.PlanId\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,49896537)})],1)],1):_vm._e()],1):_vm._e(),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"Id\",\"name\":\"Id\"},domProps:{\"value\":_vm.ProductDetail.FFProduct.Id}}),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"CustomProductID\",\"name\":\"CustomProductID\"},domProps:{\"value\":_vm.ProductDetail.FFProduct.CustomProductID}}),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"UserFunnelId\",\"name\":\"UserFunnelId\"},domProps:{\"value\":_vm.CurrStepID}}),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"UserTabNo\",\"name\":\"UserTabNo\"},domProps:{\"value\":_vm.CurrStepID}}),(_vm.Subscription)?_c('div',[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"ProductPaymentPeriod\"}},[_vm._v(\"Payment Period\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required|min_One\",\"name\":\"Payment Period\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"ProductPaymentPeriod\",\"name\":\"ProductPaymentPeriod\",\"placeholder\":\"Please Enter Payment Period\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.ProductDetail.FFProduct.ProductPaymentPeriod),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"ProductPaymentPeriod\", $$v)},expression:\"ProductDetail.FFProduct.ProductPaymentPeriod\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,745180355)})],1)],1),_c('b-col',{attrs:{\"lg\":\"6\"}},[(_vm.ProductDetail.PaymentFrequency.length > 0)?_c('b-form-group',[_c('label',{attrs:{\"for\":\"ProductPaymentFrequency\"}},[_vm._v(\"Payment Frequency\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('select',{staticClass:\"form-control\",attrs:{\"name\":\"ProductPaymentFrequency\",\"id\":\"ProductPaymentFrequency\"}},_vm._l((_vm.ProductDetail.PaymentFrequency),function(freq){return _c('option',{domProps:{\"value\":freq.Id,\"selected\":freq.Id ==_vm.ProductDetail.FFProduct.ProductPaymentFrequency}},[_vm._v(\" \"+_vm._s(freq.FrequencyName)+\" \")])}),0)]):_vm._e()],1),_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"ProductNumberOfPayments\"}},[_vm._v(\"No Of Payments\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required|min_One\",\"name\":\"Number Of Payments\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"ProductNumberOfPayments\",\"name\":\"ProductNumberOfPayments\",\"placeholder\":\"Please Enter No Of Payments\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.ProductDetail.FFProduct.ProductNumberOfPayments),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"ProductNumberOfPayments\", $$v)},expression:\"ProductDetail.FFProduct.ProductNumberOfPayments\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,2566347041)})],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"Is Trial?\",\"label-for\":\"ProductIsTrial\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"ProductIsTrial\",\"name\":\"ProductIsTrial\",\"value\":\"true\",\"unchecked-value\":\"false\"},on:{\"input\":_vm.TrialDiv},model:{value:(_vm.ProductDetail.FFProduct.ProductIsTrial),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"ProductIsTrial\", $$v)},expression:\"ProductDetail.FFProduct.ProductIsTrial\"}})],1)],1)],1),(_vm.IsTrial)?_c('b-row',[_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"ProductTrialPrice\"}},[_vm._v(\"Trial Price\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required|min_One_decimal\",\"name\":\"Product Trial Price\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"ProductTrialPrice\",\"name\":\"ProductTrialPrice\",\"placeholder\":\"Please Enter Trial Price\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.ProductDetail.FFProduct.ProductTrialPrice),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"ProductTrialPrice\", $$v)},expression:\"ProductDetail.FFProduct.ProductTrialPrice\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,3072247811)})],1)],1),_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"ProductTrialPeriod\"}},[_vm._v(\"Trial Period in day(s)\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required|min_One\",\"name\":\"Trial Period\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"ProductTrialPeriod\",\"name\":\"ProductTrialPeriod\",\"placeholder\":\"Please Enter Trial Period in day(s)\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.ProductDetail.FFProduct.ProductTrialPeriod),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"ProductTrialPeriod\", $$v)},expression:\"ProductDetail.FFProduct.ProductTrialPeriod\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,877933130)})],1),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"ProductTrialPeriodFrequency\",\"name\":\"ProductTrialPeriodFrequency\",\"value\":\"1\"}})],1)],1):_vm._e()],1):_vm._e(),_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{staticClass:\"hidden\",attrs:{\"label\":\"Product Archived\",\"label-for\":\"ProductIsTrial\"}},[_c('div',{staticClass:\"demo-inline-spacing\"},[_c('b-form-radio',{attrs:{\"name\":\"ProductArchived\",\"value\":\"true\"},model:{value:(_vm.ProductDetail.FFProduct.ProductArchived),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"ProductArchived\", $$v)},expression:\"ProductDetail.FFProduct.ProductArchived\"}},[_vm._v(\" Yes \")]),_c('b-form-radio',{attrs:{\"name\":\"ProductArchived\",\"value\":\"false\"},model:{value:(_vm.ProductDetail.FFProduct.ProductArchived),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"ProductArchived\", $$v)},expression:\"ProductDetail.FFProduct.ProductArchived\"}},[_vm._v(\" No \")])],1)])],1)],1)],1):_vm._e()]),_c('b-tab',{attrs:{\"title\":\"Order Email Settings\"}},[(_vm.ProductDetail)?_c('div',[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"Do you want to Send Order Email to Customers?\",\"label-for\":\"IsEmailEnabled\"}},[_c('div',{staticClass:\"demo-inline-spacing\"},[_c('b-form-radio',{attrs:{\"name\":\"IsEmailEnabled\",\"value\":\"true\"},on:{\"change\":_vm.fnEmailEnabled},model:{value:(_vm.ProductDetail.FFProduct.IsEmailEnabled),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"IsEmailEnabled\", $$v)},expression:\"ProductDetail.FFProduct.IsEmailEnabled\"}},[_vm._v(\" Yes \")]),_c('b-form-radio',{attrs:{\"name\":\"IsEmailEnabled\",\"value\":\"false\"},on:{\"change\":_vm.fnEmailEnabled},model:{value:(_vm.ProductDetail.FFProduct.IsEmailEnabled),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"IsEmailEnabled\", $$v)},expression:\"ProductDetail.FFProduct.IsEmailEnabled\"}},[_vm._v(\" No \")])],1)])],1)],1),(_vm.EmailEnabled == true)?_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[(_vm.ProductDetail.FunnelUserSmtpConfiguration.length>0)?_c('b-form-group',{attrs:{\"label\":\"From/SMTP:\",\"label-for\":\"SmtpConfigurationId\"}},[_c('select',{staticClass:\"form-control\",attrs:{\"name\":\"SmtpConfigurationId\",\"id\":\"SmtpConfigurationId\"}},_vm._l((_vm.ProductDetail.FunnelUserSmtpConfiguration),function(smtp){return _c('option',{attrs:{\"data-FromName\":smtp.FromName,\"data-FromEmail\":smtp.FromEmail},domProps:{\"value\":smtp.Id,\"selected\":smtp.Id ==_vm.ProductDetail.FFProduct.SmtpConfigurationId}},[_vm._v(\" \"+_vm._s(smtp.FromName + \" <\" + smtp.FromEmail + \">\")+\" \")])}),0)]):_vm._e()],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"Subject\"}},[_vm._v(\"Subject\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"Email Subject\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"Subject\",\"name\":\"Subject\",\"placeholder\":\"Please Enter Email Subject\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.ProductDetail.FFProduct.FulfillmentEmailSubject),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"FulfillmentEmailSubject\", $$v)},expression:\"ProductDetail.FFProduct.FulfillmentEmailSubject\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,1145755786)})],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"FulfillmentEmailBody\"}},[_vm._v(\"Email Body\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"Email Body\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('quill-editor',{class:errors.length > 0 ? 'error' : 'valid',attrs:{\"id\":\"FulfillmentEmailBody\",\"name\":\"FulfillmentEmailBody\",\"options\":_vm.snowOption,\"state\":errors.length > 0 ? false : null},model:{value:(_vm.ProductDetail.FFProduct.FulfillmentEmailBody),callback:function ($$v) {_vm.$set(_vm.ProductDetail.FFProduct, \"FulfillmentEmailBody\", $$v)},expression:\"ProductDetail.FFProduct.FulfillmentEmailBody\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,3623589474)})],1)],1)],1):_vm._e()],1):_vm._e()]),(_vm.PaymentMethod !='' && _vm.PaymentMethod!='PAYPAL')?_c('b-tab',{attrs:{\"title\":\"Checkout Page Settings\"}},[_c('b-row',_vm._l((_vm.SalePageTemplates),function(temp){return _c('b-col',{key:temp.Name,staticClass:\"custom-col-6\",attrs:{\"lg\":\"6\",\"data\":temp}},[(_vm.CheckoutTempId<1)?_c('b-tabs',{attrs:{\"content-class\":\"pt-1\",\"fill\":\"\",\"end\":\"\",\"id\":\"tempVariations\"}},[_c('b-tab',{staticClass:\"mb-0 varitions-color-tab\",attrs:{\"title-link-attributes\":{style:'background:#' +temp.ColorOne +' !important',},\"display\":\"block\"}},[_c('b-card',{staticClass:\"shadow-none\",attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"text-center\"},[_c('expandable-image',{staticClass:\"image\",attrs:{\"src\":_vm.WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.ChildFolder +'/_template_files/thumb.Jpg'}})],1),_c('b-row',{staticClass:\"text-center mx-0\"},[_c('b-col',{staticClass:\"border-top d-flex align-items-between flex-column py-1\",attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"font-weight-bolder mb-0\"},[_c('b-link',{staticClass:\"btn mr-1 btn-outline-primary templates\",attrs:{\"data-index\":\"0\",\"data-parentFolder\":temp.ParentFolder,\"data-mainFolder\":temp.MainFolder,\"data-templateTypeId\":temp.TemplateTypeId,\"data-templateFileName\":temp.TemplateFileName,\"data-templateVariation\":temp.ChildFolder,\"data-TemplateName\":temp.TemplateName,\"data-value\":temp.Id},on:{\"click\":_vm.UseThisCheckoutTemplate}},[_c('i',{staticClass:\"fa fa-mouse-pointer\"}),_c('span',{staticClass:\"name\"},[_vm._v(\"Use This\")])])],1)])],1)],1)],1),_c('b-tab',{staticClass:\"mb-0 varitions-color-tab\",attrs:{\"title-link-attributes\":{style:'background:#' +temp.ColorTwo +' !important',},\"display\":\"block\"}},[_c('b-card',{staticClass:\"shadow-none\",attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"text-center\"},[_c('expandable-image',{staticClass:\"image\",attrs:{\"src\":_vm.WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.FolderTwo +'/_template_files/thumb.Jpg'}})],1),_c('b-row',{staticClass:\"text-center mx-0\"},[_c('b-col',{staticClass:\"border-top d-flex align-items-between flex-column py-1\",attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"font-weight-bolder mb-0\"},[_c('b-link',{staticClass:\"btn mr-1 btn-outline-primary templates\",attrs:{\"data-index\":\"0\",\"data-parentFolder\":temp.ParentFolder,\"data-mainFolder\":temp.MainFolder,\"data-templateTypeId\":temp.TemplateTypeId,\"data-templateFileName\":temp.TemplateFileName,\"data-templateVariation\":temp.FolderTwo,\"data-TemplateName\":temp.TemplateName,\"data-value\":temp.Id},on:{\"click\":_vm.UseThisCheckoutTemplate}},[_c('i',{staticClass:\"fa fa-mouse-pointer\"}),_c('span',{staticClass:\"name\"},[_vm._v(\"Use This\")])])],1)])],1)],1)],1),_c('b-tab',{staticClass:\"mb-0 varitions-color-tab\",attrs:{\"title-link-attributes\":{style:'background:#' +temp.ColorThree +' !important',},\"display\":\"block\"}},[_c('b-card',{staticClass:\"shadow-none\",attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"text-center\"},[_c('expandable-image',{staticClass:\"image\",attrs:{\"src\":_vm.WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.FolderThree +'/_template_files/thumb.Jpg'}})],1),_c('b-row',{staticClass:\"text-center mx-0\"},[_c('b-col',{staticClass:\"border-top d-flex align-items-between flex-column py-1\",attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"font-weight-bolder mb-0\"},[_c('b-link',{staticClass:\"btn mr-1 btn-outline-primary templates\",attrs:{\"data-index\":\"0\",\"data-parentFolder\":temp.ParentFolder,\"data-mainFolder\":temp.MainFolder,\"data-templateTypeId\":temp.TemplateTypeId,\"data-templateFileName\":temp.TemplateFileName,\"data-templateVariation\":temp.FolderThree,\"data-TemplateName\":temp.TemplateName,\"data-value\":temp.Id},on:{\"click\":_vm.UseThisCheckoutTemplate}},[_c('i',{staticClass:\"fa fa-mouse-pointer\"}),_c('span',{staticClass:\"name\"},[_vm._v(\"Use This\")])])],1)])],1)],1)],1),_c('b-tab',{staticClass:\"mb-0 varitions-color-tab\",attrs:{\"title-link-attributes\":{style:'background:#' +temp.ColorFour +' !important',},\"display\":\"block\"}},[_c('b-card',{staticClass:\"shadow-none\",attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"text-center\"},[_c('expandable-image',{staticClass:\"image\",attrs:{\"src\":_vm.WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.FolderFour +'/_template_files/thumb.Jpg'}})],1),_c('b-row',{staticClass:\"text-center mx-0\"},[_c('b-col',{staticClass:\"border-top d-flex align-items-between flex-column py-1\",attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"font-weight-bolder mb-0\"},[_c('b-link',{staticClass:\"btn mr-1 btn-outline-primary templates\",attrs:{\"data-index\":\"0\",\"data-parentFolder\":temp.ParentFolder,\"data-mainFolder\":temp.MainFolder,\"data-templateTypeId\":temp.TemplateTypeId,\"data-templateFileName\":temp.TemplateFileName,\"data-templateVariation\":temp.FolderFour,\"data-TemplateName\":temp.TemplateName,\"data-value\":temp.Id},on:{\"click\":_vm.UseThisCheckoutTemplate}},[_c('i',{staticClass:\"fa fa-mouse-pointer\"}),_c('span',{staticClass:\"name\"},[_vm._v(\"Use This\")])])],1)])],1)],1)],1)],1):_vm._e(),(_vm.CheckoutTempId>1)?_c('b-card',{staticClass:\"shadow-none\",attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"text-center\"},[_c('expandable-image',{staticClass:\"image\",attrs:{\"src\":_vm.WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +_vm.SalePageVariation +'/_template_files/thumb.Jpg'}})],1),_c('b-row',{staticClass:\"text-center mx-0\"},[_c('b-col',{staticClass:\"border-top d-flex align-items-between flex-column py-1\",attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"font-weight-bolder mb-0\"},[_c('b-link',{staticClass:\"btn mr-1 btn-danger templates\",attrs:{\"data-index\":\"0\",\"data-parentFolder\":temp.ParentFolder,\"data-mainFolder\":temp.MainFolder,\"data-templateTypeId\":temp.TemplateTypeId,\"data-templateFileName\":temp.TemplateFileName,\"data-TemplateName\":temp.TemplateName,\"data-value\":temp.Id},on:{\"click\":_vm.ResetCheckoutTemplate}},[_c('feather-icon',{attrs:{\"icon\":\"RefreshCwIcon\"}}),_c('span',{staticClass:\"name\"},[_vm._v(\" Reset Template\")])],1)],1)])],1)],1):_vm._e()],1)}),1)],1):_vm._e()],1)],1)]),_vm._t(\"default\")],2),_c('b-modal',{ref:\"modal\",attrs:{\"no-close-on-backdrop\":\"\",\"id\":\"addEditEmailModal\",\"title\":_vm.StepFunnelEmailDetail!=null && _vm.StepFunnelEmailDetail.FunnelEmail.Id>0?'Edit Automation Email':'Add Automation Email',\"ok-title\":\"Submit\",\"centered\":\"\",\"size\":\"lg\"},on:{\"ok\":_vm.handleEmailFormOk},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(ref){\nvar cancel = ref.cancel;\nvar ok = ref.ok;\nreturn [_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"secondary\",\"type\":\"button\"},on:{\"click\":_vm.closeEmailModal}},[_c('feather-icon',{attrs:{\"icon\":\"XCircleIcon\",\"size\":\"18\"}}),_vm._v(\" Cancel \")],1),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"info\",\"type\":\"button\"},on:{\"click\":_vm.openSendTestEmailModal}},[_c('feather-icon',{attrs:{\"icon\":\"MailIcon\",\"size\":\"18\"}}),_vm._v(\" Send Test Email \")],1),(!_vm.hideDraftBtn)?_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"primary\",\"type\":\"button\"},on:{\"click\":_vm.saveDraftEmail}},[_c('feather-icon',{attrs:{\"icon\":\"SaveIcon\",\"size\":\"18\"}}),_vm._v(\" Save a Draft \")],1):_vm._e(),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"primary\",\"type\":\"button\"},on:{\"click\":_vm.scheduleEmail}},[_c('feather-icon',{attrs:{\"icon\":\"SendIcon\",\"size\":\"18\"}}),_vm._v(\" Save & Schedule \")],1)]}}])},[_c('validation-observer',{ref:\"emailRules\"},[_c('form',{ref:\"CreateEmailFormFunnel\",attrs:{\"id\":\"CreateEmailFormFunnel\"},on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.saveEmail($event)}}},[(_vm.StepFunnelEmailDetail)?_c('div',[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"From/SMTP:\",\"label-for\":\"SmtpConfigurationId\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.StepFunnelEmailDetail.FunnelEmail.ConfigurationId),expression:\"StepFunnelEmailDetail.FunnelEmail.ConfigurationId\"}],staticClass:\"form-control\",attrs:{\"name\":\"ConfigurationId\",\"id\":\"ConfigurationId\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.StepFunnelEmailDetail.FunnelEmail, \"ConfigurationId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\" Use System Default (\"+_vm._s(_vm.StepFunnelEmailDetail.UserFromEmail)+\") \")]),_vm._l((_vm.StepFunnelEmailDetail.SmtpConfigurations),function(smtp){return _c('option',{attrs:{\"data-FromName\":smtp.FromName,\"data-FromEmail\":smtp.FromEmail},domProps:{\"value\":smtp.Id}},[_vm._v(\" \"+_vm._s(smtp.FromName + \" <\" + smtp.FromEmail + \">\")+\" \")])})],2)])],1),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"FunnelEmailId\",\"name\":\"FunnelEmailId\"},domProps:{\"value\":_vm.StepFunnelEmailDetail.FunnelEmail.Id}}),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"EmailProjectId\",\"id\":\"EmailProjectId\"},domProps:{\"value\":_vm.userFunnelId}}),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"EmailUserStepId\",\"name\":\"EmailUserStepId\"},domProps:{\"value\":_vm.CurrStepID}}),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"IsScheduled\",\"name\":\"IsScheduled\"},domProps:{\"value\":_vm.StepFunnelEmailDetail.FunnelEmail.IsScheduled}}),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"AttachmentFolderId\",\"id\":\"AttachmentFolderId\"},domProps:{\"value\":_vm.StepFunnelEmailDetail.FunnelEmail.AttachmentFolderId}}),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"FromName\"}},[_vm._v(\"From Name\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"From Name\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"FromName\",\"name\":\"FromName\",\"placeholder\":\"Please Enter From Name\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.StepFunnelEmailDetail.FunnelEmail.FromName),callback:function ($$v) {_vm.$set(_vm.StepFunnelEmailDetail.FunnelEmail, \"FromName\", $$v)},expression:\"StepFunnelEmailDetail.FunnelEmail.FromName\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,716675482)})],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"Subject\"}},[_vm._v(\"Subject\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"Subject\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"Subject\",\"name\":\"Subject\",\"placeholder\":\"Please Enter Email Subject\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.StepFunnelEmailDetail.FunnelEmail.Subject),callback:function ($$v) {_vm.$set(_vm.StepFunnelEmailDetail.FunnelEmail, \"Subject\", $$v)},expression:\"StepFunnelEmailDetail.FunnelEmail.Subject\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,3051166838)})],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"ReplyToEmail\"}},[_vm._v(\"Reply To Email\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required|email\",\"name\":\"Reply To Email\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"ReplyToEmail\",\"name\":\"ReplyToEmail\",\"placeholder\":\"Please Enter Reply To Email\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.StepFunnelEmailDetail.FunnelEmail.ReplyToEmail),callback:function ($$v) {_vm.$set(_vm.StepFunnelEmailDetail.FunnelEmail, \"ReplyToEmail\", $$v)},expression:\"StepFunnelEmailDetail.FunnelEmail.ReplyToEmail\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,1374182042)})],1)],1),_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',{attrs:{\"label\":\"Choose Delay\",\"label-for\":\"ddlDays\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.Delay),expression:\"Delay\"}],staticClass:\"form-control\",attrs:{\"name\":\"ddlDays\",\"id\":\"ddlDays\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.Delay=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.onDelayChange($event)}]}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Immediately\")]),_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(\"After 1 Day\")]),_c('option',{attrs:{\"value\":\"2\"}},[_vm._v(\"After 2 Day\")]),_c('option',{attrs:{\"value\":\"3\"}},[_vm._v(\"After 3 Day\")]),_c('option',{attrs:{\"value\":\"4\"}},[_vm._v(\"After 4 Day\")]),_c('option',{attrs:{\"value\":\"5\"}},[_vm._v(\"After 5 Day\")]),_c('option',{attrs:{\"value\":\"6\"}},[_vm._v(\"After 6 Day\")]),_c('option',{attrs:{\"value\":\"7\"}},[_vm._v(\"After 7 Day\")]),_c('option',{attrs:{\"value\":\"8\"}},[_vm._v(\"Custom\")])])])],1),_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',{attrs:{\"label\":\"Delay Days\",\"label-for\":\"DelayDays\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.StepFunnelEmailDetail.FunnelEmail.DelayDays),expression:\"StepFunnelEmailDetail.FunnelEmail.DelayDays\"}],staticClass:\"form-control\",attrs:{\"name\":\"DelayDays\",\"id\":\"DelayDays\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.StepFunnelEmailDetail.FunnelEmail, \"DelayDays\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},function($event){return _vm.onDayChange($event)}]}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"0\")]),_vm._l((365),function(index){return _c('option',{key:index,domProps:{\"value\":index}},[_vm._v(\" \"+_vm._s(index)+\" \")])})],2)])],1),_c('b-col',{attrs:{\"lg\":\"4\"}},[_c('b-form-group',{attrs:{\"label\":\"Delay Hours\",\"label-for\":\"DelayHours\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.StepFunnelEmailDetail.FunnelEmail.DelayHours),expression:\"StepFunnelEmailDetail.FunnelEmail.DelayHours\"}],staticClass:\"form-control\",attrs:{\"name\":\"DelayHours\",\"id\":\"DelayHours\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.StepFunnelEmailDetail.FunnelEmail, \"DelayHours\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"0\")]),_vm._l((23),function(index){return _c('option',{key:index,domProps:{\"value\":index}},[_vm._v(\" \"+_vm._s(index)+\" \")])})],2)])],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[(_vm.StepFunnelEmailDetail.FunnelEmail.DelayDays>0 || _vm.StepFunnelEmailDetail.FunnelEmail.DelayHours>0)?_c('div',[_vm._v(\" Email will be sent after \"+_vm._s(_vm.StepFunnelEmailDetail.FunnelEmail.DelayDays)+\" day\"+_vm._s(_vm.StepFunnelEmailDetail.FunnelEmail.DelayDays>1?'s':'')+\" and \"+_vm._s(_vm.StepFunnelEmailDetail.FunnelEmail.DelayHours)+\" hour\"+_vm._s(_vm.StepFunnelEmailDetail.FunnelEmail.DelayHours>1?'s':'')+\" \")]):_vm._e(),(_vm.StepFunnelEmailDetail.FunnelEmail.DelayDays<1 && _vm.StepFunnelEmailDetail.FunnelEmail.DelayHours<1)?_c('div',[_vm._v(\" Email will be sent immediately \")]):_vm._e()])],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"label-for\":\"EmailText\"}},[_vm._v(\"Email Body\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"Email Body\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('quill-editor',{class:errors.length > 0 ? 'error' : 'valid',attrs:{\"id\":\"EmailText\",\"name\":\"EmailText\",\"options\":_vm.snowOption,\"state\":errors.length > 0 ? false : null},model:{value:(_vm.StepFunnelEmailDetail.FunnelEmail.EmailText),callback:function ($$v) {_vm.$set(_vm.StepFunnelEmailDetail.FunnelEmail, \"EmailText\", $$v)},expression:\"StepFunnelEmailDetail.FunnelEmail.EmailText\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,265532799)})],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',[_vm._v(\"Cam Spam Additional Footer Text(Optional)\")]),_c('b-form-input',{attrs:{\"id\":\"CamSpam\",\"name\":\"CamSpam\",\"placeholder\":\"Give CamSpam...\"},model:{value:(_vm.StepFunnelEmailDetail.FunnelEmail.CamSpam),callback:function ($$v) {_vm.$set(_vm.StepFunnelEmailDetail.FunnelEmail, \"CamSpam\", $$v)},expression:\"StepFunnelEmailDetail.FunnelEmail.CamSpam\"}})],1)],1)],1)],1):_vm._e()])]),_vm._t(\"default\")],2),_c('b-modal',{ref:\"modal\",attrs:{\"id\":\"sendTestEmailModal\",\"title\":\"Send Test Email\",\"ok-title\":\"Submit\",\"centered\":\"\",\"size\":\"lg\"},on:{\"ok\":_vm.handleEmailFormOk,\"hidden\":_vm.resetTestEmailModal},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(ref){\nvar cancel = ref.cancel;\nvar ok = ref.ok;\nreturn [_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"secondary\",\"type\":\"button\"},on:{\"click\":_vm.closeTestEmailModal}},[_c('feather-icon',{attrs:{\"icon\":\"XCircleIcon\",\"size\":\"18\"}}),_vm._v(\" Cancel \")],1),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"primary\",\"type\":\"button\"},on:{\"click\":_vm.sendTestEmail}},[_c('feather-icon',{attrs:{\"icon\":\"MailIcon\",\"size\":\"18\"}}),_vm._v(\" Send \")],1)]}}])},[_c('validation-observer',{ref:\"testEmailRules\"},[_c('form',{ref:\"TestEmailFormFunnel\",attrs:{\"id\":\"TestEmailFormFunnel\"},on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();}}},[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"ToEmail\"}},[_vm._v(\"To Email\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required|email\",\"name\":\"Reply To Email\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"ToEmail\",\"name\":\"ToEmail\",\"placeholder\":\"Please Enter To Email\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.TestToEmail),callback:function ($$v) {_vm.TestToEmail=$$v},expression:\"TestToEmail\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}])})],1)],1)],1)],1)]),_vm._t(\"default\")],2),_c('b-modal',{ref:\"modal\",attrs:{\"id\":\"projectTermsPrivacyPolicy\",\"title\":\"Terms & Privacy Policy\",\"ok-title\":\"Submit\",\"centered\":\"\",\"size\":\"lg\"},on:{\"ok\":_vm.HandleTermsPrivacyPolicyOk},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(ref){\nvar cancel = ref.cancel;\nvar ok = ref.ok;\nreturn [_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"secondary\",\"type\":\"button\"},on:{\"click\":_vm.closeTermsPrivacyPolicyModal}},[_c('feather-icon',{attrs:{\"icon\":\"XCircleIcon\",\"size\":\"18\"}}),_vm._v(\" Cancel \")],1),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"primary\",\"type\":\"button\"},on:{\"click\":_vm.updateTermPrivacyPolicy}},[_c('feather-icon',{attrs:{\"icon\":\"SaveIcon\",\"size\":\"18\"}}),_vm._v(\" Save \")],1)]}}])},[_c('validation-observer',{ref:\"projectTermsPrivacyPolicyRules\"},[_c('form',{ref:\"projectTermsPrivacyPolicyForm\",attrs:{\"id\":\"projectTermsPrivacyPolicyForm\"},on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();}}},[_c('b-tabs',[_c('b-tab',{attrs:{\"title\":\"Terms & Conditions\"}},[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{staticClass:\"float-right\"},[(_vm.termConditionsUrl)?_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-success\",modifiers:{\"hover\":true,\"v-success\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"Copy Term Conditions URL\",\"variant\":\"flat-success\"},on:{\"click\":_vm.copyTermToClipboard}},[_c('feather-icon',{attrs:{\"icon\":\"CopyIcon\"}})],1):_vm._e(),(_vm.termConditionsUrl)?_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-warning\",modifiers:{\"hover\":true,\"v-warning\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"View Term Conditions URL\",\"target\":\"_blank\",\"href\":_vm.termConditionsUrl,\"variant\":\"flat-warning\"}},[_c('feather-icon',{attrs:{\"icon\":\"ExternalLinkIcon\"}})],1):_vm._e()],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"terms\"}},[_vm._v(\"Terms & Conditions\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"TermsConditions\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('quill-editor',{class:errors.length > 0 ? 'error' : 'valid',attrs:{\"id\":\"TermsConditions\",\"name\":\"TermsConditions\",\"placeholder\":\"Please Enter Terms Conditions\",\"options\":_vm.snowOption,\"state\":errors.length > 0 ? false : null},model:{value:(_vm.funnelDef.TermsConditions),callback:function ($$v) {_vm.$set(_vm.funnelDef, \"TermsConditions\", $$v)},expression:\"funnelDef.TermsConditions\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}])})],1)],1)],1)],1),_c('b-tab',{attrs:{\"title\":\"Privacy Policy\"}},[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',{staticClass:\"float-right\"},[(_vm.privacyUrl)?_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-success\",modifiers:{\"hover\":true,\"v-success\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"Copy Privacy Policy URL\",\"variant\":\"flat-success\"},on:{\"click\":_vm.copyPrivacyPolicyToClipboard}},[_c('feather-icon',{attrs:{\"icon\":\"CopyIcon\"}})],1):_vm._e(),(_vm.privacyUrl)?_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-warning\",modifiers:{\"hover\":true,\"v-warning\":true}}],staticClass:\"btn-icon mr-1\",attrs:{\"title\":\"View Privacy Policy URL\",\"target\":\"_blank\",\"href\":_vm.privacyUrl,\"variant\":\"flat-warning\"}},[_c('feather-icon',{attrs:{\"icon\":\"ExternalLinkIcon\"}})],1):_vm._e()],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"PrivacyPolicy\"}},[_vm._v(\"Privacy Policy\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"Privacy Policy\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('quill-editor',{class:errors.length > 0 ? 'error' : 'valid',attrs:{\"id\":\"PrivacyPolicy\",\"name\":\"PrivacyPolicy\",\"placeholder\":\"Please Enter Privacy Policy\",\"options\":_vm.snowOption,\"state\":errors.length > 0 ? false : null},model:{value:(_vm.funnelDef.PrivacyPolicy),callback:function ($$v) {_vm.$set(_vm.funnelDef, \"PrivacyPolicy\", $$v)},expression:\"funnelDef.PrivacyPolicy\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}])})],1)],1)],1)],1)],1)],1)]),_vm._t(\"default\")],2),_c('b-modal',{ref:\"modal\",attrs:{\"id\":\"projectSettingsModal\",\"title\":\"Update Project Settings\",\"ok-title\":\"Submit\",\"centered\":\"\",\"size\":\"lg\"},on:{\"ok\":_vm.handleEmailFormOk},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(ref){\nvar cancel = ref.cancel;\nvar ok = ref.ok;\nreturn [_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"secondary\",\"type\":\"button\"},on:{\"click\":_vm.closeProjectSettingsModal}},[_c('feather-icon',{attrs:{\"icon\":\"XCircleIcon\",\"size\":\"18\"}}),_vm._v(\" Cancel \")],1),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"primary\",\"type\":\"button\"},on:{\"click\":_vm.updateProjectSettings}},[_c('feather-icon',{attrs:{\"icon\":\"SaveIcon\",\"size\":\"18\"}}),_vm._v(\" Save \")],1)]}}])},[_c('validation-observer',{ref:\"projectSettingsRules\"},[_c('form',{ref:\"projectSettingsForm\",attrs:{\"id\":\"projectSettingsForm\"},on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();}}},[(_vm.funnelDef)?_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',[_vm._v(\"Name\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"funnelDefName\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"funnelDefName\",\"name\":\"funnelDefName\",\"placeholder\":\"Please Enter Project Name\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.funnelDef.Name),callback:function ($$v) {_vm.$set(_vm.funnelDef, \"Name\", $$v)},expression:\"funnelDef.Name\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,3846746431)})],1)],1),(_vm.UserFunnelFirstStep.TemplateTypeId != 22)?_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('div',{staticClass:\"demo-inline-spacing\"},[_c('label',[_vm._v(\"PDF\")]),_c('b-form-radio',{attrs:{\"id\":\"PDFFile\",\"value\":\"PDFFile\"},model:{value:(_vm.PDFType),callback:function ($$v) {_vm.PDFType=$$v},expression:\"PDFType\"}},[_vm._v(\" Upload File \")]),_c('br'),_c('b-form-radio',{attrs:{\"id\":\"ExternalURL\",\"value\":\"ExternalURL\"},model:{value:(_vm.PDFType),callback:function ($$v) {_vm.PDFType=$$v},expression:\"PDFType\"}},[_vm._v(\" External File URL \")])],1)])],1):_vm._e(),(_vm.UserFunnelFirstStep.TemplateTypeId != 22)?_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',[_vm._v(\"Upload PDF\")]),_c('b-form-file',{ref:\"file\",attrs:{\"disabled\":_vm.PDFType == 'ExternalURL',\"max-size\":10246332,\"accept\":\".pdf\",\"placeholder\":\"Choose a file or drop it here...\",\"drop-placeholder\":\"Drop file here...\"},on:{\"input\":function($event){return _vm.handleFileUpload()}},model:{value:(_vm.FunnelPDFFile),callback:function ($$v) {_vm.FunnelPDFFile=$$v},expression:\"FunnelPDFFile\"}})],1)],1):_vm._e(),(_vm.UserFunnelFirstStep.TemplateTypeId != 22)?_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',[_vm._v(\"External Path\")]),_c('b-form-input',{attrs:{\"id\":\"PDFFileURL\",\"disabled\":_vm.PDFType == 'PDFFile',\"name\":\"PDFFileURL\",\"placeholder\":\"Give PDF URL...\"},model:{value:(_vm.funnelDef.PDFFileURL),callback:function ($$v) {_vm.$set(_vm.funnelDef, \"PDFFileURL\", $$v)},expression:\"funnelDef.PDFFileURL\"}})],1)],1):_vm._e(),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"funnelDefPath\"}},[_vm._v(\"Path\"),_c('span',{staticClass:\"required\"},[_vm._v(\" *\")])]),_c('validation-provider',{attrs:{\"rules\":\"required\",\"name\":\"funnelDefPath\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('b-form-input',{attrs:{\"id\":\"funnelDefPath\",\"name\":\"funnelDefPath\",\"placeholder\":\"Please Enter Project Path\",\"state\":errors.length > 0 ? false : null},model:{value:(_vm.funnelDef.Path),callback:function ($$v) {_vm.$set(_vm.funnelDef, \"Path\", $$v)},expression:\"funnelDef.Path\"}}),_c('div',{staticClass:\"popup-validation\"},[_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])])]}}],null,false,966831615)})],1)],1),(_vm.UserFunnelFirstStep.TemplateTypeId != 22)?_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('label',{staticStyle:{\"margin-right\":\"1.2rem\"}},[_vm._v(\"Enable Double Opt-in?\")]),_c('b-form-checkbox',{attrs:{\"value\":\"true\"},model:{value:(_vm.funnelDef.IsTwoStepOptin),callback:function ($$v) {_vm.$set(_vm.funnelDef, \"IsTwoStepOptin\", $$v)},expression:\"funnelDef.IsTwoStepOptin\"}})],1)])],1):_vm._e(),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('label',{staticStyle:{\"margin-right\":\"1.0rem\"}},[_vm._v(\"Enable Email Sending?\")]),_c('b-form-checkbox',{attrs:{\"value\":\"true\"},model:{value:(_vm.funnelDef.IsEmailSending),callback:function ($$v) {_vm.$set(_vm.funnelDef, \"IsEmailSending\", $$v)},expression:\"funnelDef.IsEmailSending\"}}),_c('feather-icon',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}},{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-success\",modifiers:{\"hover\":true,\"v-success\":true}}],staticClass:\"ml-1 icon-color\",attrs:{\"title\":\"If 'Enable Email Sending' checkbox is checked, automation emails are activated.\",\"icon\":\"InfoIcon\",\"size\":\"18\"}})],1)])],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',[_vm._v(\"Favicon URL\")]),_c('b-form-input',{attrs:{\"id\":\"FaviconPath\",\"name\":\"FaviconPath\",\"placeholder\":\"Give Favicon Path...\"},model:{value:(_vm.funnelDef.FaviconPath),callback:function ($$v) {_vm.$set(_vm.funnelDef, \"FaviconPath\", $$v)},expression:\"funnelDef.FaviconPath\"}})],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',[_vm._v(\"Header Tracking Code\")]),_c('b-form-input',{attrs:{\"id\":\"HeadTrackingCode\",\"name\":\"HeadTrackingCode\",\"placeholder\":\"Give Head Tracking Code...\"},model:{value:(_vm.funnelDef.HeadTrackingCode),callback:function ($$v) {_vm.$set(_vm.funnelDef, \"HeadTrackingCode\", $$v)},expression:\"funnelDef.HeadTrackingCode\"}})],1)],1),_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('b-form-group',[_c('label',[_vm._v(\"Footer Tracking Code\")]),_c('b-form-input',{attrs:{\"id\":\"BodyTrackingCode\",\"name\":\"BodyTrackingCode\",\"placeholder\":\"Give Body Tracking Code...\"},model:{value:(_vm.funnelDef.BodyTrackingCode),callback:function ($$v) {_vm.$set(_vm.funnelDef, \"BodyTrackingCode\", $$v)},expression:\"funnelDef.BodyTrackingCode\"}})],1)],1)],1):_vm._e()],1)]),_vm._t(\"default\")],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n  if (!it) {\n    if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n\n      var F = function F() {};\n\n      return {\n        s: F,\n        n: function n() {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function e(_e) {\n          throw _e;\n        },\n        f: F\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var normalCompletion = true,\n      didErr = false,\n      err;\n  return {\n    s: function s() {\n      it = it.call(o);\n    },\n    n: function n() {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function e(_e2) {\n      didErr = true;\n      err = _e2;\n    },\n    f: function f() {\n      try {\n        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}","<template>\r\n        \r\n    <section>\r\n        <b-overlay :show=\"loading\"\r\n                   :variant=\"variant\"\r\n                   :opacity=\"opacity\"\r\n                   :blur=\"blur\"\r\n                   spinner-variant=\"primary\"\r\n                   spinner-type=\"grow\"\r\n                   spinner-large\r\n                   class=\"loaderPreview\"\r\n                   rounded=\"sm\">\r\n\r\n\r\n            <!--<loader v-if=\"loading\"\r\n         object=\"#161d31\" color1=\"#d0d2d6\" color2=\"#615ac7\" size=\"5\" speed=\"2\" bg=\"#283046\" objectbg=\"#999793\" opacity=\"80\" disableScrolling=\"false\" name=\"box\"></loader>-->\r\n\r\n\r\n            <b-row v-if=\"(meta.breadcrumb || meta.pageTitle) && funnelName\"\r\n                   class=\"content-header\">\r\n\r\n                <b-col class=\"content-header-left mb-2\"\r\n                       cols=\"12\"\r\n                       md=\"8\">\r\n                    <b-row class=\"breadcrumbs-top\">\r\n                        <b-col cols=\"12\">\r\n                            <h2 class=\"content-header-title float-left pr-1 mb-0\">\r\n                                Project Detail\r\n                            </h2>\r\n                            <div class=\"breadcrumb-wrapper\">\r\n                                <b-breadcrumb>\r\n                                    <b-breadcrumb-item to=\"/\">\r\n                                        <feather-icon icon=\"HomeIcon\"\r\n                                                      size=\"16\"\r\n                                                      class=\"align-text-top\" />\r\n                                    </b-breadcrumb-item>\r\n                                    <b-breadcrumb-item v-for=\"item in meta.breadcrumb\"\r\n                                                       :key=\"item.text\"\r\n                                                       :active=\"item.active\"\r\n                                                       :to=\"item.to\">\r\n                                        {{ item.text }}\r\n                                    </b-breadcrumb-item>\r\n\r\n                                    <b-breadcrumb-item :active=\"breadcrumbActive\">\r\n                                        {{funnelName}}\r\n                                    </b-breadcrumb-item>\r\n                                    <b-breadcrumb-item v-if=\"(UserFunnelFirstStep && (UserFunnelFirstStep.UserFunnelStepVariationId==null || UserFunnelFirstStep.UserFunnelStepVariationId < 0)) || (UserFunnelSecondStep && (UserFunnelSecondStep.UserFunnelStepVariationId==null || UserFunnelSecondStep.UserFunnelStepVariationId < 0))\">\r\n                                        <b-link v-if=\"showFirstStep\"\r\n                                                @click=\"LoadTemplates\"\r\n                                                data-stepindex=\"0\"\r\n                                                :data-Id=\"UserFunnelFirstStep.Id\"\r\n                                                :data-isLoaded=\"UserFunnelFirstStep.UserFunnelStepVariationId <= 0 ? '0' : '1'\"\r\n                                                :data-order=\"UserFunnelFirstStep.Order\"\r\n                                                :data-temptypeId=\"UserFunnelFirstStep.TemplateTypeId\"\r\n                                                :data-userStepId=\"UserFunnelFirstStep.Id\"\r\n                                                :data-templateId=\"UserFunnelFirstStep.TemplateId\">\r\n                                            {{UserFunnelFirstStep.Name}}\r\n                                        </b-link>\r\n\r\n                                        <b-link v-if=\"showSecondStep\"\r\n                                                @click=\"LoadTemplates\"\r\n                                                data-stepindex=\"1\"\r\n                                                :data-Id=\"UserFunnelSecondStep.Id\"\r\n                                                :data-isLoaded=\"UserFunnelSecondStep.UserFunnelStepVariationId <= 0 ? '0' : '1'\"\r\n                                                :data-order=\"UserFunnelSecondStep.Order\"\r\n                                                :data-temptypeId=\"UserFunnelSecondStep.TemplateTypeId\"\r\n                                                :data-userStepId=\"UserFunnelSecondStep.Id\"\r\n                                                :data-templateId=\"UserFunnelSecondStep.TemplateId\">\r\n                                            {{UserFunnelSecondStep.Name}}\r\n                                        </b-link>\r\n                                    </b-breadcrumb-item>\r\n\r\n                                </b-breadcrumb>\r\n                            </div>\r\n                        </b-col>\r\n                    </b-row>\r\n                </b-col>\r\n\r\n                <!-- Content Right -->\r\n                <b-col class=\"content-header-right text-md-right d-md-block d-none mb-1\"\r\n                       md=\"4\"\r\n                       cols=\"12\">\r\n\r\n\r\n                    <b-button title=\"Copy PDF URL\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              v-b-tooltip.hover.v-secondary\r\n                              variant=\"flat-secondary\"\r\n                              v-if=\"funnelDef && UserFunnelFirstStep.TemplateTypeId != 22 && funnelDef.PDFFileURL\"\r\n                              v-clipboard:copy=\"funnelDef.PDFFileURL\"\r\n                              v-clipboard:success=\"onPDFCopy\"\r\n                              v-clipboard:error=\"onPDFError\"\r\n                              class=\"btn-icon mr-1\">\r\n                        <feather-icon icon=\"FileIcon\" />\r\n                    </b-button>\r\n\r\n                    <b-button title=\"Copy PDF URL\"\r\n                              v-if=\"funnelDef && UserFunnelFirstStep.TemplateTypeId != 22 && !funnelDef.PDFFileURL\"\r\n                              @click=\"attachPDFMsg\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              v-b-tooltip.hover.v-secondary\r\n                              variant=\"flat-secondary\"\r\n                              class=\"btn-icon mr-1\">\r\n                        <feather-icon icon=\"FileIcon\" />\r\n                    </b-button>\r\n\r\n\r\n\r\n                    <b-button :to=\"'/projectcontacts/' + userFunnelId\"\r\n                              title=\"Project Contacts\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              v-b-tooltip.hover.v-primary\r\n                              variant=\"flat-primary\"\r\n                              class=\"btn-icon mr-1\">\r\n                        <feather-icon icon=\"UsersIcon\" />\r\n                    </b-button>\r\n\r\n\r\n                    <b-button title=\"Copy Project URL\"\r\n                              v-if=\"isProjectCompleted && funnelPath\"\r\n                              v-clipboard:copy=\"funnelPath\"\r\n                              v-clipboard:success=\"onPathCopy\"\r\n                              v-clipboard:error=\"onPathError\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              v-b-tooltip.hover.v-success\r\n                              variant=\"flat-success\"\r\n                              class=\"btn-icon mr-1\">\r\n                        <feather-icon icon=\"CopyIcon\" />\r\n                    </b-button>\r\n\r\n                    <b-button title=\"Copy Project URL\"\r\n                              v-if=\"!isProjectCompleted\"\r\n                              @click=\"completeProjectMessage\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              v-b-tooltip.hover.v-success\r\n                              variant=\"flat-success\"\r\n                              class=\"btn-icon mr-1\">\r\n                        <feather-icon icon=\"CopyIcon\" />\r\n                    </b-button>\r\n\r\n\r\n                    <b-button title=\"View Project URL\"\r\n                              v-if=\"isProjectCompleted && funnelPath\"\r\n                              :href=\"funnelPath\"\r\n                              target=\"_blank\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              v-b-tooltip.hover.v-warning\r\n                              variant=\"flat-warning\"\r\n                              class=\"btn-icon mr-1\">\r\n                        <feather-icon icon=\"ExternalLinkIcon\" />\r\n                    </b-button>\r\n\r\n                    <b-button title=\"View Project URL\"\r\n                              v-if=\"!isProjectCompleted\"\r\n                              @click=\"completeProjectMessage\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              v-b-tooltip.hover.v-warning\r\n                              variant=\"flat-warning\"\r\n                              class=\"btn-icon mr-1\">\r\n                        <feather-icon icon=\"ExternalLinkIcon\" />\r\n                    </b-button>\r\n\r\n                    <b-button v-if=\"UserFunnelFirstStep.TemplateTypeId == 22\" title=\"Terms & Privacy Policy\"\r\n                              v-b-modal.projectTermsPrivacyPolicy\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              v-b-tooltip.hover.v-info\r\n                              variant=\"flat-info\"\r\n                              class=\"btn-icon mr-1\">\r\n                        <feather-icon icon=\"FileIcon\" />\r\n                    </b-button>\r\n\r\n                    <b-button title=\"Settings\"\r\n                              v-b-modal.projectSettingsModal\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              v-b-tooltip.hover.v-info\r\n                              variant=\"flat-primary\"\r\n                              class=\"btn-icon mr-1\">\r\n                        <feather-icon icon=\"SettingsIcon\" />\r\n                    </b-button>\r\n\r\n                </b-col>\r\n            </b-row>\r\n\r\n            <div class=\"post\">\r\n                <div v-if=\"error\" class=\"error\">\r\n                    {{ error }}\r\n                </div>\r\n            </div>\r\n\r\n            <div v-if=\"UserFunnelFirstStep && (UserFunnelFirstStep.UserFunnelStepVariationId==null || UserFunnelFirstStep.UserFunnelStepVariationId < 0)\">\r\n                <b-link @click=\"LoadTemplates\"\r\n                        ref=\"refFirstStep\"\r\n                        id=\"refFirstStep\"\r\n                        data-stepindex=\"0\"\r\n                        class=\"hidden\"\r\n                        :data-Id=\"UserFunnelFirstStep.Id\"\r\n                        :data-isLoaded=\"UserFunnelFirstStep.UserFunnelStepVariationId <= 0 ? '0' : '1'\"\r\n                        :data-order=\"UserFunnelFirstStep.Order\"\r\n                        :data-temptypeId=\"UserFunnelFirstStep.TemplateTypeId\"\r\n                        :data-userStepId=\"UserFunnelFirstStep.Id\"\r\n                        :data-templateId=\"UserFunnelFirstStep.TemplateId\">\r\n                    {{UserFunnelFirstStep.Name}}\r\n                </b-link>\r\n                <b-row class=\"match-height\" v-if=\"showFirstStep\">\r\n                    <b-col lg=\"12\">\r\n\r\n                        <b-row>\r\n                            <b-col lg=\"4\"\r\n                                   class=\"custom-col-6\"\r\n                                   v-if=\"UserFunnelFirstStep.UserFunnelStepVariationId <= 0\"\r\n                                   v-for=\"temp in Templates\"\r\n                                   v-bind:data=\"temp\"\r\n                                   v-bind:key=\"temp.Name\">\r\n\r\n                                <b-card no-body\r\n                                        class=\"shadow-none\">\r\n                                    <b-card-body class=\"text-center\">\r\n                                        <expandable-image class=\"image\"\r\n                                                          :src=\"WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.FolderOne +'/_template_files/thumb.Jpg'\" />\r\n                                    </b-card-body>\r\n\r\n                                    <b-row class=\"text-center mx-0\">\r\n                                        <b-col cols=\"12\"\r\n                                               class=\"border-top d-flex align-items-between flex-column py-1\">\r\n                                            <h3 class=\"font-weight-bolder mb-0\">\r\n                                                <b-link :data-UserStepId=\"temp.UserStepId\"\r\n                                                        :data-CurrentTabId=\"UserFunnelFirstStep.Id\"\r\n                                                        data-index=\"0\"\r\n                                                        :data-parentFolder=\"temp.ParentFolder\"\r\n                                                        :data-mainFolder=\"temp.MainFolder\"\r\n                                                        :data-childFolder=\"temp.FolderOne\"\r\n                                                        :data-TemplateFunnelId=\"temp.TemplateFunnelId\"\r\n                                                        :data-templateTypeId=\"temp.TemplateTypeId\"\r\n                                                        :data-funnelId=\"userFunnelId\"\r\n                                                        :data-templateFileName=\"temp.TemplateFileName\"\r\n                                                        :data-IsUserTemplate=\"temp.IsUserTemplate\"\r\n                                                        :data-value=\"temp.Id\"\r\n                                                        class=\"btn mr-1 btn-outline-primary templates\"\r\n                                                        @click=\"UseThisTemplate\">\r\n                                                    <i class=\"fa fa-mouse-pointer\"></i>\r\n                                                    <span class=\"name\">Use This</span>\r\n                                                </b-link>\r\n\r\n                                                <b-link target=\"_blank\"\r\n                                                        :href=\"WebAPIURL +'/Home/' +temp.TemplateUrl +'/' +temp.FolderOne\"\r\n                                                        class=\"btn mr-1 btn-outline-success\">\r\n                                                    <i class=\"fa fa-eye\"></i>\r\n                                                    <span class=\"name\">Preview</span>\r\n                                                </b-link>\r\n                                            </h3>\r\n                                        </b-col>\r\n                                    </b-row>\r\n                                </b-card>\r\n                            </b-col>\r\n                        </b-row>\r\n\r\n                    </b-col>\r\n                </b-row>\r\n            </div>\r\n\r\n            <div v-if=\"UserFunnelSecondStep && (UserFunnelSecondStep.UserFunnelStepVariationId==null || UserFunnelSecondStep.UserFunnelStepVariationId < 0)\">\r\n                <b-link ref=\"refSecondStep\"\r\n                        id=\"refSecondStep\"\r\n                        @click=\"LoadTemplates\"\r\n                        data-stepindex=\"1\"\r\n                        class=\"hidden\"\r\n                        :data-Id=\"UserFunnelSecondStep.Id\"\r\n                        :data-isLoaded=\"UserFunnelSecondStep.UserFunnelStepVariationId <= 0 ? '0' : '1'\"\r\n                        :data-order=\"UserFunnelSecondStep.Order\"\r\n                        :data-temptypeId=\"UserFunnelSecondStep.TemplateTypeId\"\r\n                        :data-userStepId=\"UserFunnelSecondStep.Id\"\r\n                        :data-templateId=\"UserFunnelSecondStep.TemplateId\">\r\n                    {{UserFunnelSecondStep.Name}}\r\n                </b-link>\r\n                <b-row class=\"match-height\" v-if=\"showSecondStep\">\r\n                    <b-col lg=\"12\">\r\n                        <b-row>\r\n                            <b-col lg=\"4\"\r\n                                   class=\"custom-col-6\"\r\n                                   v-if=\"UserFunnelSecondStep.UserFunnelStepVariationId <= 0\"\r\n                                   v-for=\"temp in Templates\"\r\n                                   v-bind:data=\"temp\"\r\n                                   v-bind:key=\"temp.Name\">\r\n                                <b-card no-body\r\n                                        class=\"shadow-none\">\r\n                                    <b-card-body class=\"text-center\" style=\"width: 100%\">\r\n                                        <expandable-image class=\"image\"\r\n                                                          :src=\"WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.FolderOne +'/_template_files/thumb.Jpg'\" />\r\n                                    </b-card-body>\r\n\r\n                                    <b-row class=\"text-center mx-0\">\r\n                                        <b-col cols=\"12\"\r\n                                               class=\"border-top d-flex align-items-between flex-column py-1\">\r\n                                            <h3 class=\"font-weight-bolder mb-0\">\r\n                                                <b-link :data-UserStepId=\"temp.UserStepId\"\r\n                                                        :data-CurrentTabId=\"UserFunnelSecondStep.Id\"\r\n                                                        data-index=\"1\"\r\n                                                        :data-parentFolder=\"temp.ParentFolder\"\r\n                                                        :data-mainFolder=\"temp.MainFolder\"\r\n                                                        :data-childFolder=\"temp.FolderOne\"\r\n                                                        :data-TemplateFunnelId=\"temp.TemplateFunnelId\"\r\n                                                        :data-templateTypeId=\"temp.TemplateTypeId\"\r\n                                                        :data-funnelId=\"userFunnelId\"\r\n                                                        :data-templateFileName=\"temp.TemplateFileName\"\r\n                                                        :data-IsUserTemplate=\"temp.IsUserTemplate\"\r\n                                                        :data-value=\"temp.Id\"\r\n                                                        class=\"btn mr-1 btn-outline-primary templates\"\r\n                                                        @click=\"UseThisTemplate\">\r\n                                                    <i class=\"fa fa-mouse-pointer\"></i>\r\n                                                    <span class=\"name\">Use This</span>\r\n                                                </b-link>\r\n\r\n                                                <b-link target=\"_blank\"\r\n                                                        :href=\"WebAPIURL +'/Home/' +temp.TemplateUrl +'/' +temp.FolderOne\"\r\n                                                        class=\"btn mr-1 btn-outline-success\">\r\n                                                    <i class=\"fa fa-eye\"></i>\r\n                                                    <span class=\"name\">Preview</span>\r\n                                                </b-link>\r\n                                            </h3>\r\n                                        </b-col>\r\n                                    </b-row>\r\n                                </b-card>\r\n                            </b-col>\r\n                        </b-row>\r\n\r\n                    </b-col>\r\n                </b-row>\r\n            </div>\r\n\r\n            <b-row v-if=\"UserFunnelFirstStep && UserFunnelFirstStep.UserFunnelStepVariationId > 0 && UserFunnelSecondStep && UserFunnelSecondStep.UserFunnelStepVariationId > 0\">\r\n\r\n                <b-col lg=\"6\" v-for=\"(item, index) in UserFunnelSteps\"\r\n                       v-bind:data=\"item\"\r\n                       v-bind:key=\"index\">\r\n                    <b-card no-body>\r\n                        <b-card-header>\r\n                            <b-card-title>\r\n                                <b-row>\r\n                                    <b-col lg=\"6\">\r\n                                        {{item.Name}}\r\n                                    </b-col>\r\n                                    <b-col lg=\"6\" class=\"text-right\">\r\n\r\n                                        <b-button title=\"View Step URL/Link\"\r\n                                                  :data-stepname=\"item.Name\"\r\n                                                  :data-stepurl=\"index == 0 ? firstStepURL : secondStepURL\"\r\n                                                  :data-customdomainid=\"item.CustomDomainId\"\r\n                                                  :data-customdomainvariationid=\"item.CustomDomainVariationId\"\r\n                                                  :data-stepid=\"item.Id\"\r\n                                                  data-variationid=\"0\"\r\n                                                  :data-currIndex=\"index\"\r\n                                                  @click=\"OpenSettingsModal\"\r\n                                                  v-b-modal.stepSettingsModal\r\n                                                  v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                                  v-b-tooltip.hover.v-warning\r\n                                                  variant=\"flat-warning\"\r\n                                                  class=\"btn-icon mr-1\">\r\n                                            <feather-icon icon=\"LinkIcon\" />\r\n                                        </b-button>\r\n                                    </b-col>\r\n                                </b-row>\r\n                            </b-card-title>\r\n                        </b-card-header>\r\n                        <b-card-body>\r\n                            <b-row>\r\n                                <b-col lg=\"12\">\r\n                                    <expandable-image :src=\"SubDomainURL +'/' +userFilesDir +'/'+CustomUserId+'/' +item.UserFunnelId +'/' +item.Id +'/_template_files_' +item.TemplateFileName.replace('.html','').replace('.json', '') +'/thumb.Jpg?a='+randomStr+''\" />\r\n                                </b-col>\r\n                            </b-row>\r\n\r\n\r\n                        </b-card-body>\r\n                        <b-card-footer class=\"card-profile\">\r\n\r\n                            <div class=\"d-flex justify-content-between align-items-center\">\r\n                                <div>\r\n                                    <h6 class=\"text-muted font-weight-bolder\">\r\n                                        Total Visitors\r\n                                    </h6>\r\n                                    <h3 class=\"mb-0\">\r\n                                        {{ item.StepTotalVisitors }}\r\n                                    </h3>\r\n                                </div>\r\n                                <div>\r\n                                    <b-button variant=\"text-plain\"\r\n                                              class=\"text-secondary p-0 mr\"\r\n                                              :to=\"'/projectcontacts/' + item.UserFunnelId\">\r\n                                        Contacts\r\n                                    </b-button>\r\n                                    <h3 class=\"mb-0\">\r\n                                        {{ item.ContactsCount }}\r\n                                    </h3>\r\n                                </div>\r\n                                <div class=\"text-right\">\r\n\r\n                                    <b-button title=\"Edit Template\"\r\n                                              v-b-tooltip.hover.v-primary\r\n                                              :to=\"'/editproject/' +item.UserFunnelStepVariationId\"\r\n                                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                              variant=\"flat-primary\"\r\n                                              class=\"btn-icon\">\r\n                                        <feather-icon icon=\"EditIcon\" />\r\n                                    </b-button>\r\n\r\n                                    <b-button title=\"View\"\r\n                                              v-b-tooltip.hover.v-warning\r\n                                              :href=\"index == 0 ? firstStepPageURL : secondStepPageURL\"\r\n                                              target=\"_blank\"\r\n                                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                              variant=\"flat-warning\"\r\n                                              class=\"btn-icon\">\r\n                                        <feather-icon icon=\"EyeIcon\" />\r\n                                    </b-button>\r\n\r\n                                    <b-button title=\"Download HTML\"\r\n                                              @click=\"downloadHTML\"\r\n                                              :data-stepid=\"item.Id\"\r\n                                              :data-subDomain=\"item.FunnelStepPageURL.replace(item.FunnelStepURL,'')\"\r\n                                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                              v-b-tooltip.hover.v-info\r\n                                              variant=\"flat-info\"\r\n                                              class=\"btn-icon\">\r\n                                        <feather-icon icon=\"ArrowDownCircleIcon\" />\r\n                                    </b-button>\r\n\r\n                                    <b-button title=\"Reset Template\"\r\n                                              @click=\"resetProjectTemplate\"\r\n                                              :data-UserFunnelId=\"item.UserFunnelId\"\r\n                                              :data-UserFunnelStepId=\"item.Id\"\r\n                                              :data-UserFunnelStepVariationId=\"item.UserFunnelStepVariationId\"\r\n                                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                              v-b-tooltip.hover.v-danger\r\n                                              variant=\"flat-danger\"\r\n                                              class=\"btn-icon\">\r\n                                        <feather-icon icon=\"RefreshCwIcon\" />\r\n                                    </b-button>\r\n\r\n\r\n                                </div>\r\n                            </div>\r\n\r\n                        </b-card-footer>\r\n                    </b-card>\r\n\r\n                </b-col>\r\n\r\n\r\n\r\n            </b-row>\r\n\r\n            <b-tabs v-if=\"UserFunnelFirstStep\">\r\n\r\n                <b-tab v-if=\"UserFunnelFirstStep.TemplateTypeId == 22\" title=\"Product\">\r\n\r\n                    <b-card class=\"cardMobile\">\r\n\r\n                        <b-row v-if=\"!StepProducts\"\r\n                               class=\"mb-1\">\r\n                            <b-col lg=\"12\" class=\"text-right\">\r\n                                <b-button @click=\"addEditProduct\"\r\n                                          data-id=\"0\"\r\n                                          v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                          type=\"button\"\r\n                                          variant=\"outline-success\">\r\n                                    <feather-icon icon=\"PlusIcon\" size=\"18\" />\r\n                                    Add New Product\r\n                                </b-button>\r\n                            </b-col>\r\n                        </b-row>\r\n\r\n                        <b-row class=\"match-height\">\r\n                            <b-col lg=\"12\">\r\n                                <b-table striped\r\n                                         hover\r\n                                         caption-top\r\n                                         fixed\r\n                                         bordered\r\n                                         :items=\"StepProducts\"\r\n                                         :fields=\"prodTablefields\"\r\n                                         :search-options=\"{enabled: true,externalQuery: prodSearchTerm,}\"\r\n                                         :pagination-options=\"{enabled: true,perPage: prodPageLength,}\"\r\n                                         show-empty>\r\n                                    <template #empty=\"scope\">\r\n                                        Record doesn't exist\r\n                                    </template>\r\n                                    <template v-slot:cell(Id)=\"data\">\r\n                                        <b-button :data-id=\"data.item.Id\"\r\n                                                  title=\"Edit\"\r\n                                                  @click=\"addEditProduct\"\r\n                                                  v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                                  v-b-tooltip.hover.v-primary\r\n                                                  variant=\"flat-primary\"\r\n                                                  class=\"btn-icon\">\r\n                                            <feather-icon icon=\"EditIcon\" />\r\n                                        </b-button>\r\n\r\n                                        <b-button :data-id=\"data.item.Id\"\r\n                                                  @click=\"removeProduct\"\r\n                                                  title=\"Delete\"\r\n                                                  v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                                  v-b-tooltip.hover.v-danger\r\n                                                  variant=\"flat-danger\"\r\n                                                  class=\"btn-icon\">\r\n                                            <feather-icon icon=\"ArchiveIcon\" />\r\n                                        </b-button>\r\n                                    </template>\r\n                                </b-table>\r\n\r\n                            </b-col>\r\n                        </b-row>\r\n\r\n                    </b-card>\r\n                </b-tab>\r\n\r\n                <b-tab title=\"Email Automation\">\r\n\r\n                    <b-card>\r\n                        <b-row class=\"mb-1\">\r\n\r\n                            <b-col lg=\"12\" class=\"text-right\">\r\n                                <b-button data-id=\"0\"\r\n                                          @click=\"addEditEmail\"\r\n                                          v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                          type=\"button\"\r\n                                          variant=\"outline-success\">\r\n                                    <feather-icon icon=\"PlusIcon\" size=\"18\" />\r\n                                    Add New Email\r\n                                </b-button>\r\n                            </b-col>\r\n                        </b-row>\r\n                        <b-row>\r\n                            <b-col lg=\"12\">\r\n\r\n                                <!--<b-card-body>\r\n                        <div class=\"d-flex justify-content-between flex-wrap\">-->\r\n                                <!-- filter -->\r\n                                <!--<b-form-group label=\"Search\"\r\n                                              label-cols-sm=\"2\"\r\n                                              label-align-sm=\"left\"\r\n                                              label-size=\"sm\"\r\n                                              label-for=\"filterInput\"\r\n                                              class=\"mb-0\">\r\n                                    <b-input-group size=\"sm\">\r\n                                        <b-form-input id=\"filterInput\"\r\n                                                      v-model=\"filter\"\r\n                                                      type=\"text\"\r\n                                                      placeholder=\"Type to Search\" />\r\n                                        <b-input-group-append>\r\n                                            <b-button :disabled=\"!filter\"\r\n                                                      @click=\"filter = ''\">\r\n                                                Clear\r\n                                            </b-button>\r\n                                        </b-input-group-append>\r\n                                    </b-input-group>\r\n                                </b-form-group>\r\n                            </div>\r\n                        </b-card-body>-->\r\n                                <b-table striped\r\n                                         hover\r\n                                         responsive\r\n                                         bordered\r\n                                         fixed\r\n                                         class=\"position-relative\"\r\n                                         :items=\"StepFunnelEmails\"\r\n                                         :fields=\"emailTablefields\"\r\n                                         show-empty>\r\n                                    <template #empty=\"scope\">\r\n                                        Record doesn't exist\r\n                                    </template>\r\n                                    \r\n                                    <template v-slot:cell(EmailOpenCount)=\"data\">\r\n                                        {{data.item.EmailDeliveryCount > 0? ((data.item.EmailOpenCount /data.item.EmailDeliveryCount) *100).toFixed(2): 0}}\r\n                                    </template>\r\n                                    <template v-slot:cell(EmailClickCount)=\"data\">\r\n                                        {{data.item.EmailDeliveryCount > 0? (data.item.EmailClickCount /data.item.EmailDeliveryCount).toFixed(2) *100: 0}}\r\n                                    </template>\r\n                                    <template v-slot:cell(Status)=\"data\">\r\n                                        {{data.item.IsScheduled ? \"Schedule\" : \"Draft\"}}\r\n                                    </template>\r\n                                    <template v-slot:cell(Id)=\"data\">\r\n\r\n                                        <b-button :data-id=\"data.item.Id\"\r\n                                                  title=\"Clone\"\r\n                                                  v-b-tooltip.hover.v-info\r\n                                                  @click=\"cloneFunnelEmail\"\r\n                                                  v-ripple.400=\"'rgba(40, 199, 111, 0.15)'\"\r\n                                                  variant=\"flat-info\"\r\n                                                  class=\"btn-icon\">\r\n                                            <feather-icon icon=\"CopyIcon\" />\r\n                                        </b-button>\r\n\r\n                                        <b-button :data-id=\"data.item.Id\" \r\n                                                  @click=\"addEditEmail\"\r\n                                                  title=\"Edit\"\r\n                                                  v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                                  v-b-tooltip.hover.v-primary\r\n                                                  variant=\"flat-primary\"\r\n                                                  class=\"btn-icon\">\r\n                                            <feather-icon icon=\"EditIcon\" />\r\n                                            <!-- <feather-icon :icon=\"!data.item.IsScheduled ? 'EditIcon' : 'EyeIcon'\" />-->\r\n                                            <!--:title=\"!data.item.IsScheduled ? 'Edit' : 'View'\"-->\r\n                                        </b-button>\r\n\r\n                                        <b-button :data-IsScheduled=\"data.item.IsScheduled\" :data-id=\"data.item.Id\"\r\n                                                  @click=\"deleteStepEmails\"\r\n                                                  title=\"Delete\"\r\n                                                  v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                                  v-b-tooltip.hover.v-danger\r\n                                                  variant=\"flat-danger\"\r\n                                                  class=\"btn-icon\">\r\n                                            <feather-icon icon=\"ArchiveIcon\" />\r\n                                        </b-button>\r\n                                    </template>\r\n                                </b-table>\r\n\r\n                                <b-card-body class=\"d-flex justify-content-between flex-wrap pt-0\">\r\n                                    <!-- page length -->\r\n                                    <!--<b-form-group label=\"Per Page\"\r\n                                          label-cols=\"6\"\r\n                                          label-align=\"left\"\r\n                                          label-size=\"sm\"\r\n                                          label-for=\"sortBySelect\"\r\n                                          class=\"text-nowrap mb-md-0 mr-1\">\r\n                                <b-form-select id=\"perPageSelect\"\r\n                                               v-model=\"perPage\"\r\n                                               size=\"sm\"\r\n                                               inline\r\n                                               :options=\"pageOptions\" />\r\n                            </b-form-group>-->\r\n                                    <!-- pagination -->\r\n                                    <!--<div>\r\n                            <b-card-body class=\"d-flex justify-content-between flex-wrap pt-0\">-->\r\n                                    <!-- page length -->\r\n                                    <!--<b-form-group label=\"Per Page\"\r\n                                          label-cols=\"6\"\r\n                                          label-align=\"left\"\r\n                                          label-size=\"sm\"\r\n                                          label-for=\"sortBySelect\"\r\n                                          class=\"text-nowrap mb-md-0 mr-1\">\r\n                                <b-form-select id=\"perPageSelect\"\r\n                                               v-model=\"perPage\"\r\n                                               size=\"sm\"\r\n                                               inline\r\n                                               :options=\"pageOptions\" />\r\n                            </b-form-group>-->\r\n                                    <!-- pagination -->\r\n                                    <!--<div>\r\n                                        <b-pagination v-model=\"currentPage\"\r\n                                                      :total-rows=\"totalRows\"\r\n                                                      :per-page=\"perPage\"\r\n                                                      first-number\r\n                                                      last-number\r\n                                                      prev-class=\"prev-item\"\r\n                                                      next-class=\"next-item\"\r\n                                                      class=\"mb-0\">\r\n                                            <template #prev-text>\r\n                                                <feather-icon icon=\"ChevronLeftIcon\"\r\n                                                              size=\"18\" />\r\n                                            </template>\r\n                                            <template #next-text>\r\n                                                <feather-icon icon=\"ChevronRightIcon\"\r\n                                                              size=\"18\" />\r\n                                            </template>\r\n                                        </b-pagination>\r\n                                    </div>\r\n                                </b-card-body>\r\n                            </div>-->\r\n                                </b-card-body>\r\n\r\n                            </b-col>\r\n                        </b-row>\r\n                    </b-card>\r\n                </b-tab>\r\n\r\n                <b-tab title=\"Auto Responders\" :active=\"activeTab === 'AutoResponder'\">\r\n                    <!--<b-card>\r\n                <h1>Auto Responders</h1>\r\n            </b-card>-->\r\n                    <b-card v-if=\"autoResponders\">\r\n                        <b-row>\r\n                            <b-col lg=\"12\">\r\n                                <b-form-group label=\"Auto Responder(Optional) Please note that without auto responders leads will be saved in your Landingly database\"\r\n                                              label-for=\"AutoResponderID\">\r\n                                    <select class=\"form-control\"\r\n                                            name=\"AutoResponderID\"\r\n                                            id=\"AutoResponderID\"\r\n                                            v-model=\"UserFunnelSteps[0].AutoResponderID\"\r\n                                            @change=\"onAutoRespChange($event)\">\r\n                                        <option value=\"0\">Select One</option>\r\n                                        <option v-for=\"auto in autoResponders\"\r\n                                                :value=\"auto.Id\">\r\n                                            {{ auto.Name }}\r\n                                        </option>\r\n                                    </select>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\" v-if=\"showGetResponse\">\r\n                                <div v-if=\"lstResponseAccount.length > 0\">\r\n                                    <b-col lg=\"12\">\r\n                                        <b-form-group label=\"Select a List\"\r\n                                                      label-for=\"ResponseCompainID\">\r\n                                            <b-input-group>\r\n                                                <select class=\"form-control\"\r\n                                                        name=\"ResponseCompainID\"\r\n                                                        id=\"ResponseCompainID\"\r\n                                                        v-model=\"UserFunnelSteps[0].ResponseCompainID\">\r\n                                                    <option value=\"0\">Select One</option>\r\n                                                    <optgroup v-for=\"res in lstResponseAccount\"\r\n                                                              label=\"res.APIKey\">\r\n                                                        <option v-if=\"res.ResponseCampaignList.length > 0\"\r\n                                                                v-for=\"list in res.ResponseCampaignList\"\r\n                                                                :value=\"list.Id\">\r\n                                                            {{ list.Name }}\r\n                                                        </option>\r\n                                                    </optgroup>\r\n                                                </select>\r\n                                            </b-input-group>\r\n                                        </b-form-group>\r\n                                    </b-col>\r\n                                    <b-col lg=\"12\" class=\"text-right\">\r\n                                        <b-link data-action=\"AddOther\"\r\n                                                @click=\"loadGetResponseAccount\">\r\n                                            Login With Other Account\r\n                                        </b-link>\r\n                                    </b-col>\r\n                                </div>\r\n                                <div v-if=\"lstResponseAccount.length < 1\"\r\n                                     class=\"text-right\">\r\n                                    <b-link class=\"btn mb-1 btn-success\"\r\n                                            data-action=\"AddOther\"\r\n                                            @click=\"loadGetResponseAccount\">\r\n                                        Login to GetResponse\r\n                                    </b-link>\r\n                                </div>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\" v-if=\"showSendLane\">\r\n                                <div v-if=\"lstSendLaneAccount.length > 0\">\r\n                                    <b-col lg=\"12\">\r\n                                        <b-form-group label=\"Select a List\"\r\n                                                      label-for=\"ResponseCompainID\">\r\n                                            <b-input-group>\r\n                                                <select class=\"form-control\"\r\n                                                        name=\"SendLaneListId\"\r\n                                                        id=\"SendLaneListId\"\r\n                                                        v-model=\"UserFunnelSteps[0].SendLaneListId\">\r\n                                                    <option value=\"0\">Select One</option>\r\n                                                    <optgroup v-for=\"account in lstSendLaneAccount\"\r\n                                                              :label=\"'Subdomain: ' + account.SubDomain\">\r\n                                                        <option v-if=\"account.SendLaneLists.length >0\"\r\n                                                                v-for=\"list in account.SendLaneLists\"\r\n                                                                :value=\"list.Id\">\r\n                                                            {{ list.Name }}\r\n                                                        </option>\r\n                                                    </optgroup>\r\n                                                </select>\r\n                                            </b-input-group>\r\n                                        </b-form-group>\r\n                                    </b-col>\r\n                                </div>\r\n                                <validation-observer ref=\"sendLaneRules\">\r\n                                    <form ref=\"SendLaneForm\"\r\n                                          id=\"SendLaneForm\"\r\n                                          @submit.stop.prevent>\r\n                                        <b-row>\r\n                                            <b-col lg=\"6\">\r\n                                                <b-form-group>\r\n                                                    <label>SendLane SubDomain</label>\r\n                                                    <validation-provider #default=\"{ errors }\"\r\n                                                                         rules=\"required\"\r\n                                                                         name=\"SendLane SubDomain\">\r\n                                                        <b-input-group>\r\n                                                            <b-form-input id=\"SendLaneSubDomain\"\r\n                                                                          name=\"SendLaneSubDomain\"\r\n                                                                          v-model=\"SendLaneSubDomain\"\r\n                                                                          placeholder=\"Give SendLane SubDomain...\"\r\n                                                                          :state=\"errors.length > 0 ? false : null\" />\r\n                                                            <b-input-group-append is-text>\r\n                                                                .sendlane.com\r\n                                                            </b-input-group-append>\r\n                                                        </b-input-group>\r\n                                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                    </validation-provider>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n\r\n                                            <b-col lg=\"6\">\r\n                                                <b-form-group>\r\n                                                    <label>SendLane APIKey</label>\r\n                                                    <validation-provider #default=\"{ errors }\"\r\n                                                                         rules=\"required\"\r\n                                                                         name=\"SendLane APIKey\">\r\n                                                        <b-form-input id=\"SendLaneAPIKey\"\r\n                                                                      name=\"SendLaneAPIKey\"\r\n                                                                      v-model=\"SendLaneAPIKey\"\r\n                                                                      placeholder=\"Give SendLane APIKey...\"\r\n                                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                    </validation-provider>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n\r\n                                            <b-col lg=\"12\">\r\n                                                <b-form-group>\r\n                                                    <label>SendLane HashKey</label>\r\n                                                    <validation-provider #default=\"{ errors }\"\r\n                                                                         rules=\"required\"\r\n                                                                         name=\"SendLane HashKey\">\r\n                                                        <b-input-group>\r\n                                                            <b-form-input id=\"SendLaneHashKey\"\r\n                                                                          name=\"SendLaneHashKey\"\r\n                                                                          v-model=\"SendLaneHashKey\"\r\n                                                                          placeholder=\"Give SendLane HashKey...\"\r\n                                                                          :state=\"errors.length > 0 ? false : null\" />\r\n                                                            <b-input-group-append>\r\n                                                                <b-button @click=\"loadSendLaneAccount\"\r\n                                                                          variant=\"outline-primary\">\r\n                                                                    Load\r\n                                                                </b-button>\r\n                                                            </b-input-group-append>\r\n                                                        </b-input-group>\r\n                                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                    </validation-provider>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n                                        </b-row>\r\n                                    </form>\r\n                                </validation-observer>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\" v-if=\"showMailChimp\">\r\n                                <div v-if=\"lstMailChimpAccount.length > 0\">\r\n                                    <b-col lg=\"12\">\r\n                                        <b-form-group label=\"Select a List\"\r\n                                                      label-for=\"MailChimpListId\">\r\n                                            <b-input-group>\r\n                                                <select class=\"form-control\"\r\n                                                        name=\"MailChimpListId\"\r\n                                                        id=\"MailChimpListId\"\r\n                                                        v-model=\"UserFunnelSteps[0].MailChimpListId\">\r\n                                                    <option value=\"0\">Select One</option>\r\n                                                    <optgroup v-for=\"mail in lstMailChimpAccount\"\r\n                                                              label=\"auto.APIKey\">\r\n                                                        <option v-if=\"mail.MailChimpList.length > 0\"\r\n                                                                v-for=\"list in mail.MailChimpList\"\r\n                                                                :value=\"list.Id\">\r\n                                                            {{ list.ListId }}\r\n\r\n                                                        </option>\r\n                                                    </optgroup>\r\n                                                </select>\r\n                                            </b-input-group>\r\n                                        </b-form-group>\r\n                                    </b-col>\r\n                                    <b-col lg=\"12\" class=\"text-right\">\r\n                                        <b-link data-action=\"AddOther\"\r\n                                                @click=\"loadMailChimpAccount\">\r\n                                            Login With Other Account\r\n                                        </b-link>\r\n                                    </b-col>\r\n                                </div>\r\n                                <div v-if=\"lstMailChimpAccount.length < 1\"\r\n                                     class=\"text-right\">\r\n                                    <b-link class=\"btn btn-success mb-1\"\r\n                                            data-action=\"Add\"\r\n                                            @click=\"loadMailChimpAccount\">\r\n                                        Login to MailChimp\r\n                                    </b-link>\r\n                                </div>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\" v-if=\"showAWeber\">\r\n                                <div v-if=\"lstAWeberAccount.length > 0\">\r\n                                    <b-col lg=\"12\">\r\n                                        <b-form-group label=\"Select a List\"\r\n                                                      label-for=\"AWeberListId\">\r\n                                            <b-input-group>\r\n                                                <select class=\"form-control\"\r\n                                                        name=\"AWeberListId\"\r\n                                                        id=\"AWeberListId\"\r\n                                                        v-model=\"UserFunnelSteps[0].AWeberListId\">\r\n                                                    <option value=\"0\">Select One</option>\r\n                                                    <optgroup v-for=\"account in lstAWeberAccount\"\r\n                                                              label=\"account.Name\">\r\n                                                        <option v-if=\"account.Lists.length > 0\"\r\n                                                                v-for=\"list in account.Lists\"\r\n                                                                :value=\"list.Id\">\r\n                                                            {{ list.AWeberId }}\r\n                                                            <!--list.ListId-->\r\n                                                        </option>\r\n                                                    </optgroup>\r\n                                                </select>\r\n                                            </b-input-group>\r\n                                        </b-form-group>\r\n                                    </b-col>\r\n                                    <b-col lg=\"12\" class=\"text-right\">\r\n                                        <b-link data-action=\"AddOther\"\r\n                                                @click=\"loadAWeberAccount\">\r\n                                            Login With Other Account\r\n                                        </b-link>\r\n                                    </b-col>\r\n                                </div>\r\n                                <div v-if=\"lstAWeberAccount.length < 1\"\r\n                                     class=\"text-right\">\r\n                                    <b-link class=\"btn btn-success mb-1\"\r\n                                            data-action=\"Add\"\r\n                                            @click=\"loadAWeberAccount\">\r\n                                        Login to AWeber\r\n                                    </b-link>\r\n                                </div>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\" class=\"text-right\">\r\n                                <b-link class=\"btn btn-primary\"\r\n                                        @click=\"updateAutoResponder\">\r\n                                    <feather-icon icon=\"SaveIcon\" size=\"18\" />\r\n                                    Save\r\n                                </b-link>\r\n                            </b-col>\r\n                        </b-row>\r\n                    </b-card>\r\n                </b-tab>\r\n\r\n                <b-tab v-if=\"UserFunnelFirstStep.TemplateTypeId == 15\" title=\"Web Form\">\r\n                    <b-card v-if=\"webFormCode\">\r\n                        <b-row>\r\n                            <b-col lg=\"12\">\r\n                                <b-form-group label=\"FORM HEADLINE\"\r\n                                              label-for=\"FormHeading\">\r\n                                    <b-form-input id=\"FormHeading\"\r\n                                                  name=\"FormHeading\"\r\n                                                  v-model=\"webFormCode.FormHeading\"\r\n                                                  placeholder=\"Give Form Name...\" />\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"4\">\r\n                                <b-form-group>\r\n                                    <label>FORM FIELD</label>\r\n                                    <br />\r\n                                    <label>Email</label>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"4\">\r\n                                <b-form-group>\r\n                                    <label>Display?</label>\r\n                                    <b-form-checkbox v-model=\"webFormCode.DisplayEmail\"\r\n                                                     disabled\r\n                                                     value=\"true\">\r\n                                    </b-form-checkbox>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"4\">\r\n                                <b-form-group>\r\n                                    <label>Required?</label>\r\n                                    <b-form-checkbox v-model=\"webFormCode.RequiredEmail\"\r\n                                                     disabled\r\n                                                     value=\"true\">\r\n                                    </b-form-checkbox>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"4\">\r\n                                <b-form-group>\r\n                                    <label>FORM FIELD</label>\r\n                                    <br />\r\n                                    <label>Name</label>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"4\">\r\n                                <b-form-group>\r\n                                    <label>Display?</label>\r\n                                    <b-form-checkbox v-model=\"webFormCode.DisplayName\"\r\n                                                     value=\"true\">\r\n                                    </b-form-checkbox>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"4\">\r\n                                <b-form-group>\r\n                                    <label>Required?</label>\r\n                                    <b-form-checkbox v-model=\"webFormCode.RequiredName\"\r\n                                                     value=\"true\">\r\n                                    </b-form-checkbox>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\">\r\n                                <b-form-group>\r\n                                    <label>FORM TYPE</label>\r\n                                    <div class=\"demo-inline-spacing\">\r\n                                        <b-form-radio @change=\"onPopupTypeChange($event)\"\r\n                                                      id=\"inline\"\r\n                                                      value=\"inline\"\r\n                                                      v-model=\"webFormCode.PopupType\">\r\n                                            Inline\r\n                                        </b-form-radio>\r\n                                        <br />\r\n                                        <b-form-radio id=\"popup\"\r\n                                                      value=\"popup\"\r\n                                                      v-model=\"webFormCode.PopupType\">\r\n                                            Popup\r\n                                        </b-form-radio>\r\n                                    </div>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\">\r\n                                <b-alert v-if=\"webFormCode.PopupType == 'inline'\"\r\n                                         variant=\"primary\"\r\n                                         show>\r\n                                    <div class=\"alert-body\">\r\n                                        <span>\r\n                                            This allows you to place and display a\r\n                                            standard form anywhere on your website.\r\n                                        </span>\r\n                                    </div>\r\n                                </b-alert>\r\n\r\n                                <b-alert v-if=\"webFormCode.PopupType == 'popup'\"\r\n                                         variant=\"primary\"\r\n                                         show>\r\n                                    <div class=\"alert-body\">\r\n                                        <span>\r\n                                            This allows you to place and display an\r\n                                            overlay on your webste.\r\n                                        </span>\r\n                                    </div>\r\n                                </b-alert>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\">\r\n                                <b-form-group>\r\n                                    <label>ON SUCCESS</label>\r\n                                    <div class=\"demo-inline-spacing\">\r\n                                        <b-form-radio id=\"message\"\r\n                                                      value=\"message\"\r\n                                                      v-model=\"webFormCode.RedirectionType\">\r\n                                            Message\r\n                                        </b-form-radio>\r\n                                        <br />\r\n                                        <b-form-radio id=\"redirect\"\r\n                                                      value=\"redirect\"\r\n                                                      v-model=\"webFormCode.RedirectionType\">\r\n                                            Redirect\r\n                                        </b-form-radio>\r\n                                    </div>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\">\r\n                                <b-alert v-if=\"webFormCode.RedirectionType == 'message'\"\r\n                                         variant=\"primary\"\r\n                                         show>\r\n                                    <div class=\"alert-body\">\r\n                                        <span>\r\n                                            It will show thank you message to\r\n                                            subscriber.\r\n                                        </span>\r\n                                    </div>\r\n                                </b-alert>\r\n\r\n                                <b-alert v-if=\"webFormCode.RedirectionType == 'redirect'\"\r\n                                         variant=\"primary\"\r\n                                         show>\r\n                                    <div class=\"alert-body\">\r\n                                        <span>\r\n                                            It will redirect subscriber to your already\r\n                                            setup Thank You / Download Page.\r\n                                        </span>\r\n                                    </div>\r\n                                </b-alert>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\" class=\"text-right\">\r\n                                <b-link class=\"btn mr-1 btn-primary\"\r\n                                        @click=\"saveFormCode\">\r\n                                    <feather-icon icon=\"SaveIcon\" size=\"18\" />\r\n                                    Save Settings & Generate Code\r\n                                </b-link>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\" v-if=\"webFormCode.GeneratedHTMLCode\">\r\n                                <b-form-group>\r\n                                    <label>YOUR WEB FORM CODE</label>\r\n                                    <b-input-group>\r\n                                        <b-input-group-prepend>\r\n                                            <b-button variant=\"outline-success\"\r\n                                                      v-clipboard:copy=\"webFormCode.GeneratedHTMLCode\"\r\n                                                      v-clipboard:success=\"onCopy\"\r\n                                                      v-clipboard:error=\"onError\">\r\n                                                <feather-icon icon=\"CopyIcon\" />\r\n                                            </b-button>\r\n                                        </b-input-group-prepend>\r\n                                        <b-form-textarea id=\"textarea-plaintext\"\r\n                                                         readonly\r\n                                                         :value=\"webFormCode.GeneratedHTMLCode\"\r\n                                                         rows=\"3\"\r\n                                                         no-resize />\r\n                                    </b-input-group>\r\n                                </b-form-group>\r\n                            </b-col>\r\n                        </b-row>\r\n                    </b-card>\r\n                </b-tab>\r\n\r\n                <b-tab v-if=\"funnelDef && funnelDef.IsTwoStepOptin == true\" title=\"Double Optin\">\r\n                    <b-card v-if=\"StepDoubleOptin\">\r\n                        <b-row>\r\n                            <validation-observer ref=\"emailRules\">\r\n                                <form ref=\"CreateDoubleOptinEmail\"\r\n                                      id=\"CreateDoubleOptinEmail\"\r\n                                      @submit.stop.prevent=\"saveDoubleOptinEmail\">\r\n                                    <div>\r\n                                        <b-row>\r\n                                            <b-col lg=\"6\">\r\n                                                <b-form-group label=\"From/SMTP:\"\r\n                                                              label-for=\"SmtpConfigurationId\">\r\n                                                    <select class=\"form-control\"\r\n                                                            name=\"ConfigurationId\"\r\n                                                            id=\"ConfigurationId\"\r\n                                                            v-model=\"StepDoubleOptin.SMTPConfigurationId\">\r\n                                                        <option value=\"0\">\r\n                                                            {{ UserFromEmail }}\r\n                                                        </option>\r\n                                                        <option v-for=\"smtp in UserSmtpConfiguration\"\r\n                                                                :value=\"smtp.Id\"\r\n                                                                :data-FromName=\"smtp.FromName\"\r\n                                                                :data-FromEmail=\"smtp.FromEmail\">\r\n                                                            {{ smtp.FromName + \" <\" + smtp.FromEmail + \">\" }}\r\n                                                        </option>\r\n                                                    </select>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n\r\n                                            <input type=\"hidden\"\r\n                                                   id=\"FunnelEmailId\"\r\n                                                   name=\"FunnelEmailId\"\r\n                                                   :value=\"StepDoubleOptin.Id\" />\r\n                                            <input type=\"hidden\"\r\n                                                   name=\"EmailProjectId\"\r\n                                                   id=\"EmailProjectId\"\r\n                                                   :value=\"userFunnelId\" />\r\n                                            <input type=\"hidden\"\r\n                                                   id=\"EmailUserStepId\"\r\n                                                   name=\"EmailUserStepId\"\r\n                                                   :value=\"CurrStepID\" />\r\n\r\n                                            <b-col lg=\"6\">\r\n                                                <b-form-group>\r\n                                                    <label for=\"FromName\">From Name<span class=\"required\"> *</span></label>\r\n                                                    <validation-provider #default=\"{ errors }\"\r\n                                                                         rules=\"required\"\r\n                                                                         name=\"From Name\">\r\n                                                        <b-form-input id=\"FromName\"\r\n                                                                      name=\"FromName\"\r\n                                                                      v-model=\"StepDoubleOptin.FromName\"\r\n                                                                      placeholder=\"Please Enter From Name\"\r\n                                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                    </validation-provider>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n\r\n                                            <b-col lg=\"6\">\r\n                                                <b-form-group>\r\n                                                    <label for=\"Subject\">Subject<span class=\"required\"> *</span></label>\r\n                                                    <validation-provider #default=\"{ errors }\"\r\n                                                                         rules=\"required\"\r\n                                                                         name=\"Subject\">\r\n                                                        <b-form-input id=\"Subject\"\r\n                                                                      name=\"Subject\"\r\n                                                                      v-model=\"StepDoubleOptin.Subject\"\r\n                                                                      placeholder=\"Please Enter Email Subject\"\r\n                                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                    </validation-provider>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n\r\n                                            <b-col lg=\"6\">\r\n                                                <b-form-group>\r\n\r\n                                                    <label for=\"ReplyToEmail\">Reply To Email<span class=\"required\"> *</span></label>\r\n                                                    <validation-provider #default=\"{ errors }\"\r\n                                                                         rules=\"required|email\"\r\n                                                                         name=\"Reply To Email\">\r\n                                                        <b-form-input id=\"ReplyToEmail\"\r\n                                                                      name=\"ReplyToEmail\"\r\n                                                                      v-model=\"StepDoubleOptin.ReplyToEmail\"\r\n                                                                      placeholder=\"Please Enter Reply To Email\"\r\n                                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                    </validation-provider>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n\r\n                                            <b-col lg=\"12\">\r\n                                                <b-form-group>\r\n                                                    <label label-for=\"EmailText\">Email Body<span class=\"required\"> *</span></label>\r\n                                                    <validation-provider #default=\"{ errors }\"\r\n                                                                         rules=\"required\"\r\n                                                                         name=\"Email Body\">\r\n                                                        <quill-editor id=\"EmailText\"\r\n                                                                      name=\"EmailText\"\r\n                                                                      v-model=\"StepDoubleOptin.EmailText\"\r\n                                                                      :options=\"snowOption\"\r\n                                                                      :class=\"errors.length > 0 ? 'error' : 'valid'\"\r\n                                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                    </validation-provider>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n\r\n                                        </b-row>\r\n                                    </div>\r\n                                </form>\r\n                            </validation-observer>\r\n                            <b-col lg=\"12\" class=\"text-right\">\r\n                                <b-link class=\"btn btn-primary\"\r\n                                        @click=\"saveOptinEmail\">\r\n                                    <feather-icon icon=\"SaveIcon\" size=\"18\" />\r\n                                    Save\r\n                                </b-link>\r\n                            </b-col>\r\n                        </b-row>\r\n                    </b-card>\r\n                </b-tab>\r\n\r\n            </b-tabs>\r\n\r\n            <b-modal id=\"stepSettingsModal\"\r\n                     ref=\"modal\"\r\n                     title=\"Update Step URL\"\r\n                     @hidden=\"resetModal\"\r\n                     @ok=\"handleOk\"\r\n                     ok-title=\"Submit\"\r\n                     centered>\r\n                <form ref=\"CurrStepURLForm\" @submit.stop.prevent=\"handleSubmit\">\r\n                    <validation-observer ref=\"CurrStepURLFormRules\">\r\n                        <b-form-group>\r\n\r\n                            <label for=\"CurrStepURL\">Step URL<span class=\"required\"> *</span></label>\r\n                            <validation-provider #default=\"{ errors }\"\r\n                                                 rules=\"required\"\r\n                                                 name=\"Step URL\">\r\n\r\n                                <b-input-group>\r\n\r\n\r\n                                    <b-form-input id=\"CurrStepURL\"\r\n                                                  name=\"CurrStepURL\"\r\n                                                  v-model=\"CurrStepURL\"\r\n                                                  placeholder=\"Please Enter Step URL\"\r\n                                                  :state=\"errors.length > 0 ? false : null\" />\r\n\r\n                                    <b-input-group-append>\r\n                                        <b-button variant=\"outline-primary\">\r\n                                            <b-link :href=\"currIndexSettings == 0? firstStepPageURL: secondStepPageURL\"\r\n                                                    target=\"_blank\">\r\n                                                <feather-icon icon=\"ExternalLinkIcon\" />\r\n                                            </b-link>\r\n                                        </b-button>\r\n                                    </b-input-group-append>\r\n                                </b-input-group>\r\n\r\n\r\n                                <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                            </validation-provider>\r\n                        </b-form-group>\r\n                    </validation-observer>\r\n                </form>\r\n            </b-modal>\r\n\r\n            <b-modal id=\"addEditProductsModal\"\r\n                     ref=\"modal\"\r\n                     :title=\"ProductDetail!=null && ProductDetail.FFProduct.Id>0?'Edit Product':'Add Product'\"\r\n                     ok-title=\"Submit\"\r\n                     ok-icon=\"PlusIcon\"\r\n                     @ok=\"handleFormOk\"\r\n                     centered\r\n                     size=\"lg\">\r\n                <validation-observer ref=\"productRules\">\r\n                    <form ref=\"CreateProductFormFunnel\"\r\n                          id=\"CreateProductFormFunnel\"\r\n                          @submit.stop.prevent=\"saveProduct\">\r\n                        <b-tabs>\r\n                            <b-tab title=\"Basic Info\">\r\n                                <div v-if=\"ProductDetail\">\r\n                                    <b-row>\r\n                                        <b-col lg=\"12\">\r\n                                            <b-form-group>\r\n                                                <label for=\"ProductName\">Name<span class=\"required\"> *</span></label>\r\n                                                <validation-provider #default=\"{ errors }\"\r\n                                                                     rules=\"required\"\r\n                                                                     name=\"Product Name\">\r\n                                                    <b-form-input id=\"ProductName\"\r\n                                                                  name=\"ProductName\"\r\n                                                                  v-model=\"ProductDetail.FFProduct.ProductName\"\r\n                                                                  placeholder=\"Please Enter Product Name\"\r\n                                                                  :state=\"errors.length > 0 ? false : null\" />\r\n                                                    <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                </validation-provider>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n                                    </b-row>\r\n\r\n                                    <b-row>\r\n                                        <b-col lg=\"12\">\r\n                                            <b-form-group>\r\n                                                <label for=\"ProductPrice\">Price<span class=\"required\"> *</span></label>\r\n                                                <validation-provider #default=\"{ errors }\"\r\n                                                                     rules=\"required|min_One_decimal\"\r\n                                                                     name=\"Product Price\">\r\n                                                    <b-input-group>\r\n                                                        <b-input-group-prepend is-text>\r\n                                                            {{ ProductDetail.FFProduct.CurrencySymbol }}\r\n                                                        </b-input-group-prepend>\r\n\r\n                                                        <b-form-input id=\"ProductPrice\"\r\n                                                                      name=\"ProductPrice\"\r\n                                                                      v-model=\"ProductDetail.FFProduct.ProductPrice\"\r\n                                                                      placeholder=\"Please Enter Product Price\"\r\n                                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                                        <b-input-group-append is-text>\r\n                                                            {{ ProductDetail.FFProduct.CurrencyCode }}\r\n                                                        </b-input-group-append>\r\n                                                    </b-input-group>\r\n                                                    <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                </validation-provider>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n                                    </b-row>\r\n\r\n                                    <b-row>\r\n                                        <b-col lg=\"4\">\r\n                                            <b-form-group v-if=\"ProductDetail.PaymentMethod.length > 0\">\r\n                                                <label for=\"PaymentMethodId\">Payment Methods<span class=\"required\"> *</span></label>\r\n                                                <validation-provider #default=\"{ errors }\"\r\n                                                                     rules=\"required\"\r\n                                                                     name=\"CheckOut Options\">\r\n                                                    <select class=\"form-control\"\r\n                                                            name=\"PaymentMethodId\"\r\n                                                            id=\"PaymentMethodId\"\r\n                                                            @change=\"openPaymentProcessor($event)\"\r\n                                                            :state=\"errors.length > 0 ? false : null\">\r\n                                                        <option>Select Payment Method</option>\r\n                                                        <option v-for=\"pay in ProductDetail.PaymentMethod\"\r\n                                                                :value=\"pay.Id\"\r\n                                                                :dataName=\"pay.Code\"\r\n                                                                :selected=\"pay.Id ==ProductDetail.FFProduct.PaymentMethodId\">\r\n                                                            {{ pay.Name }}\r\n                                                        </option>\r\n                                                    </select>\r\n                                                    <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                </validation-provider>\r\n                                            </b-form-group>\r\n\r\n                                            <b-form-group label=\"Please set your payment configurations in your profile.\"\r\n                                                          v-if=\"ProductDetail.PaymentMethod.length < 1\">\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n\r\n                                        <b-col lg=\"4\" v-if=\"PaymentMethodId==1 || PaymentMethodId=='1' \">\r\n                                            <b-form-group id=\"PaypalDiv\">\r\n                                                <label for=\"PaypalAccounts\">Choose Account<span class=\"required\"> *</span></label>\r\n                                                <validation-provider #default=\"{ errors }\"\r\n                                                                     rules=\"required\"\r\n                                                                     name=\"PaypalAccounts\">\r\n                                                    <select class=\"form-control\"\r\n                                                            name=\"PaypalAccounts\"\r\n                                                            id=\"PaypalAccounts\"\r\n                                                            :class=\"errors.length > 0 ? 'is-invalid' : 'valid'\"\r\n                                                            :state=\"errors.length > 0 ? false : null\">\r\n                                                        <option v-for=\"pay in ProductDetail.PaypalAccounts\"\r\n                                                                :value=\"pay.Id\"\r\n                                                                :selected=\"pay.Id ==ProductDetail.FFProduct.PaymentProcessorId\">\r\n                                                            {{ pay.AccountName }}\r\n                                                        </option>\r\n                                                    </select>\r\n                                                    <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                </validation-provider>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n\r\n                                        <b-col lg=\"4\" v-if=\"PaymentMethodId==2 || PaymentMethodId=='2' \">\r\n                                            <b-form-group id=\"stripeDiv\">\r\n                                                <label for=\"StripeAccounts\">Choose Account<span class=\"required\"> *</span></label>\r\n                                                <validation-provider #default=\"{ errors }\"\r\n                                                                     rules=\"required\"\r\n                                                                     name=\"StripeAccounts\">\r\n                                                    <select class=\"form-control\"\r\n                                                            name=\"StripeAccounts\"\r\n                                                            id=\"StripeAccounts\"\r\n                                                            :class=\"errors.length > 0 ? 'is-invalid' : 'valid'\"\r\n                                                            :state=\"errors.length > 0 ? false : null\">\r\n                                                        <option v-for=\"pay in ProductDetail.StripeAccounts\"\r\n                                                                :value=\"pay.Id\"\r\n                                                                :selected=\"pay.Id ==ProductDetail.FFProduct.PaymentProcessorId\">\r\n                                                            {{ pay.Email }}\r\n                                                        </option>\r\n                                                    </select>\r\n                                                    <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                </validation-provider>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n\r\n\r\n                                        <b-col lg=\"4\" v-if=\"PaymentMethodId==3 || PaymentMethodId=='3' \">\r\n                                            <b-form-group id=\"authorizenetDiv\">\r\n                                                <label for=\"AuthorizeNetAccounts\">Choose Account<span class=\"required\"> *</span></label>\r\n                                                <validation-provider #default=\"{ errors }\"\r\n                                                                     rules=\"required\"\r\n                                                                     name=\"AuthorizeNetAccounts\">\r\n                                                    <select class=\"form-control\"\r\n                                                            name=\"AuthorizeNetAccounts\"\r\n                                                            id=\"AuthorizeNetAccounts\"\r\n                                                            :class=\"errors.length > 0 ? 'is-invalid' : 'valid'\"\r\n                                                            :state=\"errors.length > 0 ? false : null\">\r\n                                                        <option v-for=\"pay in ProductDetail.AuthorizeNetAccounts\"\r\n                                                                :value=\"pay.Id\"\r\n                                                                :selected=\"pay.Id ==ProductDetail.FFProduct.PaymentProcessorId\">\r\n                                                            {{ pay.AccountName }}\r\n                                                        </option>\r\n                                                    </select>\r\n                                                    <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                </validation-provider>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n\r\n                                        <b-col lg=\"4\" v-if=\"PaymentMethodId !=0 || PaymentMethodId!='0'\">\r\n                                            <b-form-group>\r\n                                                <label>Payment Mode</label>\r\n                                                <div class=\"demo-inline-spacing\" style=\"margin-top: -0.5rem\">\r\n                                                    <b-form-radio id=\"PaymentModeSandbox\"\r\n                                                                  value=\"true\"\r\n                                                                  v-model=\"ProductDetail.FFProduct.IsSandBox\">\r\n                                                        Sandbox\r\n                                                    </b-form-radio>\r\n                                                    <br>\r\n                                                    <b-form-radio id=\"PaymentModeLive\"\r\n                                                                  value=\"false\"\r\n                                                                  v-model=\"ProductDetail.FFProduct.IsSandBox\">\r\n                                                        Live\r\n                                                    </b-form-radio>\r\n                                                </div>\r\n                                            </b-form-group>\r\n\r\n                                        </b-col>\r\n\r\n                                    </b-row>\r\n                                    <b-row v-if=\"PaymentMethodId==4 || PaymentMethodId=='4' \">\r\n                                        <b-col v-bind:lg=\"Subscription?'6':'12'\">\r\n                                            <b-form-group label=\"BrainTree Accounts\"\r\n                                                          id=\"braintreeDiv\"\r\n                                                          label-for=\"BrainTree Accounts\">\r\n\r\n                                                <select class=\"form-control\"\r\n                                                        name=\"BrainTreeAccounts\"\r\n                                                        id=\"BrainTreeAccounts\">\r\n                                                    <option v-for=\"pay in ProductDetail.BrainTreeAccounts\"\r\n                                                            :value=\"pay.Id\"\r\n                                                            :selected=\"pay.Id ==ProductDetail.FFProduct.PaymentProcessorId\">\r\n                                                        {{ pay.AccountName }}\r\n                                                    </option>\r\n                                                </select>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n\r\n                                        <b-col lg=\"6\" v-if=\"Subscription\">\r\n\r\n                                            <b-form-group label=\"BrainTree Plain ID\"\r\n                                                          label-for=\"PlanId\">\r\n                                                <validation-provider #default=\"{ errors }\"\r\n                                                                     rules=\"required\"\r\n                                                                     name=\"BrainTree Plain ID\">\r\n                                                    <b-form-input id=\"PlanId\"\r\n                                                                  name=\"PlanId\"\r\n                                                                  v-model=\"ProductDetail.FFProduct.PlanId\"\r\n                                                                  placeholder=\"BrainTree Plain ID...\"\r\n                                                                  :state=\"errors.length > 0 ? false : null\" />\r\n                                                    <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                </validation-provider>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n\r\n                                    </b-row>\r\n\r\n                                    <input type=\"hidden\"\r\n                                           id=\"Id\"\r\n                                           name=\"Id\"\r\n                                           :value=\"ProductDetail.FFProduct.Id\" />\r\n                                    <input type=\"hidden\"\r\n                                           id=\"CustomProductID\"\r\n                                           name=\"CustomProductID\"\r\n                                           :value=\"ProductDetail.FFProduct.CustomProductID\" />\r\n                                    <input type=\"hidden\"\r\n                                           id=\"UserFunnelId\"\r\n                                           name=\"UserFunnelId\"\r\n                                           :value=\"CurrStepID\" />\r\n                                    <input type=\"hidden\"\r\n                                           id=\"UserTabNo\"\r\n                                           name=\"UserTabNo\"\r\n                                           :value=\"CurrStepID\" />\r\n\r\n                                    <!--<b-row>\r\n                                <b-col lg=\"12\">\r\n                                    <b-form-group label=\"Is Subscription or Multiple Payments?\"\r\n                                                  label-for=\"ProductIsRecurring\">\r\n                                        <b-form-checkbox id=\"ProductIsRecurring\"\r\n                                                         v-model=\"ProductDetail.FFProduct.ProductIsRecurring\"\r\n                                                         name=\"ProductIsRecurring\"\r\n                                                         value=\"true\"\r\n                                                         unchecked-value=\"false\"\r\n                                                         @input=\"SubscriptionDiv\">\r\n                                        </b-form-checkbox>\r\n                                    </b-form-group>\r\n                                </b-col>\r\n                            </b-row>-->\r\n\r\n                                    <div v-if=\"Subscription\">\r\n                                        <b-row>\r\n                                            <b-col lg=\"6\">\r\n                                                <b-form-group>\r\n                                                    <label for=\"ProductPaymentPeriod\">Payment Period<span class=\"required\"> *</span></label>\r\n                                                    <validation-provider #default=\"{ errors }\"\r\n                                                                         rules=\"required|min_One\"\r\n                                                                         name=\"Payment Period\">\r\n                                                        <b-form-input id=\"ProductPaymentPeriod\"\r\n                                                                      name=\"ProductPaymentPeriod\"\r\n                                                                      v-model=\"ProductDetail.FFProduct.ProductPaymentPeriod\"\r\n                                                                      placeholder=\"Please Enter Payment Period\"\r\n                                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                    </validation-provider>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n                                            <b-col lg=\"6\">\r\n                                                <b-form-group v-if=\"ProductDetail.PaymentFrequency.length > 0\">\r\n                                                    <label for=\"ProductPaymentFrequency\">Payment Frequency<span class=\"required\"> *</span></label>\r\n                                                    <select class=\"form-control\"\r\n                                                            name=\"ProductPaymentFrequency\"\r\n                                                            id=\"ProductPaymentFrequency\">\r\n                                                        <option v-for=\"freq in ProductDetail.PaymentFrequency\"\r\n                                                                :value=\"freq.Id\"\r\n                                                                :selected=\"freq.Id ==ProductDetail.FFProduct.ProductPaymentFrequency\">\r\n                                                            {{ freq.FrequencyName }}\r\n                                                        </option>\r\n                                                    </select>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n                                            <b-col lg=\"6\">\r\n                                                <b-form-group>\r\n                                                    <label for=\"ProductNumberOfPayments\">No Of Payments<span class=\"required\"> *</span></label>\r\n                                                    <validation-provider #default=\"{ errors }\"\r\n                                                                         rules=\"required|min_One\"\r\n                                                                         name=\"Number Of Payments\">\r\n                                                        <b-form-input id=\"ProductNumberOfPayments\"\r\n                                                                      name=\"ProductNumberOfPayments\"\r\n                                                                      v-model=\"ProductDetail.FFProduct.ProductNumberOfPayments\"\r\n                                                                      placeholder=\"Please Enter No Of Payments\"\r\n                                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                    </validation-provider>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n                                            <b-col lg=\"12\">\r\n                                                <b-form-group label=\"Is Trial?\"\r\n                                                              label-for=\"ProductIsTrial\">\r\n                                                    <b-form-checkbox id=\"ProductIsTrial\"\r\n                                                                     v-model=\"ProductDetail.FFProduct.ProductIsTrial\"\r\n                                                                     name=\"ProductIsTrial\"\r\n                                                                     value=\"true\"\r\n                                                                     unchecked-value=\"false\"\r\n                                                                     @input=\"TrialDiv\">\r\n                                                    </b-form-checkbox>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n                                        </b-row>\r\n                                        <b-row v-if=\"IsTrial\">\r\n                                            <b-col lg=\"6\">\r\n                                                <b-form-group>\r\n                                                    <label for=\"ProductTrialPrice\">Trial Price<span class=\"required\"> *</span></label>\r\n                                                    <validation-provider #default=\"{ errors }\"\r\n                                                                         rules=\"required|min_One_decimal\"\r\n                                                                         name=\"Product Trial Price\">\r\n                                                        <b-form-input id=\"ProductTrialPrice\"\r\n                                                                      name=\"ProductTrialPrice\"\r\n                                                                      v-model=\"ProductDetail.FFProduct.ProductTrialPrice\"\r\n                                                                      placeholder=\"Please Enter Trial Price\"\r\n                                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                    </validation-provider>\r\n                                                </b-form-group>\r\n                                            </b-col>\r\n                                            <b-col lg=\"6\">\r\n                                                <b-form-group>\r\n                                                    <label for=\"ProductTrialPeriod\">Trial Period in day(s)<span class=\"required\"> *</span></label>\r\n                                                    <validation-provider #default=\"{ errors }\"\r\n                                                                         rules=\"required|min_One\"\r\n                                                                         name=\"Trial Period\">\r\n                                                        <b-form-input id=\"ProductTrialPeriod\"\r\n                                                                      name=\"ProductTrialPeriod\"\r\n                                                                      v-model=\"ProductDetail.FFProduct.ProductTrialPeriod\"\r\n                                                                      placeholder=\"Please Enter Trial Period in day(s)\"\r\n                                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                    </validation-provider>\r\n                                                </b-form-group>\r\n\r\n                                                <input type=\"hidden\" id=\"ProductTrialPeriodFrequency\" name=\"ProductTrialPeriodFrequency\" value=\"1\" />\r\n                                            </b-col>\r\n\r\n                                        </b-row>\r\n                                    </div>\r\n\r\n                                    <b-row>\r\n                                        <b-col lg=\"12\">\r\n                                            <b-form-group label=\"Product Archived\"\r\n                                                          label-for=\"ProductIsTrial\"\r\n                                                          class=\"hidden\">\r\n                                                <div class=\"demo-inline-spacing\">\r\n                                                    <b-form-radio v-model=\"ProductDetail.FFProduct.ProductArchived\"\r\n                                                                  name=\"ProductArchived\"\r\n                                                                  value=\"true\">\r\n                                                        Yes\r\n                                                    </b-form-radio>\r\n                                                    <b-form-radio v-model=\"ProductDetail.FFProduct.ProductArchived\"\r\n                                                                  name=\"ProductArchived\"\r\n                                                                  value=\"false\">\r\n                                                        No\r\n                                                    </b-form-radio>\r\n                                                </div>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n                                    </b-row>\r\n                                </div>\r\n                            </b-tab>\r\n\r\n                            <b-tab title=\"Order Email Settings\">\r\n                                <div v-if=\"ProductDetail\">\r\n                                    <b-row>\r\n                                        <b-col lg=\"12\">\r\n                                            <b-form-group label=\"Do you want to Send Order Email to Customers?\"\r\n                                                          label-for=\"IsEmailEnabled\">\r\n                                                <div class=\"demo-inline-spacing\">\r\n                                                    <b-form-radio v-model=\"ProductDetail.FFProduct.IsEmailEnabled\"\r\n                                                                  name=\"IsEmailEnabled\"\r\n                                                                  value=\"true\"\r\n                                                                  @change=\"fnEmailEnabled\">\r\n                                                        Yes\r\n                                                    </b-form-radio>\r\n                                                    <b-form-radio v-model=\"ProductDetail.FFProduct.IsEmailEnabled\"\r\n                                                                  name=\"IsEmailEnabled\"\r\n                                                                  value=\"false\"\r\n                                                                  @change=\"fnEmailEnabled\">\r\n                                                        No\r\n                                                    </b-form-radio>\r\n                                                </div>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n                                    </b-row>\r\n                                    <b-row v-if=\"EmailEnabled == true\">\r\n                                        <b-col lg=\"12\">\r\n                                            <b-form-group label=\"From/SMTP:\"\r\n                                                          label-for=\"SmtpConfigurationId\"\r\n                                                          v-if=\"ProductDetail.FunnelUserSmtpConfiguration.length>0\">\r\n                                                <select class=\"form-control\"\r\n                                                        name=\"SmtpConfigurationId\"\r\n                                                        id=\"SmtpConfigurationId\">\r\n                                                    <option v-for=\"smtp in ProductDetail.FunnelUserSmtpConfiguration\"\r\n                                                            :value=\"smtp.Id\"\r\n                                                            :selected=\"smtp.Id ==ProductDetail.FFProduct.SmtpConfigurationId\"\r\n                                                            :data-FromName=\"smtp.FromName\"\r\n                                                            :data-FromEmail=\"smtp.FromEmail\">\r\n                                                        {{ smtp.FromName + \" <\" + smtp.FromEmail + \">\" }}\r\n                                                    </option>\r\n                                                </select>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n\r\n                                        <b-col lg=\"12\">\r\n                                            <b-form-group>\r\n                                                <label for=\"Subject\">Subject<span class=\"required\"> *</span></label>\r\n                                                <validation-provider #default=\"{ errors }\"\r\n                                                                     rules=\"required\"\r\n                                                                     name=\"Email Subject\">\r\n                                                    <b-form-input id=\"Subject\"\r\n                                                                  name=\"Subject\"\r\n                                                                  v-model=\"ProductDetail.FFProduct.FulfillmentEmailSubject\"\r\n                                                                  placeholder=\"Please Enter Email Subject\"\r\n                                                                  :state=\"errors.length > 0 ? false : null\" />\r\n                                                    <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                </validation-provider>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n                                        <b-col lg=\"12\">\r\n                                            <b-form-group>\r\n                                                <label for=\"FulfillmentEmailBody\">Email Body<span class=\"required\"> *</span></label>\r\n                                                <validation-provider #default=\"{ errors }\"\r\n                                                                     rules=\"required\"\r\n                                                                     name=\"Email Body\">\r\n                                                    <quill-editor id=\"FulfillmentEmailBody\"\r\n                                                                  name=\"FulfillmentEmailBody\"\r\n                                                                  v-model=\"ProductDetail.FFProduct.FulfillmentEmailBody\"\r\n                                                                  :options=\"snowOption\"\r\n                                                                  :class=\"errors.length > 0 ? 'error' : 'valid'\"\r\n                                                                  :state=\"errors.length > 0 ? false : null\" />\r\n                                                    <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                                </validation-provider>\r\n                                            </b-form-group>\r\n                                        </b-col>\r\n                                    </b-row>\r\n                                </div>\r\n                            </b-tab>\r\n\r\n                            <b-tab title=\"Checkout Page Settings\" v-if=\"PaymentMethod !='' && PaymentMethod!='PAYPAL'\">\r\n                                <b-row>\r\n                                    <b-col lg=\"6\"\r\n                                           class=\"custom-col-6\"\r\n                                           v-for=\"temp in SalePageTemplates\"\r\n                                           v-bind:data=\"temp\"\r\n                                           v-bind:key=\"temp.Name\">\r\n\r\n                                        <b-tabs content-class=\"pt-1\" fill end\r\n                                                id=\"tempVariations\"\r\n                                                v-if=\"CheckoutTempId<1\">\r\n                                            <b-tab :title-link-attributes=\"{style:'background:#' +temp.ColorOne +' !important',}\"\r\n                                                   display=\"block\" class=\"mb-0 varitions-color-tab\">\r\n                                                <b-card no-body\r\n                                                        class=\"shadow-none\">\r\n                                                    <b-card-body class=\"text-center\">\r\n                                                        <expandable-image class=\"image\"\r\n                                                                          :src=\"WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.ChildFolder +'/_template_files/thumb.Jpg'\" />\r\n                                                    </b-card-body>\r\n\r\n                                                    <b-row class=\"text-center mx-0\">\r\n                                                        <b-col cols=\"12\"\r\n                                                               class=\"border-top d-flex align-items-between flex-column py-1\">\r\n                                                            <h3 class=\"font-weight-bolder mb-0\">\r\n                                                                <b-link data-index=\"0\"\r\n                                                                        :data-parentFolder=\"temp.ParentFolder\"\r\n                                                                        :data-mainFolder=\"temp.MainFolder\"\r\n                                                                        :data-templateTypeId=\"temp.TemplateTypeId\"\r\n                                                                        :data-templateFileName=\"temp.TemplateFileName\"\r\n                                                                        :data-templateVariation=\"temp.ChildFolder\"\r\n                                                                        :data-TemplateName=\"temp.TemplateName\"\r\n                                                                        :data-value=\"temp.Id\"\r\n                                                                        class=\"btn mr-1 btn-outline-primary templates\"\r\n                                                                        @click=\"UseThisCheckoutTemplate\">\r\n                                                                    <i class=\"fa fa-mouse-pointer\"></i>\r\n                                                                    <span class=\"name\">Use This</span>\r\n                                                                </b-link>\r\n                                                            </h3>\r\n                                                        </b-col>\r\n                                                    </b-row>\r\n                                                </b-card>\r\n                                            </b-tab>\r\n\r\n                                            <b-tab :title-link-attributes=\"{style:'background:#' +temp.ColorTwo +' !important',}\"\r\n                                                   display=\"block\" class=\"mb-0 varitions-color-tab\">\r\n                                                <b-card no-body\r\n                                                        class=\"shadow-none\">\r\n                                                    <b-card-body class=\"text-center\">\r\n                                                        <expandable-image class=\"image\"\r\n                                                                          :src=\"WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.FolderTwo +'/_template_files/thumb.Jpg'\" />\r\n                                                    </b-card-body>\r\n\r\n                                                    <b-row class=\"text-center mx-0\">\r\n                                                        <b-col cols=\"12\"\r\n                                                               class=\"border-top d-flex align-items-between flex-column py-1\">\r\n                                                            <h3 class=\"font-weight-bolder mb-0\">\r\n                                                                <b-link data-index=\"0\"\r\n                                                                        :data-parentFolder=\"temp.ParentFolder\"\r\n                                                                        :data-mainFolder=\"temp.MainFolder\"\r\n                                                                        :data-templateTypeId=\"temp.TemplateTypeId\"\r\n                                                                        :data-templateFileName=\"temp.TemplateFileName\"\r\n                                                                        :data-templateVariation=\"temp.FolderTwo\"\r\n                                                                        :data-TemplateName=\"temp.TemplateName\"\r\n                                                                        :data-value=\"temp.Id\"\r\n                                                                        class=\"btn mr-1 btn-outline-primary templates\"\r\n                                                                        @click=\"UseThisCheckoutTemplate\">\r\n                                                                    <i class=\"fa fa-mouse-pointer\"></i>\r\n                                                                    <span class=\"name\">Use This</span>\r\n                                                                </b-link>\r\n                                                            </h3>\r\n                                                        </b-col>\r\n                                                    </b-row>\r\n                                                </b-card>\r\n                                            </b-tab>\r\n\r\n                                            <b-tab :title-link-attributes=\"{style:'background:#' +temp.ColorThree +' !important',}\"\r\n                                                   display=\"block\" class=\"mb-0 varitions-color-tab\">\r\n                                                <b-card no-body\r\n                                                        class=\"shadow-none\">\r\n                                                    <b-card-body class=\"text-center\">\r\n                                                        <expandable-image class=\"image\"\r\n                                                                          :src=\"WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.FolderThree +'/_template_files/thumb.Jpg'\" />\r\n                                                    </b-card-body>\r\n\r\n                                                    <b-row class=\"text-center mx-0\">\r\n                                                        <b-col cols=\"12\"\r\n                                                               class=\"border-top d-flex align-items-between flex-column py-1\">\r\n                                                            <h3 class=\"font-weight-bolder mb-0\">\r\n                                                                <b-link data-index=\"0\"\r\n                                                                        :data-parentFolder=\"temp.ParentFolder\"\r\n                                                                        :data-mainFolder=\"temp.MainFolder\"\r\n                                                                        :data-templateTypeId=\"temp.TemplateTypeId\"\r\n                                                                        :data-templateFileName=\"temp.TemplateFileName\"\r\n                                                                        :data-templateVariation=\"temp.FolderThree\"\r\n                                                                        :data-TemplateName=\"temp.TemplateName\"\r\n                                                                        :data-value=\"temp.Id\"\r\n                                                                        class=\"btn mr-1 btn-outline-primary templates\"\r\n                                                                        @click=\"UseThisCheckoutTemplate\">\r\n                                                                    <i class=\"fa fa-mouse-pointer\"></i>\r\n                                                                    <span class=\"name\">Use This</span>\r\n                                                                </b-link>\r\n                                                            </h3>\r\n                                                        </b-col>\r\n                                                    </b-row>\r\n                                                </b-card>\r\n                                            </b-tab>\r\n\r\n                                            <b-tab :title-link-attributes=\"{style:'background:#' +temp.ColorFour +' !important',}\"\r\n                                                   display=\"block\" class=\"mb-0 varitions-color-tab\">\r\n                                                <b-card no-body\r\n                                                        class=\"shadow-none\">\r\n                                                    <b-card-body class=\"text-center\">\r\n                                                        <expandable-image class=\"image\"\r\n                                                                          :src=\"WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +temp.FolderFour +'/_template_files/thumb.Jpg'\" />\r\n                                                    </b-card-body>\r\n\r\n                                                    <b-row class=\"text-center mx-0\">\r\n                                                        <b-col cols=\"12\"\r\n                                                               class=\"border-top d-flex align-items-between flex-column py-1\">\r\n                                                            <h3 class=\"font-weight-bolder mb-0\">\r\n                                                                <b-link data-index=\"0\"\r\n                                                                        :data-parentFolder=\"temp.ParentFolder\"\r\n                                                                        :data-mainFolder=\"temp.MainFolder\"\r\n                                                                        :data-templateTypeId=\"temp.TemplateTypeId\"\r\n                                                                        :data-templateFileName=\"temp.TemplateFileName\"\r\n                                                                        :data-templateVariation=\"temp.FolderFour\"\r\n                                                                        :data-TemplateName=\"temp.TemplateName\"\r\n                                                                        :data-value=\"temp.Id\"\r\n                                                                        class=\"btn mr-1 btn-outline-primary templates\"\r\n                                                                        @click=\"UseThisCheckoutTemplate\">\r\n                                                                    <i class=\"fa fa-mouse-pointer\"></i>\r\n                                                                    <span class=\"name\">Use This</span>\r\n                                                                </b-link>\r\n                                                            </h3>\r\n                                                        </b-col>\r\n                                                    </b-row>\r\n                                                </b-card>\r\n                                            </b-tab>\r\n                                        </b-tabs>\r\n                                        <b-card no-body\r\n                                                v-if=\"CheckoutTempId>1\"\r\n                                                class=\"shadow-none\">\r\n                                            <b-card-body class=\"text-center\">\r\n                                                <expandable-image class=\"image\"\r\n                                                                  :src=\"WebAPIURL +'/TemplateFiles/' +temp.MainFolder +'/' +temp.ParentFolder +'/' +SalePageVariation +'/_template_files/thumb.Jpg'\" />\r\n                                            </b-card-body>\r\n\r\n                                            <b-row class=\"text-center mx-0\">\r\n                                                <b-col cols=\"12\"\r\n                                                       class=\"border-top d-flex align-items-between flex-column py-1\">\r\n                                                    <h3 class=\"font-weight-bolder mb-0\">\r\n\r\n                                                        <b-link data-index=\"0\"\r\n                                                                :data-parentFolder=\"temp.ParentFolder\"\r\n                                                                :data-mainFolder=\"temp.MainFolder\"\r\n                                                                :data-templateTypeId=\"temp.TemplateTypeId\"\r\n                                                                :data-templateFileName=\"temp.TemplateFileName\"\r\n                                                                :data-TemplateName=\"temp.TemplateName\"\r\n                                                                :data-value=\"temp.Id\"\r\n                                                                class=\"btn mr-1 btn-danger templates\"\r\n                                                                @click=\"ResetCheckoutTemplate\">\r\n\r\n                                                            <feather-icon icon=\"RefreshCwIcon\"></feather-icon>\r\n                                                            <span class=\"name\"> Reset Template</span>\r\n                                                        </b-link>\r\n                                                    </h3>\r\n                                                </b-col>\r\n                                            </b-row>\r\n                                        </b-card>\r\n                                    </b-col>\r\n                                </b-row>\r\n                            </b-tab>\r\n\r\n                        </b-tabs>\r\n                    </form>\r\n                </validation-observer>\r\n\r\n                <slot></slot>\r\n                <template #modal-footer=\"{ cancel, ok }\">\r\n                    <b-button @click=\"closeProductModal\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"secondary\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"XCircleIcon\" size=\"18\" />\r\n                        Cancel\r\n                    </b-button>\r\n\r\n                    <b-button @click=\"saveProduct\"\r\n                              v-if=\"CheckoutTempId>0 || PaymentMethod=='PAYPAL'\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"info\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"SaveIcon\" size=\"18\" />\r\n                        Save\r\n                    </b-button>\r\n\r\n\r\n                </template>\r\n\r\n            </b-modal>\r\n\r\n            <b-modal no-close-on-backdrop\r\n                     id=\"addEditEmailModal\"\r\n                     ref=\"modal\"\r\n                     :title=\"StepFunnelEmailDetail!=null && StepFunnelEmailDetail.FunnelEmail.Id>0?'Edit Automation Email':'Add Automation Email'\"\r\n                     ok-title=\"Submit\"\r\n                     @ok=\"handleEmailFormOk\"\r\n                     centered\r\n                     size=\"lg\">\r\n                <validation-observer ref=\"emailRules\">\r\n                    <form ref=\"CreateEmailFormFunnel\"\r\n                          id=\"CreateEmailFormFunnel\"\r\n                          @submit.stop.prevent=\"saveEmail\">\r\n                        <div v-if=\"StepFunnelEmailDetail\">\r\n                            <b-row>\r\n                                <b-col lg=\"12\">\r\n                                    <!--<span  v-if=\"StepFunnelEmailDetail.FunnelEmail.IsScheduled\" style=\"color: #dc3545; text-align: center; display: block; font-weight: 600; \"\r\n                                          >All changes will only affect upcoming subscribers.</span>-->\r\n                                    <b-form-group label=\"From/SMTP:\"\r\n                                                  label-for=\"SmtpConfigurationId\">\r\n                                        <select class=\"form-control\"\r\n                                                name=\"ConfigurationId\"\r\n                                                id=\"ConfigurationId\"\r\n                                                v-model=\"StepFunnelEmailDetail.FunnelEmail.ConfigurationId\">\r\n                                            <option value=\"0\">\r\n                                                Use System Default ({{ StepFunnelEmailDetail.UserFromEmail }})\r\n                                            </option>\r\n                                            <option v-for=\"smtp in StepFunnelEmailDetail.SmtpConfigurations\"\r\n                                                    :value=\"smtp.Id\"\r\n                                                    :data-FromName=\"smtp.FromName\"\r\n                                                    :data-FromEmail=\"smtp.FromEmail\">\r\n                                                {{ smtp.FromName + \" <\" + smtp.FromEmail + \">\" }}\r\n                                            </option>\r\n                                        </select>\r\n                                    </b-form-group>\r\n                                </b-col>\r\n\r\n                                <input type=\"hidden\"\r\n                                       id=\"FunnelEmailId\"\r\n                                       name=\"FunnelEmailId\"\r\n                                       :value=\"StepFunnelEmailDetail.FunnelEmail.Id\" />\r\n                                <input type=\"hidden\"\r\n                                       name=\"EmailProjectId\"\r\n                                       id=\"EmailProjectId\"\r\n                                       :value=\"userFunnelId\" />\r\n                                <input type=\"hidden\"\r\n                                       id=\"EmailUserStepId\"\r\n                                       name=\"EmailUserStepId\"\r\n                                       :value=\"CurrStepID\" />\r\n                                <input type=\"hidden\"\r\n                                       id=\"IsScheduled\"\r\n                                       name=\"IsScheduled\"\r\n                                       :value=\"StepFunnelEmailDetail.FunnelEmail.IsScheduled\" />\r\n                                <input type=\"hidden\"\r\n                                       name=\"AttachmentFolderId\"\r\n                                       id=\"AttachmentFolderId\"\r\n                                       :value=\"StepFunnelEmailDetail.FunnelEmail.AttachmentFolderId\" />\r\n\r\n                                <b-col lg=\"12\">\r\n                                    <b-form-group>\r\n                                        <label for=\"FromName\">From Name<span class=\"required\"> *</span></label>\r\n                                        <validation-provider #default=\"{ errors }\"\r\n                                                             rules=\"required\"\r\n                                                             name=\"From Name\">\r\n                                            <b-form-input id=\"FromName\"\r\n                                                          name=\"FromName\"\r\n                                                          v-model=\"StepFunnelEmailDetail.FunnelEmail.FromName\"\r\n                                                          placeholder=\"Please Enter From Name\"\r\n                                                          :state=\"errors.length > 0 ? false : null\" />\r\n                                            <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                        </validation-provider>\r\n                                    </b-form-group>\r\n                                </b-col>\r\n\r\n                                <b-col lg=\"12\">\r\n                                    <b-form-group>\r\n                                        <label for=\"Subject\">Subject<span class=\"required\"> *</span></label>\r\n                                        <validation-provider #default=\"{ errors }\"\r\n                                                             rules=\"required\"\r\n                                                             name=\"Subject\">\r\n                                            <b-form-input id=\"Subject\"\r\n                                                          name=\"Subject\"\r\n                                                          v-model=\"StepFunnelEmailDetail.FunnelEmail.Subject\"\r\n                                                          placeholder=\"Please Enter Email Subject\"\r\n                                                          :state=\"errors.length > 0 ? false : null\" />\r\n                                            <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                        </validation-provider>\r\n                                    </b-form-group>\r\n                                </b-col>\r\n\r\n                                <b-col lg=\"12\">\r\n                                    <b-form-group>\r\n\r\n                                        <label for=\"ReplyToEmail\">Reply To Email<span class=\"required\"> *</span></label>\r\n                                        <validation-provider #default=\"{ errors }\"\r\n                                                             rules=\"required|email\"\r\n                                                             name=\"Reply To Email\">\r\n                                            <b-form-input id=\"ReplyToEmail\"\r\n                                                          name=\"ReplyToEmail\"\r\n                                                          v-model=\"StepFunnelEmailDetail.FunnelEmail.ReplyToEmail\"\r\n                                                          placeholder=\"Please Enter Reply To Email\"\r\n                                                          :state=\"errors.length > 0 ? false : null\" />\r\n                                            <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                        </validation-provider>\r\n                                    </b-form-group>\r\n                                </b-col>\r\n\r\n                                <b-col lg=\"4\">\r\n                                    <b-form-group label=\"Choose Delay\" label-for=\"ddlDays\">\r\n                                        <select class=\"form-control\"\r\n                                                name=\"ddlDays\"\r\n                                                id=\"ddlDays\"\r\n                                                @change=\"onDelayChange($event)\"\r\n                                                v-model=\"Delay\">\r\n                                            <option value=\"0\">Immediately</option>\r\n                                            <option value=\"1\">After 1 Day</option>\r\n                                            <option value=\"2\">After 2 Day</option>\r\n                                            <option value=\"3\">After 3 Day</option>\r\n                                            <option value=\"4\">After 4 Day</option>\r\n                                            <option value=\"5\">After 5 Day</option>\r\n                                            <option value=\"6\">After 6 Day</option>\r\n                                            <option value=\"7\">After 7 Day</option>\r\n                                            <option value=\"8\">Custom</option>\r\n                                        </select>\r\n                                    </b-form-group>\r\n                                </b-col>\r\n\r\n                                <b-col lg=\"4\">\r\n                                    <b-form-group label=\"Delay Days\" label-for=\"DelayDays\">\r\n                                        <select class=\"form-control\"\r\n                                                name=\"DelayDays\"\r\n                                                id=\"DelayDays\"\r\n                                                @change=\"onDayChange($event)\"\r\n                                                v-model=\"StepFunnelEmailDetail.FunnelEmail.DelayDays\">\r\n                                            <option value=\"0\">0</option>\r\n                                            <option v-for=\"index in 365\"\r\n                                                    :key=\"index\"\r\n                                                    :value=\"index\">\r\n                                                {{ index }}\r\n                                            </option>\r\n                                        </select>\r\n                                    </b-form-group>\r\n                                </b-col>\r\n\r\n                                <b-col lg=\"4\">\r\n                                    <b-form-group label=\"Delay Hours\" label-for=\"DelayHours\">\r\n                                        <select class=\"form-control\"\r\n                                                name=\"DelayHours\"\r\n                                                id=\"DelayHours\"\r\n                                                v-model=\"StepFunnelEmailDetail.FunnelEmail.DelayHours\">\r\n                                            <option value=\"0\">0</option>\r\n                                            <option v-for=\"index in 23\" :key=\"index\" :value=\"index\">\r\n                                                {{ index }}\r\n                                            </option>\r\n                                        </select>\r\n                                    </b-form-group>\r\n                                </b-col>\r\n                                <b-col lg=\"12\">\r\n                                    <b-form-group>\r\n                                        <div v-if=\"StepFunnelEmailDetail.FunnelEmail.DelayDays>0 || StepFunnelEmailDetail.FunnelEmail.DelayHours>0\">\r\n                                            Email will be sent after {{StepFunnelEmailDetail.FunnelEmail.DelayDays}} day{{StepFunnelEmailDetail.FunnelEmail.DelayDays>1?'s':''}} and {{StepFunnelEmailDetail.FunnelEmail.DelayHours}} hour{{StepFunnelEmailDetail.FunnelEmail.DelayHours>1?'s':''}}\r\n                                        </div>\r\n                                        <div v-if=\"StepFunnelEmailDetail.FunnelEmail.DelayDays<1 && StepFunnelEmailDetail.FunnelEmail.DelayHours<1\">\r\n                                            Email will be sent immediately\r\n                                        </div>\r\n                                    </b-form-group>\r\n                                </b-col>\r\n\r\n                                <b-col lg=\"12\">\r\n                                    <b-form-group>\r\n                                        <label label-for=\"EmailText\">Email Body<span class=\"required\"> *</span></label>\r\n                                        <validation-provider #default=\"{ errors }\"\r\n                                                             rules=\"required\"\r\n                                                             name=\"Email Body\">\r\n                                            <quill-editor id=\"EmailText\"\r\n                                                          name=\"EmailText\"\r\n                                                          v-model=\"StepFunnelEmailDetail.FunnelEmail.EmailText\"\r\n                                                          :options=\"snowOption\"\r\n                                                          :class=\"errors.length > 0 ? 'error' : 'valid'\"\r\n                                                          :state=\"errors.length > 0 ? false : null\" />\r\n                                            <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                        </validation-provider>\r\n                                    </b-form-group>\r\n                                </b-col>\r\n\r\n                                <b-col lg=\"12\">\r\n                                    <b-form-group>\r\n                                        <label>Cam Spam Additional Footer Text(Optional)</label>\r\n\r\n                                        <b-form-input id=\"CamSpam\"\r\n                                                      name=\"CamSpam\"\r\n                                                      v-model=\"StepFunnelEmailDetail.FunnelEmail.CamSpam\"\r\n                                                      placeholder=\"Give CamSpam...\" />\r\n                                    </b-form-group>\r\n                                </b-col>\r\n                            </b-row>\r\n                        </div>\r\n                    </form>\r\n                </validation-observer>\r\n\r\n                <slot></slot>\r\n                <template #modal-footer=\"{ cancel, ok }\">\r\n                    <b-button @click=\"closeEmailModal\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"secondary\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"XCircleIcon\" size=\"18\" />\r\n                        Cancel\r\n                    </b-button>\r\n\r\n                    <b-button @click=\"openSendTestEmailModal\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"info\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"MailIcon\" size=\"18\" />\r\n                        Send Test Email\r\n                    </b-button>\r\n                    <!--v-if=\"!StepFunnelEmailDetail.FunnelEmail.IsScheduled\"-->\r\n                    <b-button v-if=\"!hideDraftBtn\"\r\n                              @click=\"saveDraftEmail\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"primary\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"SaveIcon\" size=\"18\" />\r\n                        Save a Draft\r\n                    </b-button>\r\n\r\n                    <b-button @click=\"scheduleEmail\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"primary\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"SendIcon\" size=\"18\" />\r\n                        Save & Schedule\r\n                    </b-button>\r\n                </template>\r\n            </b-modal>\r\n\r\n            <b-modal id=\"sendTestEmailModal\"\r\n                     ref=\"modal\"\r\n                     title=\"Send Test Email\"\r\n                     ok-title=\"Submit\"\r\n                     @ok=\"handleEmailFormOk\"\r\n                     @hidden=\"resetTestEmailModal\"\r\n                     centered\r\n                     size=\"lg\">\r\n                <validation-observer ref=\"testEmailRules\">\r\n                    <form ref=\"TestEmailFormFunnel\"\r\n                          id=\"TestEmailFormFunnel\"\r\n                          @submit.stop.prevent>\r\n                        <b-row>\r\n                            <b-col lg=\"12\">\r\n                                <b-form-group>\r\n                                    <label for=\"ToEmail\">To Email<span class=\"required\"> *</span></label>\r\n                                    <validation-provider #default=\"{ errors }\"\r\n                                                         rules=\"required|email\"\r\n                                                         name=\"Reply To Email\">\r\n                                        <b-form-input id=\"ToEmail\"\r\n                                                      name=\"ToEmail\"\r\n                                                      v-model=\"TestToEmail\"\r\n                                                      placeholder=\"Please Enter To Email\"\r\n                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                    </validation-provider>\r\n                                </b-form-group>\r\n                            </b-col>\r\n                        </b-row>\r\n                    </form>\r\n                </validation-observer>\r\n\r\n                <slot></slot>\r\n                <template #modal-footer=\"{ cancel, ok }\">\r\n                    <b-button @click=\"closeTestEmailModal\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"secondary\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"XCircleIcon\" size=\"18\" />\r\n                        Cancel\r\n                    </b-button>\r\n                    <b-button @click=\"sendTestEmail\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"primary\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"MailIcon\" size=\"18\" />\r\n                        Send\r\n                    </b-button>\r\n                </template>\r\n            </b-modal>\r\n\r\n            <b-modal id=\"projectTermsPrivacyPolicy\"\r\n                     ref=\"modal\"\r\n                     title=\"Terms & Privacy Policy\"\r\n                     ok-title=\"Submit\"\r\n                     @ok=\"HandleTermsPrivacyPolicyOk\"\r\n                     centered\r\n                     size=\"lg\">\r\n                <validation-observer ref=\"projectTermsPrivacyPolicyRules\">\r\n                    <form ref=\"projectTermsPrivacyPolicyForm\"\r\n                          id=\"projectTermsPrivacyPolicyForm\"\r\n                          @submit.stop.prevent>\r\n                        <b-tabs>\r\n                            <b-tab title=\"Terms & Conditions\">\r\n                                <b-row>\r\n                                    <b-col lg=\"12\">\r\n                                        <b-form-group class=\"float-right\">\r\n                                            <b-button title=\"Copy Term Conditions URL\"\r\n                                                      v-if=\"termConditionsUrl\"\r\n                                                      @click=\"copyTermToClipboard\"\r\n                                                      v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                                      v-b-tooltip.hover.v-success\r\n                                                      variant=\"flat-success\"\r\n                                                      class=\"btn-icon mr-1\">\r\n                                                <feather-icon icon=\"CopyIcon\" />\r\n                                            </b-button>\r\n                                            \r\n                                            <b-button title=\"View Term Conditions URL\"\r\n                                                      target=\"_blank\"\r\n                                                      v-if=\"termConditionsUrl\"\r\n                                                      :href=\"termConditionsUrl\"\r\n                                                      v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                                      v-b-tooltip.hover.v-warning\r\n                                                      variant=\"flat-warning\"\r\n                                                      class=\"btn-icon mr-1\">\r\n                                                <feather-icon icon=\"ExternalLinkIcon\" />\r\n                                            </b-button>\r\n\r\n                                        </b-form-group>\r\n                                    </b-col>\r\n                                    <b-col lg=\"12\">\r\n                                        <b-form-group>\r\n                                            <label for=\"terms\">Terms & Conditions<span class=\"required\"> *</span></label>\r\n                                            <validation-provider #default=\"{ errors }\"\r\n                                                                 rules=\"required\"\r\n                                                                 name=\"TermsConditions\">\r\n                                                <quill-editor id=\"TermsConditions\"\r\n                                                              name=\"TermsConditions\"\r\n                                                              v-model=\"funnelDef.TermsConditions\"\r\n                                                              placeholder=\"Please Enter Terms Conditions\"\r\n                                                              :options=\"snowOption\"\r\n                                                              :class=\"errors.length > 0 ? 'error' : 'valid'\"\r\n                                                              :state=\"errors.length > 0 ? false : null\" />\r\n                                                <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                            </validation-provider>\r\n                                        </b-form-group>\r\n                                    </b-col>\r\n                                </b-row>\r\n                            </b-tab>\r\n                            <b-tab title=\"Privacy Policy\">\r\n                                <b-row>\r\n                                    <b-col lg=\"12\">\r\n                                        <b-form-group class=\"float-right\">\r\n                                            <b-button title=\"Copy Privacy Policy URL\"\r\n                                                      v-if=\"privacyUrl\"\r\n                                                      @click=\"copyPrivacyPolicyToClipboard\"\r\n                                                      v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                                      v-b-tooltip.hover.v-success\r\n                                                      variant=\"flat-success\"\r\n                                                      class=\"btn-icon mr-1\">\r\n                                                <feather-icon icon=\"CopyIcon\" />\r\n                                            </b-button>\r\n                                            \r\n\r\n                                            <b-button title=\"View Privacy Policy URL\"\r\n                                                      target=\"_blank\"\r\n                                                      v-if=\"privacyUrl\"\r\n                                                      :href=\"privacyUrl\"\r\n                                                      v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                                      v-b-tooltip.hover.v-warning\r\n                                                      variant=\"flat-warning\"\r\n                                                      class=\"btn-icon mr-1\">\r\n                                                <feather-icon icon=\"ExternalLinkIcon\" />\r\n                                            </b-button>\r\n\r\n                                        </b-form-group>\r\n                                        \r\n                                    </b-col>\r\n                                    <b-col lg=\"12\">\r\n                                        <b-form-group>\r\n                                            <label for=\"PrivacyPolicy\">Privacy Policy<span class=\"required\"> *</span></label>\r\n                                            <validation-provider #default=\"{ errors }\"\r\n                                                                 rules=\"required\"\r\n                                                                 name=\"Privacy Policy\">\r\n                                                <quill-editor id=\"PrivacyPolicy\"\r\n                                                              name=\"PrivacyPolicy\"\r\n                                                              v-model=\"funnelDef.PrivacyPolicy\"\r\n                                                              placeholder=\"Please Enter Privacy Policy\"\r\n                                                               :options=\"snowOption\"\r\n                                                              :class=\"errors.length > 0 ? 'error' : 'valid'\"\r\n                                                              :state=\"errors.length > 0 ? false : null\" />\r\n                                                <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                            </validation-provider>\r\n                                        </b-form-group>\r\n                                    </b-col>\r\n                                </b-row>\r\n                            </b-tab>\r\n                        </b-tabs>\r\n                    </form>\r\n                </validation-observer>\r\n\r\n                <slot></slot>\r\n                <template #modal-footer=\"{ cancel, ok }\">\r\n\r\n                    <b-button @click=\"closeTermsPrivacyPolicyModal\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"secondary\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"XCircleIcon\" size=\"18\" />\r\n                        Cancel\r\n                    </b-button>\r\n\r\n                    <b-button @click=\"updateTermPrivacyPolicy\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"primary\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"SaveIcon\" size=\"18\" />\r\n                        Save\r\n                    </b-button>\r\n                </template>\r\n            </b-modal>\r\n\r\n            <b-modal id=\"projectSettingsModal\"\r\n                     ref=\"modal\"\r\n                     title=\"Update Project Settings\"\r\n                     ok-title=\"Submit\"\r\n                     @ok=\"handleEmailFormOk\"\r\n                     centered\r\n                     size=\"lg\">\r\n                <validation-observer ref=\"projectSettingsRules\">\r\n                    <form ref=\"projectSettingsForm\"\r\n                          id=\"projectSettingsForm\"\r\n                          @submit.stop.prevent>\r\n                        <b-row v-if=\"funnelDef\">\r\n                            <b-col lg=\"12\">\r\n                                <b-form-group>\r\n\r\n                                    <label>Name<span class=\"required\"> *</span></label>\r\n\r\n                                    <validation-provider #default=\"{ errors }\"\r\n                                                         rules=\"required\"\r\n                                                         name=\"funnelDefName\">\r\n                                        <b-form-input id=\"funnelDefName\"\r\n                                                      name=\"funnelDefName\"\r\n                                                      v-model=\"funnelDef.Name\"\r\n                                                      placeholder=\"Please Enter Project Name\"\r\n                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                    </validation-provider>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\" v-if=\"UserFunnelFirstStep.TemplateTypeId != 22\">\r\n                                <b-form-group>\r\n                                    <div class=\"demo-inline-spacing\">\r\n                                        <label>PDF</label>\r\n                                        <b-form-radio id=\"PDFFile\"\r\n                                                      value=\"PDFFile\"\r\n                                                      v-model=\"PDFType\">\r\n                                            Upload File\r\n                                        </b-form-radio>\r\n                                        <br />\r\n                                        <b-form-radio id=\"ExternalURL\"\r\n                                                      value=\"ExternalURL\"\r\n                                                      v-model=\"PDFType\">\r\n                                            External File URL\r\n                                        </b-form-radio>\r\n                                    </div>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\" v-if=\"UserFunnelFirstStep.TemplateTypeId != 22\">\r\n                                <b-form-group>\r\n                                    <label>Upload PDF</label>\r\n                                    <b-form-file v-model=\"FunnelPDFFile\"\r\n                                                 :disabled=\"PDFType == 'ExternalURL'\"\r\n                                                 ref=\"file\"\r\n                                                 v-on:input=\"handleFileUpload()\"\r\n                                                 :max-size=\"10246332\"\r\n                                                 accept=\".pdf\"\r\n                                                 placeholder=\"Choose a file or drop it here...\"\r\n                                                 drop-placeholder=\"Drop file here...\" />\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\" v-if=\"UserFunnelFirstStep.TemplateTypeId != 22\">\r\n                                <b-form-group>\r\n                                    <label>External Path</label>\r\n                                    <b-form-input id=\"PDFFileURL\"\r\n                                                  :disabled=\"PDFType == 'PDFFile'\"\r\n                                                  name=\"PDFFileURL\"\r\n                                                  v-model=\"funnelDef.PDFFileURL\"\r\n                                                  placeholder=\"Give PDF URL...\" />\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\">\r\n                                <b-form-group>\r\n                                    <label for=\"funnelDefPath\">Path<span class=\"required\"> *</span></label>\r\n                                    <validation-provider #default=\"{ errors }\"\r\n                                                         rules=\"required\"\r\n                                                         name=\"funnelDefPath\">\r\n                                        <b-form-input id=\"funnelDefPath\"\r\n                                                      name=\"funnelDefPath\"\r\n                                                      v-model=\"funnelDef.Path\"\r\n                                                      placeholder=\"Please Enter Project Path\"\r\n                                                      :state=\"errors.length > 0 ? false : null\" />\r\n                                        <div class=\"popup-validation\"><small class=\"text-danger\">{{ errors[0] }}</small></div>\r\n                                    </validation-provider>\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\" v-if=\"UserFunnelFirstStep.TemplateTypeId != 22\">\r\n                                <b-form-group>\r\n                                    <div style=\"display:flex;\">\r\n                                        <label style=\"margin-right:1.2rem;\">Enable Double Opt-in?</label>\r\n                                        <b-form-checkbox v-model=\"funnelDef.IsTwoStepOptin\"\r\n                                                         value=\"true\">\r\n                                        </b-form-checkbox>\r\n                                    </div>\r\n                                </b-form-group>\r\n                            </b-col>\r\n                            <b-col lg=\"12\">\r\n                                <b-form-group>\r\n                                    <div style=\"display:flex;\">\r\n                                        <label style=\"margin-right:1.0rem;\">Enable Email Sending?</label>\r\n                                        <b-form-checkbox v-model=\"funnelDef.IsEmailSending\"\r\n                                                         value=\"true\">\r\n                                        </b-form-checkbox>\r\n\r\n                                        <feather-icon title=\"If 'Enable Email Sending' checkbox is checked, automation emails are activated.\" \r\n                                                      icon=\"InfoIcon\" size=\"18\"\r\n                                                      v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                                                      v-b-tooltip.hover.v-success\r\n                                                      class=\"ml-1 icon-color\"\r\n                                                      />\r\n                                    </div>\r\n                                </b-form-group>\r\n                            </b-col>\r\n                            <b-col lg=\"12\">\r\n                                <b-form-group>\r\n                                    <label>Favicon URL</label>\r\n                                    <b-form-input id=\"FaviconPath\"\r\n                                                  name=\"FaviconPath\"\r\n                                                  v-model=\"funnelDef.FaviconPath\"\r\n                                                  placeholder=\"Give Favicon Path...\" />\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\">\r\n                                <b-form-group>\r\n                                    <label>Header Tracking Code</label>\r\n                                    <b-form-input id=\"HeadTrackingCode\"\r\n                                                  name=\"HeadTrackingCode\"\r\n                                                  v-model=\"funnelDef.HeadTrackingCode\"\r\n                                                  placeholder=\"Give Head Tracking Code...\" />\r\n                                </b-form-group>\r\n                            </b-col>\r\n\r\n                            <b-col lg=\"12\">\r\n                                <b-form-group>\r\n                                    <label>Footer Tracking Code</label>\r\n                                    <b-form-input id=\"BodyTrackingCode\"\r\n                                                  name=\"BodyTrackingCode\"\r\n                                                  v-model=\"funnelDef.BodyTrackingCode\"\r\n                                                  placeholder=\"Give Body Tracking Code...\" />\r\n                                </b-form-group>\r\n                            </b-col>\r\n                        </b-row>\r\n                    </form>\r\n                </validation-observer>\r\n\r\n                <slot></slot>\r\n                <template #modal-footer=\"{ cancel, ok }\">\r\n\r\n                    <b-button @click=\"closeProjectSettingsModal\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"secondary\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"XCircleIcon\" size=\"18\" />\r\n                        Cancel\r\n                    </b-button>\r\n\r\n                    <b-button @click=\"updateProjectSettings\"\r\n                              v-ripple.400=\"'rgba(255, 255, 255, 0.15)'\"\r\n                              variant=\"primary\"\r\n                              type=\"button\">\r\n                        <feather-icon icon=\"SaveIcon\" size=\"18\" />\r\n                        Save\r\n                    </b-button>\r\n                </template>\r\n            </b-modal>\r\n\r\n        </b-overlay>\r\n    </section>\r\n    \r\n</template>\r\n\r\n\r\n<script>\r\n    import BCardCode from \"@core/components/b-card-code\";\r\n    import {\r\n        BCard,\r\n        BCardHeader,\r\n        BCardBody,\r\n        BCardImg,\r\n        BListGroup,\r\n        BListGroupItem,\r\n        BCardFooter,\r\n        BImg,\r\n        BRow,\r\n        BCol,\r\n        BCardText,\r\n        BCardTitle,\r\n        BCardSubTitle,\r\n        BLink,\r\n        BButton,\r\n        BModal,\r\n        VBModal,\r\n        BFormInput,\r\n        BForm,\r\n        BFormRow,\r\n        BFormValidFeedback,\r\n        BFormInvalidFeedback,\r\n        BFormGroup,\r\n        BTabs,\r\n        BTab,\r\n        BTable,\r\n        BFormSelect,\r\n        BFormCheckbox,\r\n        BFormRadio,\r\n        BFormFile,\r\n        BInputGroup,\r\n        BInputGroupPrepend,\r\n        BInputGroupAppend,\r\n        BFormTextarea,\r\n        BOverlay,\r\n        BPagination,\r\n        BAlert,\r\n        BBadge,\r\n        BBreadcrumb,\r\n        BBreadcrumbItem,\r\n        VBTooltip,\r\n    } from \"bootstrap-vue\";\r\n    import { ValidationProvider, ValidationObserver } from \"vee-validate\";\r\n    import {\r\n        required,\r\n        email,\r\n        confirmed,\r\n        url,\r\n        between,\r\n        alpha,\r\n        integer,\r\n        password,\r\n        min,\r\n        digits,\r\n        alphaDash,\r\n        length,\r\n        numer\r\n    } from \"@validations\";\r\n    import { $themeConfig } from \"@themeConfig\";\r\n    import { VueGoodTable } from \"vue-good-table\";\r\n    import Ripple from \"vue-ripple-directive\";\r\n    import jwt from \"@/auth/jwt/useJwt\";\r\n    import { quillEditor } from \"vue-quill-editor\";\r\n    import clipboard from \"v-clipboard\";\r\n    import ToastificationContent from \"@core/components/toastification/ToastificationContent.vue\";\r\n    import axis from \"axios\";\r\n\r\n    import { extend } from 'vee-validate';\r\n    extend('required', {\r\n        message: 'This Field is required',\r\n    });\r\n    extend('email', {\r\n        message: 'Invalid email address',\r\n    });\r\n\r\n    extend('min_One', {\r\n        message: 'Must be Greater than or Equal to 1 Positive Number',\r\n        validate: value => {\r\n            var strongRegex = new RegExp(\"^[1-9][0-9]*$\");\r\n            return strongRegex.test(value);\r\n        }\r\n    });\r\n\r\n    extend('min_One_decimal', {\r\n        message: 'Must be Greater than or Equal to 1',\r\n        validate: value => {\r\n            var strongRegex = new RegExp(\"^(?=.*[1-9])[0-9]*[.]?[0-9]{1,2}$\");\r\n            return strongRegex.test(value);\r\n        }\r\n    });\r\n\r\n    //\r\n\r\n    export default {\r\n        metaInfo: {\r\n            title: 'Landingly | Project Detail'\r\n        },\r\n        components: {\r\n            BCardTitle,\r\n            BCardSubTitle,\r\n            BCardCode,\r\n            BCardText,\r\n            BCard,\r\n            BCardHeader,\r\n            BListGroup,\r\n            BListGroupItem,\r\n            BCardFooter,\r\n            BRow,\r\n            BCol,\r\n            BCardBody,\r\n            BCardImg,\r\n            BLink,\r\n            BModal,\r\n            VBModal,\r\n            BButton,\r\n            BFormInput,\r\n            BForm,\r\n            BFormRow,\r\n            BFormValidFeedback,\r\n            BFormInvalidFeedback,\r\n            BFormGroup,\r\n            BTabs,\r\n            BTab,\r\n            BInputGroup,\r\n            BInputGroupPrepend,\r\n            BInputGroupAppend,\r\n            BFormTextarea,\r\n            VueGoodTable,\r\n            BTable,\r\n            BFormSelect,\r\n            BFormCheckbox,\r\n            BFormRadio,\r\n            quillEditor,\r\n            ValidationProvider,\r\n            ValidationObserver,\r\n            BOverlay,\r\n            BPagination,\r\n            BAlert,\r\n            BFormFile,\r\n            BBadge,\r\n            BImg,\r\n            BBreadcrumb, BBreadcrumbItem,\r\n        },\r\n        data() {\r\n            return {\r\n                loading: false,\r\n                isloading: true,\r\n\r\n                variant: \"light\",\r\n                opacity: 0.85,\r\n                blur: \"2px\",\r\n\r\n                error: null,\r\n                activeTab: \"\",\r\n\r\n                meta: {\r\n                    pageTitle: 'Project Detail 12',\r\n                    breadcrumb: [\r\n                        {\r\n                            text: 'Projects',\r\n                            to: '/projects'\r\n                        },\r\n                        //{\r\n                        //    text: 'Project Detail',\r\n                        //    active: true\r\n                        //},\r\n                    ],\r\n                },\r\n                breadcrumbActive: true,\r\n\r\n                WebAPIURL: $themeConfig.app.apiURL,\r\n                UserDomainURL: $themeConfig.app.UserDomainURL,\r\n                SubDomainURL: null,\r\n                funnelDef: null,\r\n                PaymentMethodId: 0,\r\n                funnelName: null,\r\n                funnelPath: null,\r\n                termConditionsUrl: null,\r\n                privacyUrl: null,\r\n                isProjectCompleted: false,\r\n                UserFunnelSteps: null,\r\n                CheckOutPage: null,\r\n                UserFunnelFirstStep: null,\r\n                showFirstStep: true,\r\n                UserFunnelSecondStep: null,\r\n                loadThankuTemplates: false,\r\n                showSecondStep: false,\r\n                CurrFunnelStepURL: \"\",\r\n                StepCount: 0,\r\n                FunnelStep: null,\r\n                CurrentStepId: 0,\r\n                CurrUser: JSON.parse(localStorage.getItem(\"User_Name\")),\r\n                userFunnelId: this.$route.params.userfunnelid,\r\n                CurrStepURL: null,\r\n\r\n                CustomUserId: null,\r\n                randomStr: null,\r\n\r\n                CurrStepID: null,\r\n                urlState: null,\r\n                VariationId: null,\r\n                CustomDomainId: null,\r\n                firstStepURL: \"\",\r\n                secondStepURL: \"\",\r\n                firstStepPageURL: \"\",\r\n                secondStepPageURL: \"\",\r\n                currIndexSettings: null,\r\n                FunnelPDFFile: null,\r\n                PDFType: \"PDFFile\",\r\n\r\n                StepProducts: null,\r\n                ProductDetail: null,\r\n                selected: null,\r\n                paymentOptions: null,\r\n                Subscription: false,\r\n                IsTrial: false,\r\n                EmailEnabled: false,\r\n\r\n                filesDir: $themeConfig.app.UserTemplateFilesDir,\r\n                userFilesDir: $themeConfig.app.UserDomainFilesDir,\r\n                Templates: null,\r\n                SalePageTemplates: null,\r\n                SalePageTemplateId: null,\r\n                SalePageTemplateName: null,\r\n                SalePageVariation: null,\r\n                PaymentMethod: null,\r\n                CheckoutTempId: null,\r\n\r\n                autoResponders: null,\r\n                showGetResponse: false,\r\n                showSendLane: false,\r\n                showMailChimp: false,\r\n                showAWeber: false,\r\n\r\n                lstAWeberAccount: null,\r\n                lstMailChimpAccount: null,\r\n                lstResponseAccount: null,\r\n                lstSendLaneAccount: null,\r\n\r\n                getResponseCode: \"\",\r\n                getResponseState: \"\",\r\n                mailChimpCode: \"\",\r\n                SendLaneSubDomain: \"\",\r\n                SendLaneAPIKey: \"\",\r\n                SendLaneHashKey: \"\",\r\n                aWebwerCode: \"\",\r\n                aWebwerState: \"\",\r\n\r\n                webFormCode: null,\r\n\r\n                StepFunnelEmails: null,\r\n                Delay: 0,\r\n                formaction: \"\",\r\n                StepFunnelEmailDetail: null,\r\n                TestToEmail: \"\",\r\n\r\n                loginEmail: \"\",\r\n                loginPassword: \"\",\r\n                sendAutomationEmails: false,\r\n\r\n                StepDoubleOptin: null,\r\n                StepFunnelDoubleOptinDetail: null,\r\n                UserFromEmail: null,\r\n                UserSmtpConfiguration: null,\r\n                hideDraftBtn: false,\r\n\r\n                snowOption: {\r\n                    theme: \"snow\",\r\n                    placeholder: \"Please enter it here...\",\r\n                    modules: {\r\n                        toolbar: {\r\n                            container: [\r\n                                [{ placeholder: [\"[GuestName]\", \"[HotelName]\"] }], // my custom dropdown\r\n                                [\"bold\", \"italic\", \"underline\", \"strike\"], //??bold, italic, underline, strikethrough\r\n                                [\"blockquote\"], // reference\r\n                                [{ header: 1 }, { header: 2 }], //??title, the form of the key - value pair; 1, 2 indicates the font size\r\n                                [{ list: \"ordered\" }, { list: \"bullet\" }], // List\r\n                                [{ indent: \"-1\" }, { indent: \"+1\" }], // Indent\r\n                                [{ direction: \"rtl\" }], //??text direction\r\n                                [{ size: [\"small\", false, \"large\", \"huge\"] }], // font size\r\n                                [{ header: [1, 2, 3, 4, 5, 6, false] }], //??several levels of title\r\n                                [{ color: [] }, { background: [] }], // font color, font background color\r\n                                [{ font: [] }], //??font\r\n                                [{ align: [] }], //??alignment\r\n                                [\"clean\"], //??clear font style\r\n                                [\"link\"],\r\n                                [\"image\"], //Upload images, upload videos\r\n                            ],\r\n                            handlers: {\r\n                                placeholder: function (value) {\r\n                                    if (value) {\r\n                                        const cursorPosition = this.quill.getSelection().index;\r\n                                        this.quill.insertText(cursorPosition, value);\r\n                                        this.quill.setSelection(cursorPosition + value.length);\r\n                                    }\r\n                                },\r\n                                //image: this.imageHandler\r\n                            },\r\n                        },\r\n                    },\r\n                },\r\n                content: \"\",\r\n\r\n                prodTablefields: [\r\n                    {\r\n                        key: \"ProductName\",\r\n                        label: \"Product Name\",\r\n                        sortable: true,\r\n                    },\r\n                    {\r\n                        key: \"ProductPrice\",\r\n                        label: \"Product Price ($)\",\r\n                        sortable: true,\r\n                    },\r\n                    {\r\n                        key: \"PaymentMethodName\",\r\n                        label: \"Payment Method\",\r\n                        sortable: true,\r\n                    },\r\n                    {\r\n                        key: \"IsSandBox\",\r\n                        label: \"Is SandBox\",\r\n                        sortable: true,\r\n                    },\r\n                    {\r\n                        key: \"Id\",\r\n                        label: \"Actions\",\r\n                        sortable: false,\r\n                    },\r\n                ],\r\n                prodPageLength: 10,\r\n                prodSearchTerm: \"\",\r\n\r\n                emailTablefields: [\r\n                    {\r\n                        key: \"Subject\",\r\n                        label: \"Subject\",\r\n                        sortable: true,\r\n                    },\r\n                    {\r\n                        key: \"EmailDeliveryCount\",\r\n                        label: \"Sent\",\r\n                        sortable: true,\r\n                    },\r\n                    {\r\n                        key: \"EmailOpenCount\",\r\n                        label: \"OpenRate\",\r\n                        sortable: true,\r\n                    },\r\n                    {\r\n                        key: \"EmailClickCount\",\r\n                        label: \"ClickRate\",\r\n                        sortable: true,\r\n                    },\r\n                    {\r\n                        key: \"Status\",\r\n                        label: \"Status\",\r\n                        sortable: true,\r\n                    },\r\n                    {\r\n                        key: \"Id\",\r\n                        label: \"Actions\",\r\n                        sortable: false,\r\n                    },\r\n                ],\r\n                emailPageLength: 10,\r\n                emailSearchTerm: \"\",\r\n\r\n                perPage: 50,\r\n                pageOptions: [50, 100],\r\n                totalRows: 1,\r\n                currentPage: 1,\r\n                sortBy: \"\",\r\n                sortDesc: false,\r\n                sortDirection: \"asc\",\r\n                filter: null,\r\n                filterOn: [],\r\n                infoModal: {\r\n                    id: \"info-modal\",\r\n                    title: \"\",\r\n                    content: \"\",\r\n                },\r\n            };\r\n        },\r\n        directives: {\r\n            \"b-modal\": VBModal,\r\n            'b-tooltip': VBTooltip,\r\n            Ripple,\r\n        },\r\n        created() {\r\n            var subDomain = jwt.getSubDomain();\r\n            //if (subDomain == null || subDomain == \"\" || subDomain == 'undefined') {\r\n            //    this.$router.replace('/login')\r\n            //}\r\n            //else {\r\n            if (this.UserDomainURL.includes(\"localhost\")) {\r\n                this.SubDomainURL = this.UserDomainURL;\r\n            }\r\n            else {\r\n                subDomain = subDomain.replace('\"', '');\r\n                this.SubDomainURL = this.UserDomainURL.replace('https://', 'https://' + subDomain + '.');\r\n            }\r\n            if (this.$route.name == \"getresponse-account\") {\r\n                this.getResponseCode = this.$route.query.code;\r\n                this.getResponseState = this.$route.query.state;\r\n                this.verifyGetResponseAccount();\r\n            } else if (this.$route.name == \"mailchimp-account\") {\r\n                this.mailChimpCode = this.$route.query.code;\r\n                // console.log('route:', this.$route);\r\n                this.verifyMailChimpAccount();\r\n            } else if (this.$route.name == \"aweber-account\") {\r\n                this.aWebwerCode = this.$route.query.code;\r\n                this.aWebwerState = this.$route.query.state;\r\n                this.verifyAWeberAccount();\r\n            } else if (this.$route.name == \"project-detail\") {\r\n                this.fetchProjectsData();\r\n\r\n            }\r\n\r\n            //}\r\n        },\r\n        beforeCreate() {\r\n            \r\n            //else {\r\n            //    if (this.UserDomainURL.includes(\"localhost\")) {\r\n            //        this.SubDomainURL = this.UserDomainURL;\r\n            //    }\r\n            //    else {\r\n            //        subDomain = subDomain.replace('\"', '');\r\n            //        this.SubDomainURL = this.UserDomainURL.replace('https://', 'https://' + subDomain + '.');\r\n            //    }\r\n            //    if (this.$route.name == \"getresponse-account\") {\r\n            //        this.getResponseCode = this.$route.query.code;\r\n            //        this.getResponseState = this.$route.query.state;\r\n            //        this.verifyGetResponseAccount();\r\n            //    } else if (this.$route.name == \"mailchimp-account\") {\r\n            //        this.mailChimpCode = this.$route.query.code;\r\n            //        console.log('route:', this.$route);\r\n            //        this.verifyMailChimpAccount();\r\n            //    } else if (this.$route.name == \"aweber-account\") {\r\n            //        this.aWebwerCode = this.$route.query.code;\r\n            //        this.aWebwerState = this.$route.query.state;\r\n            //        this.verifyAWeberAccount();\r\n            //    } else if (this.$route.name == \"project-detail\") {\r\n            //        this.fetchProjectsData();\r\n\r\n            //    }\r\n            //}\r\n        },\r\n        watch: {\r\n            $route: \"fetchProjectsData\",\r\n        },\r\n        computed: {\r\n\r\n        },\r\n\r\n        mounted: function (e) {\r\n            if (this.StepFunnelEmails != null) {\r\n                this.totalRows = this.StepFunnelEmails.length;\r\n            } else {\r\n                this.totalRows = 0;\r\n            }\r\n            const viewportMeta = document.createElement('meta');\r\n            viewportMeta.name = 'viewport';\r\n            viewportMeta.content = 'width=device-width, initial-scale=1';\r\n            document.head.appendChild(viewportMeta);\r\n        },\r\n\r\n        methods: {\r\n            imageHandler() {\r\n                this.selectLocalImage();\r\n                // Implement your image upload logic here\r\n                // You can open a file picker dialog, upload the image, and insert it into the editor\r\n            },\r\n\r\n            selectLocalImage() {\r\n                const input = document.createElement('input');\r\n                input.setAttribute('type', 'file');\r\n                input.click();\r\n\r\n                // Listen upload local image and save to server\r\n                input.onchange = () => {\r\n                    const file = input.files[0];\r\n\r\n                    // file type is only image.\r\n                    if (/^image\\//.test(file.type)) {\r\n                        console.warn('images upload.');\r\n                        //this.saveToServer(file);\r\n                    } else {\r\n                        console.warn('You could only upload images.');\r\n                    }\r\n                };\r\n            },\r\n\r\n            //saveToServer(file: File) {\r\n            //    const fd = new FormData();\r\n            //    fd.append('image', file);\r\n\r\n            //    const xhr = new XMLHttpRequest();\r\n            //    xhr.open('POST', 'http://localhost:3000/upload/image', true);\r\n            //    xhr.onload = () => {\r\n            //        if (xhr.status === 200) {\r\n            //            // this is callback data: url\r\n            //            const url = JSON.parse(xhr.responseText).data;\r\n            //            this.insertToEditor(url);\r\n            //        }\r\n            //    };\r\n            //    xhr.send(fd);\r\n            //},\r\n\r\n            //insertToEditor(url: string) {\r\n            //    // push image url to rich editor.\r\n            //    //const range = editor.getSelection();\r\n            //    //editor.insertEmbed(range.index, 'image', `http://localhost:9000${url}`);\r\n            //},\r\n\r\n            updateTemplates() {\r\n\r\n                this.showFirstStep = false;\r\n                this.showSecondStep = true;\r\n\r\n                var self = this;\r\n                this.loading = true;\r\n                setTimeout(function () {\r\n                    // console.log(self.$refs.refSecondStep);\r\n                    self.$refs.refSecondStep.$el.click();\r\n\r\n                }, 500);\r\n\r\n            },\r\n\r\n            info(item, index, button) {\r\n                this.infoModal.title = `Row index: ${index}`;\r\n                this.infoModal.content = JSON.stringify(item, null, 2);\r\n                this.$root.$emit(\"bv::show::modal\", this.infoModal.id, button);\r\n            },\r\n\r\n            resetInfoModal() {\r\n                this.infoModal.title = \"\";\r\n                this.infoModal.content = \"\";\r\n            },\r\n\r\n            onFiltered(filteredItems) {\r\n                // Trigger pagination to update the number of buttons/pages due to filtering\r\n                this.totalRows = filteredItems.length;\r\n                this.currentPage = 1;\r\n            },\r\n\r\n            checkFormValidity() {\r\n                const valid = this.$refs.form.checkValidity();\r\n                this.urlState = valid;\r\n                return valid;\r\n            },\r\n\r\n            resetModal() {\r\n                this.CurrStepURL = \"\";\r\n                this.urlState = null;\r\n            },\r\n            resetTestEmailModal() {\r\n                this.TestToEmail = null;\r\n            },\r\n\r\n            handleOk(bvModalEvt) {\r\n                bvModalEvt.preventDefault();\r\n                this.handleSubmit();\r\n            },\r\n\r\n            handleFormOk(bvModalEvt) {\r\n                bvModalEvt.preventDefault();\r\n                this.saveProduct();\r\n            },\r\n\r\n            closeProductModal() {\r\n                this.$bvModal.hide(\"addEditProductsModal\");\r\n            },\r\n\r\n            handleEmailFormOk(bvModalEvt) {\r\n                bvModalEvt.preventDefault();\r\n                this.saveEmail();\r\n            },\r\n\r\n            HandleTermsPrivacyPolicyOk(bvModalEvt) {\r\n                bvModalEvt.preventDefault();\r\n                //this.saveEmail();\r\n            },\r\n\r\n            handleDoubleOptinForm(bvModalEvt) {\r\n                bvModalEvt.preventDefault();\r\n                this.saveDoubleOptinEmail();\r\n            },\r\n\r\n            handleSubmit: async function () {\r\n                const access_token = await jwt.getToken();\r\n                this.$refs.CurrStepURLFormRules.validate().then((success) => {\r\n                    if (success) {\r\n                        const self = this;\r\n\r\n                        var axios = require(\"axios\");\r\n                        var qs = require(\"qs\");\r\n\r\n                        var data = qs.stringify({\r\n                            StepId: this.CurrStepID,\r\n                            StepUrl: this.CurrStepURL,\r\n                            CustomDomainId: this.CustomDomainId,\r\n                            VariationId: this.VariationId,\r\n                            StepName: \"\",\r\n                        });\r\n                        var config = {\r\n                            method: \"post\",\r\n                            url:\r\n                                \"\" +\r\n                                this.WebAPIURL +\r\n                                \"/api/projects/UpdateFunnelStepSettings?\" +\r\n                                data,\r\n                            headers: {\r\n                                Authorization: \"bearer \" + access_token,\r\n                            },\r\n                            data: data,\r\n                        };\r\n\r\n                        axios(config)\r\n                            .then(function (response) {\r\n                                //console.log(response.data);\r\n                                self.$nextTick(() => {\r\n                                    self.$bvModal.hide(\"stepSettingsModal\");\r\n                                });\r\n                                if (self.currIndexSettings == 0) {\r\n                                    self.firstStepPageURL = self.firstStepPageURL.replace(\r\n                                        self.firstStepURL,\r\n                                        self.CurrStepURL\r\n                                    );\r\n                                    self.firstStepURL = self.CurrStepURL;\r\n                                } else {\r\n                                    self.secondStepPageURL = self.secondStepPageURL.replace(\r\n                                        self.secondStepURL,\r\n                                        self.CurrStepURL\r\n                                    );\r\n                                    self.secondStepURL = self.CurrStepURL;\r\n                                }\r\n                            })\r\n                            .catch(function (error) {\r\n                                // console.log(error);\r\n                            });\r\n                    }\r\n                })\r\n            },\r\n\r\n            OpenSettingsModal: function (e) {\r\n                const stepurl = e.currentTarget.getAttribute(\"data-stepurl\");\r\n                const stepid = e.currentTarget.getAttribute(\"data-stepid\");\r\n                const variationid = e.currentTarget.getAttribute(\"data-variationid\");\r\n                const currIndex = e.currentTarget.getAttribute(\"data-currIndex\"); //data-currIndex\r\n                this.currIndexSettings = currIndex;\r\n\r\n                if (variationid > 0) {\r\n                    this.CustomDomainId = e.currentTarget.getAttribute(\r\n                        \"data-customdomainvariationid\"\r\n                    );\r\n                } else {\r\n                    this.CustomDomainId = e.currentTarget.getAttribute(\r\n                        \"data-customdomainid\"\r\n                    );\r\n                }\r\n                this.VariationId = variationid;\r\n                this.CurrStepURL = stepurl;\r\n                this.CurrStepID = stepid;\r\n            },\r\n\r\n            LoadSalePageTemplates: async function (e) {\r\n                this.loading = true;\r\n                var self = this;\r\n\r\n                const isloaded = e.currentTarget.getAttribute(\"data-isloaded\");\r\n                const funnelId = this.userFunnelId;\r\n                const Order = e.currentTarget.getAttribute(\"data-order\");\r\n                const TemplateTypeId = e.currentTarget.getAttribute(\"data-temptypeid\");\r\n                const TemplateId = null;\r\n                const UserStepId = e.currentTarget.getAttribute(\"data-userstepid\");\r\n\r\n                const access_token = await jwt.getToken();\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n\r\n                var data = qs.stringify({\r\n                    TemplateTypeId: TemplateTypeId,\r\n                    Order: Order,\r\n                    TemplateId: TemplateId,\r\n                    funnelId: funnelId,\r\n                    UserStepId: UserStepId,\r\n                });\r\n                var config = {\r\n                    method: \"get\",\r\n                    url: \"\" + this.WebAPIURL + \"/api/projects/GetTemplates?\" + data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        self.SalePageTemplates = response.data.Templates;\r\n                        self.loading = false;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            LoadTemplates: async function (e) {\r\n                this.loading = true;\r\n                var self = this;\r\n\r\n                const isloaded = e.currentTarget.getAttribute(\"data-isloaded\");\r\n                const funnelId = this.userFunnelId;\r\n                const Order = e.currentTarget.getAttribute(\"data-order\");\r\n                const TemplateTypeId = e.currentTarget.getAttribute(\"data-temptypeid\");\r\n                const TemplateId = null;\r\n                const UserStepId = e.currentTarget.getAttribute(\"data-userstepid\");\r\n\r\n                console.log(\"TemplateTypeId : \" + TemplateTypeId);\r\n\r\n                const access_token = await jwt.getToken();\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n\r\n                var data = qs.stringify({\r\n                    TemplateTypeId: TemplateTypeId,\r\n                    Order: Order,\r\n                    TemplateId: TemplateId,\r\n                    funnelId: funnelId,\r\n                    UserStepId: UserStepId,\r\n                });\r\n                var config = {\r\n                    method: \"get\",\r\n                    url: \"\" + this.WebAPIURL + \"/api/projects/GetTemplates?\" + data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        //console.log(JSON.stringify(response.data));\r\n                        self.Templates = response.data.Templates;\r\n                        self.loading = false;\r\n                        // this.CurrStepID = UserStepId;\r\n                        if (TemplateTypeId == 22) {\r\n                            this.getStepProducts();\r\n                        }\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            UseThisTemplate: async function (e) {\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                const tabindex = e.currentTarget.getAttribute(\"data-index\");\r\n                const userstepid = e.currentTarget.getAttribute(\"data-userstepid\");\r\n                const parentfolder = e.currentTarget.getAttribute(\"data-parentfolder\");\r\n                const mainfolder = e.currentTarget.getAttribute(\"data-mainfolder\");\r\n                const childfolder = e.currentTarget.getAttribute(\"data-childfolder\");\r\n                const templatetypeid = e.currentTarget.getAttribute(\r\n                    \"data-templatetypeid\"\r\n                );\r\n                const funnelid = e.currentTarget.getAttribute(\"data-funnelid\");\r\n                const templatefilename = e.currentTarget.getAttribute(\r\n                    \"data-templatefilename\"\r\n                );\r\n                const TemplateId = e.currentTarget.getAttribute(\"data-value\");\r\n                const currenttabid = e.currentTarget.getAttribute(\"data-currenttabid\");\r\n                const TemplateFunnelId = e.currentTarget.getAttribute(\r\n                    \"data-TemplateFunnelId\"\r\n                );\r\n\r\n                const access_token = await jwt.getToken();\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n\r\n                var data = qs.stringify({\r\n                    CurrentStepId: currenttabid,\r\n                    UserStepId: userstepid,\r\n                    TemplateId: TemplateId,\r\n                    FunnelId: funnelid,\r\n                    StepName: \"\",\r\n                    StepUrl: \"\",\r\n                    TemplateFileName: templatefilename,\r\n                    TemplateTypeId: templatetypeid,\r\n                    IsUserTemplate: false,\r\n                    TemplateFunnelId: TemplateFunnelId,\r\n                    CustomDomainId: null,\r\n                    SectionId: null,\r\n                    DelayDays: null,\r\n                    MainFoder: mainfolder,\r\n                    ParentFolder: parentfolder,\r\n                    ChildFolder: childfolder,\r\n                    VariationCount: 0,\r\n                    Order: \"1\",\r\n                    TemplateName: \"\",\r\n                    IsBasicUser: false,\r\n                });\r\n                var config = {\r\n                    method: \"post\",\r\n                    url:\r\n                        \"\" +\r\n                        this.WebAPIURL +\r\n                        \"/api/projects/UpdateTemplateAgainstStep?\" +\r\n                        data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n\r\n                        // if (response.data.length > 1) {\r\n                        self.UserFunnelSteps = response.data;\r\n                        self.UserFunnelFirstStep = response.data[0];\r\n                        self.UserFunnelSecondStep = response.data[1];\r\n\r\n                        if (tabindex != null && tabindex == 0) {\r\n                            self.showFirstStep = false;\r\n                            self.showSecondStep = true;\r\n                            self.$refs.refSecondStep.$el.click();\r\n                        }\r\n                        else if (tabindex != null && tabindex == 1) {\r\n                            self.showFirstStep = true;\r\n                            self.showSecondStep = false;\r\n                            self.$refs.refFirstStep.$el.click();\r\n                        }\r\n                        self.Templates = null;\r\n                        //}\r\n                        //else {\r\n                        //    self.CheckOutPage = response.data[0];\r\n                        //    self.SalePageTemplates = null;\r\n                        //}\r\n                        self.loading = false;\r\n\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            rndStr(len) {\r\n                let text = \"\"\r\n                let chars = \"abcdefghijklmnopqrstuvwxyz0123456789\"\r\n\r\n                for (let i = 0; i < len; i++) {\r\n                    text += chars.charAt(Math.floor(Math.random() * chars.length))\r\n                }\r\n\r\n                return text\r\n            },\r\n\r\n            fetchProjectsData: async function () {\r\n                this.error = this.projects = null;\r\n                var self = this;\r\n                this.loading = true;\r\n                var axios = require(\"axios\");\r\n                const access_token = await jwt.getToken();\r\n                /*alert(access_token)*/\r\n                var headers = {\r\n                    Authorization: \"bearer \" + access_token,\r\n                };\r\n\r\n                axios\r\n                    .get(\r\n                        \"\" +\r\n                        this.WebAPIURL +\r\n                        \"/api/projects/ProjectDetail?UserFunnelId=\" +\r\n                        this.userFunnelId +\r\n                        \"&stepId=\" + self.CurrentStepId + \"\",\r\n                        { headers }\r\n                    )\r\n                    .then(function (response) {\r\n                        self.CurrentStepId = 0;\r\n                        self.UserFunnelSteps = response.data.UserFunnelSteps;\r\n                        self.UserFunnelFirstStep = response.data.UserFunnelSteps[0];\r\n                        self.UserFunnelSecondStep = response.data.UserFunnelSteps[1];\r\n                        // self.CheckOutPage = response.data.CheckOutPage;\r\n\r\n                        self.StepFunnelEmails = response.data.FunnelEmails;\r\n                        self.CustomUserId = response.data.CustomUserId;\r\n                        self.randomStr = self.rndStr(10);\r\n\r\n                        self.StepDoubleOptin = response.data.DoubleOptinEmail;\r\n                        self.UserFromEmail = response.data.UserFromEmail;\r\n                        self.UserSmtpConfiguration = response.data.lstFunnelUserSmtpConfiguration;\r\n                        //console.log(\"self.randomStr::\" + self.randomStr)\r\n                        // console.log(response.data.Templates);\r\n                        self.Templates = response.data.Templates;\r\n                        self.autoResponders = response.data.AutoResponderList;\r\n                        //console.log(\"autoResponders:: \" + self.autoResponders.length);\r\n                        self.loading = false;\r\n\r\n                        self.webFormCode = response.data.WebFormCode;\r\n\r\n                        self.funnelDef = response.data.Funnel;\r\n                        // console.log(response.data.Funnel);\r\n                        self.funnelName = response.data.FunnelName;\r\n                        self.funnelPath = response.data.FunnelPath;\r\n\r\n                        self.termConditionsUrl = response.data.FunnelPath + \"/terms\";\r\n                        self.privacyUrl = response.data.FunnelPath + \"/privacy\";\r\n\r\n                        var valObj = response.data.UserFunnelSteps.filter(function (elem) {\r\n                            if (elem.UserFunnelStepVariationId > 0)\r\n                                return elem;\r\n                        });\r\n\r\n                        if (valObj.length > 0) {\r\n                            self.isProjectCompleted = true;\r\n                        } else {\r\n                            self.isProjectCompleted = false;\r\n                        }\r\n\r\n                        const funnelStep = response.data.UserFunnelSteps[0];\r\n\r\n                        self.firstStepURL = response.data.UserFunnelSteps[0].FunnelStepURL;\r\n                        self.secondStepURL = response.data.UserFunnelSteps[1].FunnelStepURL;\r\n\r\n                        self.firstStepPageURL =\r\n                            response.data.UserFunnelSteps[0].FunnelStepPageURL;\r\n                        self.secondStepPageURL =\r\n                            response.data.UserFunnelSteps[1].FunnelStepPageURL;\r\n\r\n                        self.lstAWeberAccount = response.data.lstAWeberAccount;\r\n                        self.lstMailChimpAccount = response.data.lstMailChimpAccount;\r\n                        self.lstResponseAccount = response.data.lstResponseAccount;\r\n                        self.lstSendLaneAccount = response.data.lstSendLaneAccount;\r\n\r\n                        if (\r\n                            response.data.UserFunnelSteps[0].AutoResponderID ==\r\n                            $themeConfig.app.GetResponse\r\n                        ) {\r\n                            self.showGetResponse = true;\r\n                            self.showSendLane = false;\r\n                            self.showMailChimp = false;\r\n                            self.showAWeber = false;\r\n                        }\r\n                        if (\r\n                            response.data.UserFunnelSteps[0].AutoResponderID ==\r\n                            $themeConfig.app.SendLane\r\n                        ) {\r\n                            self.showGetResponse = false;\r\n                            self.showSendLane = true;\r\n                            self.showMailChimp = false;\r\n                            self.showAWeber = false;\r\n                        }\r\n                        if (\r\n                            response.data.UserFunnelSteps[0].AutoResponderID ==\r\n                            $themeConfig.app.MailChimp\r\n                        ) {\r\n                            self.showGetResponse = false;\r\n                            self.showSendLane = false;\r\n                            self.showMailChimp = true;\r\n                            self.showAWeber = false;\r\n                        }\r\n                        if (\r\n                            response.data.UserFunnelSteps[0].AutoResponderID ==\r\n                            $themeConfig.app.AWeber\r\n                        ) {\r\n                            self.showGetResponse = false;\r\n                            self.showSendLane = false;\r\n                            self.showMailChimp = false;\r\n                            self.showAWeber = true;\r\n                        }\r\n\r\n                        self.CurrStepID = funnelStep.Id;\r\n                        if (funnelStep.TemplateTypeId == 22) {\r\n                            self.getStepProducts();\r\n\r\n                        }\r\n\r\n                        if (self.UserFunnelFirstStep != null && self.UserFunnelFirstStep.UserFunnelStepVariationId > 0 && (self.UserFunnelSecondStep.UserFunnelStepVariationId == null || self.UserFunnelSecondStep.UserFunnelStepVariationId < 0)) {\r\n                            self.loadThankuTemplates = true;\r\n\r\n                            self.updateTemplates();\r\n                        }\r\n                        else {\r\n                            self.showFirstStep = true;\r\n                            self.showSecondStep = false;\r\n                            // self.$refs.refFirstStep.$el.click();\r\n                        }\r\n                        //const placeholderPickerItems = Array.prototype.slice.call(document.querySelectorAll('.ql-placeholder .ql-picker-item'));\r\n\r\n                        //placeholderPickerItems.forEach(item => item.textContent = item.dataset.value);\r\n\r\n                        //document.querySelector('.ql-placeholder .ql-picker-label').innerHTML\r\n                        //    = 'Insert placeholder' + document.querySelector('.ql-placeholder .ql-picker-label').innerHTML;\r\n                    })\r\n                    .catch(function (error) {\r\n                        self.error = error;\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            getStepProducts: async function () {\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    UserStepId: this.CurrStepID,\r\n                });\r\n                var config = {\r\n                    method: \"get\",\r\n                    url:\r\n                        \"\" + this.WebAPIURL + \"/api/projects/GetFunnelStepProducts?\" + data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        //console.log(response.data);\r\n                        if (response.data != null && response.data.length > 0) {\r\n                            self.StepProducts = response.data;\r\n                            self.items = response.data;\r\n                        } else {\r\n                            self.StepProducts = null;\r\n                        }\r\n                        self.loading = false;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            addEditProduct: async function (e) {\r\n                const prodId = e.currentTarget.getAttribute(\"data-id\");\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    FunnelStepId: this.CurrStepID,\r\n                    UserFunnelId: this.userFunnelId,\r\n                    Id: prodId,\r\n                });\r\n                var config = {\r\n                    method: \"get\",\r\n                    url: \"\" + this.WebAPIURL + \"/api/projects/CreateProduct?\" + data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        self.ProductDetail = response.data;\r\n\r\n                        var PaymentMethodId = null;//self.ProductDetail.FFProduct.PaymentMethodId;\r\n                        if (self.ProductDetail.FFProduct != null) {\r\n                            PaymentMethodId = self.ProductDetail.FFProduct.PaymentMethodId;\r\n                            self.PaymentMethod = self.ProductDetail.FFProduct.PaymentMethodCode;\r\n                            self.CheckoutTempId = self.ProductDetail.FFProduct.TemplateId;\r\n\r\n                            self.SalePageTemplateName = self.ProductDetail.FFProduct.CheckOutPage;\r\n                            self.SalePageVariation = self.ProductDetail.FFProduct.CheckOutVariation;\r\n                            self.SalePageTemplateId = self.ProductDetail.FFProduct.TemplateId;\r\n\r\n                            // self.LoadCheckoutPageTemplates();\r\n                        }\r\n                        self.PaymentMethodId = PaymentMethodId;\r\n\r\n                        if (response.data.FFProduct.ProductIsRecurring == true) {\r\n                            //Currently commented to hide subscription\r\n                            //self.Subscription = true;\r\n                        } else {\r\n                            self.Subscription = false;\r\n                        }\r\n\r\n                        if (response.data.FFProduct.ProductIsTrial == false) {\r\n                            self.IsTrial = false;\r\n                        } else {\r\n                            self.IsTrial = true;\r\n                        }\r\n\r\n                        if (response.data.FFProduct.IsEmailEnabled == true) {\r\n                            self.EmailEnabled = true;\r\n                        } else {\r\n                            self.EmailEnabled = false;\r\n                        }\r\n                        //self.LoadSalePageTemplates();\r\n                        self.loading = false;\r\n                        self.$nextTick(() => {\r\n                            self.$bvModal.show(\"addEditProductsModal\");\r\n                        });\r\n\r\n\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            SubscriptionDiv: function (e) {\r\n                if (this.Subscription == true) {\r\n                    this.Subscription = false;\r\n                } else {\r\n                    this.Subscription = true;\r\n                }\r\n            },\r\n\r\n            TrialDiv() {\r\n                if (this.IsTrial == true) {\r\n                    this.IsTrial = false;\r\n                } else {\r\n                    this.IsTrial = true;\r\n                }\r\n            },\r\n\r\n            fnEmailEnabled(arg) {\r\n                if (arg == \"true\") {\r\n                    this.EmailEnabled = true;\r\n                } else {\r\n                    this.EmailEnabled = false;\r\n                }\r\n            },\r\n\r\n            saveProduct: async function () {\r\n                const access_token = await jwt.getToken();\r\n                this.$refs.productRules.validate().then((success) => {\r\n                    if (success) {\r\n                        this.loading = true;\r\n                        const formData = new FormData(this.$refs[\"CreateProductFormFunnel\"]);\r\n                        const data = {};\r\n                        for (let [key, val] of formData.entries()) {\r\n                            Object.assign(data, { [key]: val });\r\n                        }\r\n                        var PaymentProcessorId;\r\n                        if (data.PaymentMethodId == 1) {\r\n\r\n                            PaymentProcessorId = data.PaypalAccounts;\r\n                        }\r\n                        else if (data.PaymentMethodId == 2) {\r\n                            PaymentProcessorId = data.StripeAccounts;\r\n\r\n                        }\r\n                        else if (data.PaymentMethodId == 3) {\r\n                            PaymentProcessorId = data.AuthorizeNetAccounts;\r\n                        }\r\n                        else if (data.PaymentMethodId == 4) {\r\n                            PaymentProcessorId = data.BrainTreeAccounts;\r\n                        }\r\n\r\n                        var self = this;\r\n                        var qs = require(\"qs\");\r\n                        var CustomProductId = \"0\";\r\n                        if (this.ProductDetail.FFProduct.Id > 0) {\r\n                            CustomProductId = this.ProductDetail.FFProduct.CustomProductID;\r\n                        }\r\n\r\n                        const originalEmailText = this.ProductDetail.FFProduct.FulfillmentEmailBody;\r\n                        const textEncoder = new TextEncoder('iso-8859-1');\r\n                        const encodedEmailText = textEncoder.encode(originalEmailText);\r\n\r\n                        let formdata = new FormData();\r\n                        formdata.append('CustomProductID', CustomProductId);\r\n                        formdata.append('Id', data.Id);\r\n                        formdata.append('IpnUrl', data.IpnUrl);\r\n                        formdata.append('IsEmailEnabled', data.IsEmailEnabled);\r\n                        formdata.append('PaymentMethodId', data.PaymentMethodId);\r\n                        formdata.append('PaymentProcessorId', PaymentProcessorId);\r\n                        formdata.append('ProductArchived', data.ProductArchived);\r\n                        formdata.append('ProductIsRecurring', data.ProductIsRecurring);\r\n                        formdata.append('ProductIsTrial', data.ProductIsTrial);\r\n                        formdata.append('ProductName', data.ProductName);\r\n                        formdata.append('ProductNumberOfPayments', data.ProductNumberOfPayments);\r\n                        formdata.append('ProductPaymentFrequency', data.ProductPaymentFrequency);\r\n                        formdata.append('ProductPaymentPeriod', data.ProductPaymentPeriod);\r\n                        formdata.append('ProductPrice', data.ProductPrice);\r\n                        formdata.append('ProductTrialPeriod', data.ProductTrialPeriod);\r\n                        formdata.append('ProductTrialPeriodFrequency', data.ProductTrialPeriodFrequency);\r\n                        formdata.append('ProductTrialPrice', data.ProductTrialPrice);\r\n                        formdata.append('SmtpConfigurationId', data.SmtpConfigurationId);\r\n                        formdata.append('Subject', data.Subject);\r\n                        formdata.append('UserFunnelId', data.UserFunnelId);\r\n                        formdata.append('UserTabNo', data.UserTabNo);\r\n                        formdata.append('IsSandBox', this.ProductDetail.FFProduct.IsSandBox);\r\n                        formdata.append('FulfillmentEmailBody', window.btoa(String.fromCharCode(...encodedEmailText)));\r\n                        formdata.append('PlanId', this.ProductDetail.FFProduct.PlanId);\r\n                        formdata.append('SalePageTemplateName', this.SalePageTemplateName);\r\n                        formdata.append('SalePageVariation', this.SalePageVariation);\r\n                        formdata.append('SalePageTemplateId', this.SalePageTemplateId);\r\n\r\n                        var axios = require(\"axios\");\r\n\r\n                        //var config = {\r\n                        //    method: \"post\",\r\n                        //    url:\r\n                        //        \"\" + this.WebAPIURL + \"/api/projects/AddEditProduct?\" + abdData,\r\n                        //    headers: {\r\n                        //        Authorization: \"bearer \" + access_token,\r\n                        //    },\r\n                        //    data: abdData,\r\n                        //};\r\n\r\n                        // axios(config)\r\n                        axios\r\n                            .post(\"\" + this.WebAPIURL + \"/api/projects/AddEditProduct\",\r\n                                formdata, {\r\n                                headers: {\r\n                                    'Authorization': 'bearer ' + access_token,\r\n                                    'Content-Type': 'application/json'\r\n                                }\r\n                            })\r\n                            .then(function (response) {\r\n                                //console.log(response.data);\r\n                                self.$nextTick(() => {\r\n                                    self.$bvModal.hide(\"addEditProductsModal\");\r\n                                });\r\n                                self.getStepProducts();\r\n                                self.loading = false;\r\n                            })\r\n                            .catch(function (error) {\r\n                                // console.log(error);\r\n                                self.loading = false;\r\n                            });\r\n                    }\r\n                });\r\n            },\r\n\r\n            removeProduct: async function (e) {\r\n                const prodId = e.currentTarget.getAttribute(\"data-id\");\r\n                var self = this;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    StepId: this.CurrStepID,\r\n                    ProductId: prodId,\r\n                });\r\n                this.$swal({\r\n                    title: \"Delete Product\",\r\n                    text: \"Are you sure?\",\r\n                    //icon: \"warning\",\r\n                    showCancelButton: true,\r\n                    confirmButtonText: \"Delete\",\r\n                    customClass: {\r\n                        confirmButton: \"btn btn-primary\",\r\n                        cancelButton: \"btn btn-outline-danger ml-1\",\r\n                    },\r\n                    buttonsStyling: false,\r\n                }).then((result) => {\r\n                    if (result.value) {\r\n                        this.loading = true;\r\n                        var config = {\r\n                            method: \"post\",\r\n                            url:\r\n                                \"\" + this.WebAPIURL + \"/api/projects/RemoveFunnelProduct?\" + data,\r\n                            headers: {\r\n                                Authorization: \"bearer \" + access_token,\r\n                            },\r\n                            data: data,\r\n                        };\r\n\r\n                        axios(config)\r\n                            .then(function (response) {\r\n                                //console.log(response.data);\r\n                                self.getStepProducts();\r\n                                self.loading = false;\r\n                            })\r\n                            .catch(function (error) {\r\n                                // console.log(error);\r\n                                self.loading = false;\r\n                            });\r\n                    }\r\n                });\r\n            },\r\n\r\n            cloneFunnelEmail: async function (e) {\r\n                const emailId = e.currentTarget.getAttribute(\"data-id\");\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    UserFunnelId: this.userFunnelId,\r\n                    Id: emailId,\r\n                });\r\n\r\n                console.log(emailId);\r\n                console.log(this.userFunnelId);\r\n\r\n                var config = {\r\n                    method: \"post\",\r\n                    url:\r\n                        \"\" + this.WebAPIURL + \"/api/projects/CloneFunnelEmail?\" + data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        self.getStepEmails();\r\n                        self.loading = false;\r\n\r\n                    })\r\n                    .catch(function (error) {\r\n                        self.loading = false;\r\n                    });\r\n\r\n            },\r\n\r\n            addEditEmail: async function (e) {\r\n                const emailId = e.currentTarget.getAttribute(\"data-id\");\r\n                \r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    UserFunnelId: this.userFunnelId,\r\n                    Id: emailId,\r\n                });\r\n\r\n                var config = {\r\n                    method: \"get\",\r\n                    url:\r\n                        \"\" + this.WebAPIURL + \"/api/projects/GetFunnelEmailDetails?\" + data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        // console.log(response.data);\r\n                        self.StepFunnelEmailDetail = response.data;\r\n                        if (self.StepFunnelEmailDetail.FunnelEmail.DelayDays < 9) {\r\n                            self.Delay = self.StepFunnelEmailDetail.FunnelEmail.DelayDays;\r\n                        } else {\r\n                            self.Delay = 8;\r\n                        }\r\n                        if (self.StepFunnelEmailDetail.FunnelEmail.IsScheduled !== undefined) {\r\n                            self.hideDraftBtn = self.StepFunnelEmailDetail.FunnelEmail.IsScheduled;\r\n                        }\r\n                        self.loading = false;\r\n\r\n                        self.$nextTick(() => {\r\n                            self.$bvModal.show(\"addEditEmailModal\");\r\n                        });\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            addEditDoubleOptin: async function (e) {\r\n                const emailId = e.currentTarget.getAttribute(\"data-id\");\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    UserFunnelId: this.userFunnelId,\r\n                    Id: emailId,\r\n                });\r\n\r\n                var config = {\r\n                    method: \"get\",\r\n                    url:\r\n                        \"\" + this.WebAPIURL + \"/api/projects/GetDoubleOptinEmails?\" + data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        console.log(response.data);\r\n                        self.StepFunnelDoubleOptinDetail = response.data;\r\n                        self.loading = false;\r\n                        self.$nextTick(() => {\r\n                            self.$bvModal.show(\"addEditDoubleOptinEmailModal\");\r\n                        });\r\n                    })\r\n                    .catch(function (error) {\r\n                        console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            onDelayChange(event) {\r\n                console.log(event.target.value);\r\n                this.StepFunnelEmailDetail.FunnelEmail.DelayDays = event.target.value;\r\n                this.StepFunnelEmailDetail.FunnelEmail.DelayHours = 0;\r\n            },\r\n\r\n            onDayChange(event) {\r\n                if (event.target.value < 9) {\r\n                    this.Delay = event.target.value;\r\n                } else {\r\n                    this.Delay = 8;\r\n                }\r\n            },\r\n\r\n            closeEmailModal() {\r\n                this.$bvModal.hide(\"addEditEmailModal\");\r\n            },\r\n\r\n\r\n\r\n            saveDraftEmail() {\r\n                this.formaction = \"SAVE\";\r\n                this.StepFunnelEmailDetail.FunnelEmail.IsScheduled = false;\r\n                this.saveEmail();\r\n            },\r\n\r\n            scheduleEmail() {\r\n                this.formaction = \"SAVESCHEDULE\";\r\n                this.StepFunnelEmailDetail.FunnelEmail.IsScheduled = true;\r\n                this.saveEmail();\r\n            },\r\n\r\n            saveOptinEmail() {\r\n                this.formaction = \"SAVE\";\r\n                this.saveDoubleOptinEmail();\r\n            },\r\n\r\n            saveDoubleOptinEmail: async function () {\r\n                const access_token = await jwt.getToken();\r\n                this.$refs.emailRules.validate().then((success) => {\r\n                    if (success) {\r\n                        this.loading = true;\r\n                        const formData = new FormData(this.$refs[\"CreateDoubleOptinEmail\"]);\r\n                        const data = {};\r\n                        for (let [key, val] of formData.entries()) {\r\n                            Object.assign(data, { [key]: val });\r\n\r\n                        }\r\n                        var self = this;\r\n\r\n                        const originalEmailText = this.StepDoubleOptin.EmailText;\r\n                        const textEncoder = new TextEncoder('iso-8859-1');\r\n                        const encodedEmailText = textEncoder.encode(originalEmailText);\r\n\r\n                        let formdata = new FormData();\r\n                        formdata.append('EmailId', data.FunnelEmailId);\r\n                        formdata.append('FromName', data.FromName);\r\n                        formdata.append('Subject', data.Subject);\r\n                        formdata.append('EmailText', window.btoa(String.fromCharCode(...encodedEmailText)));\r\n                        formdata.append('ReplyToEmail', data.ReplyToEmail);\r\n                        formdata.append('EmailProjectId', data.EmailProjectId);\r\n                        formdata.append('EmailUserStepId', data.EmailUserStepId);\r\n                        formdata.append('SmtpConfiguration', data.ConfigurationId);\r\n\r\n\r\n                        var axios = require(\"axios\");\r\n\r\n                        axios\r\n                            .post(\"\" + this.WebAPIURL + \"/api/projects/AddDoubleOptinEmail\",\r\n                                formdata, {\r\n                                headers: {\r\n                                    'Authorization': 'bearer ' + access_token,\r\n                                    'Content-Type': 'application/json'\r\n                                }\r\n                            })\r\n                            .then(function (response) {\r\n                                self.$swal('Success',\r\n                                    '',\r\n                                    'success'\r\n                                );\r\n                                //self.$nextTick(() => {\r\n                                //    self.$bvModal.hide(\"addEditDoubleOptinEmailModal\");\r\n                                //});\r\n                                //self.getDoubleOptinEmail();\r\n                                self.loading = false;\r\n                            })\r\n                            .catch(function (error) {\r\n                                // console.log(error);\r\n                                self.$swal('Error',\r\n                                    'Something went wrong Please try again!',\r\n                                    'error'\r\n                                );\r\n                                // console.log(error);\r\n                                self.loading = false;\r\n                            });\r\n                    }\r\n                })\r\n            },\r\n\r\n            getDoubleOptinEmail: async function () {\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    UserFunnelId: this.userFunnelId,\r\n                });\r\n\r\n                var config = {\r\n                    method: \"get\",\r\n                    url: \"\" + this.WebAPIURL + \"/api/projects/GetDoubleOptinEmails?\" + data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        //console.log(response.data);\r\n                        if (response.data != null && response.data.length > 0) {\r\n                            self.StepDoubleOptin = response.data;\r\n                        } else {\r\n                            self.StepDoubleOptin = null;\r\n                        }\r\n                        self.loading = false;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n\r\n            },\r\n\r\n            saveEmail: async function () {\r\n                const access_token = await jwt.getToken();\r\n                this.$refs.emailRules.validate().then((success) => {\r\n                    if (success) {\r\n                        this.loading = true;\r\n                        const formData = new FormData(this.$refs[\"CreateEmailFormFunnel\"]);\r\n                        const data = {};\r\n                        for (let [key, val] of formData.entries()) {\r\n                            Object.assign(data, { [key]: val });\r\n                        }\r\n                        var self = this;\r\n\r\n                        const originalEmailText = this.StepFunnelEmailDetail.FunnelEmail.EmailText;\r\n                        const textEncoder = new TextEncoder('iso-8859-1');\r\n                        const encodedEmailText = textEncoder.encode(originalEmailText);\r\n\r\n                        let formdata = new FormData();\r\n                        formdata.append('FunnelEmailId', data.FunnelEmailId);\r\n                        formdata.append('formaction', this.formaction);\r\n                        formdata.append('FromName', data.FromName);\r\n                        formdata.append('Subject', data.Subject);\r\n                        formdata.append('EmailText', window.btoa(String.fromCharCode(...encodedEmailText)));\r\n                        formdata.append('ReplyToEmail', data.ReplyToEmail);\r\n                        formdata.append('CamSpam', data.CamSpam);\r\n                        formdata.append('EmailProjectId', data.EmailProjectId);\r\n\r\n                        formdata.append('EmailUserStepId', data.EmailUserStepId);\r\n                        formdata.append('SmtpConfiguration', data.ConfigurationId);\r\n                        formdata.append('DelayDays', data.DelayDays);\r\n                        formdata.append('DelayHours', data.DelayHours);\r\n                        formdata.append('IsScheduled', data.IsScheduled);\r\n                        console.log(\"IsScheduled\", data.IsScheduled);\r\n                        var axios = require(\"axios\");\r\n                        axios\r\n                            .post(\"\" + this.WebAPIURL + \"/api/projects/AddFunnelEmail\",\r\n                                formdata, {\r\n                                headers: {\r\n                                    'Authorization': 'bearer ' + access_token,\r\n                                    'Content-Type': 'application/json'\r\n                                }\r\n                            })\r\n                            .then(function (response) {\r\n\r\n                                self.$nextTick(() => {\r\n                                    self.$bvModal.hide(\"addEditEmailModal\");\r\n                                });\r\n                                self.getStepEmails();\r\n                                self.loading = false;\r\n                            })\r\n                            .catch(function (error) {\r\n                                // console.log(error);\r\n                                self.loading = false;\r\n                            });\r\n                    }\r\n                });\r\n            },\r\n\r\n            deleteStepEmails: async function (e) {\r\n                const emailId = e.currentTarget.getAttribute(\"data-id\");\r\n                const IsSchedule = e.currentTarget.getAttribute(\"data-IsScheduled\");\r\n                var msg = \"\";\r\n                if (IsSchedule) {\r\n                    msg = \"Are you sure? <br/> All existing scheduled emails against this email would be deleted.\";\r\n                }\r\n                else {\r\n                    msg = \"Are you sure?\";\r\n                }\r\n                var self = this;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    FunnelEmailId: emailId,\r\n                });\r\n                this.$swal({\r\n                    title: \"Delete Email\",\r\n                    html: msg,\r\n                    //icon: \"warning\",\r\n                    showCancelButton: true,\r\n                    confirmButtonText: \"Delete\",\r\n                    customClass: {\r\n                        confirmButton: \"btn btn-primary\",\r\n                        cancelButton: \"btn btn-outline-danger ml-1\",\r\n                    },\r\n                    buttonsStyling: false,\r\n                }).then((result) => {\r\n                    if (result.value) {\r\n                        self.loading = true;\r\n                        var config = {\r\n                            method: \"post\",\r\n                            url:\r\n                                \"\" + self.WebAPIURL + \"/api/projects/DeleteFunnelEmail?\" + data,\r\n                            headers: {\r\n                                Authorization: \"bearer \" + access_token,\r\n                            },\r\n                            data: data,\r\n                        };\r\n                        axios(config)\r\n                            .then(function (response) {\r\n                                self.$swal({\r\n                                    icon: \"success\",\r\n                                    title: \"Deleted!\",\r\n                                    //text: \"Your email has been deleted.\",\r\n                                    customClass: {\r\n                                        confirmButton: \"btn btn-success\",\r\n                                    },\r\n                                });\r\n                                self.getStepEmails();\r\n                                self.loading = false;\r\n                            })\r\n                            .catch(function (error) {\r\n                                // console.log(error);\r\n                                self.loading = false;\r\n                            });\r\n                    }\r\n                });\r\n            },\r\n\r\n            getStepEmails: async function () {\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    UserFunnelId: this.userFunnelId,\r\n                });\r\n                var config = {\r\n                    method: \"get\",\r\n                    url: \"\" + this.WebAPIURL + \"/api/projects/GetFunnelEmails?\" + data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        //console.log(response.data);\r\n                        if (response.data != null && response.data.length > 0) {\r\n                            self.StepFunnelEmails = response.data;\r\n                        } else {\r\n                            self.StepFunnelEmails = null;\r\n                        }\r\n                        self.loading = false;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            openSendTestEmailModal: async function () {\r\n                var self = this;\r\n                this.$refs.emailRules.validate().then((success) => {\r\n                    if (success) {\r\n                        self.$nextTick(() => {\r\n                            self.$bvModal.show(\"sendTestEmailModal\");\r\n                        });\r\n\r\n                    }\r\n                })\r\n\r\n            },\r\n            closeTestEmailModal() {\r\n                this.$bvModal.hide(\"sendTestEmailModal\");\r\n            },\r\n\r\n            sendTestEmail: async function () {\r\n                try {\r\n                    const access_token = await jwt.getToken();\r\n                    const success = await this.$refs.testEmailRules.validate(); \r\n                    if (!success) return; \r\n\r\n                    this.loading = true;\r\n\r\n                    var self = this;\r\n                    var toEmail = this.TestToEmail;\r\n\r\n                    const originalEmailText = this.StepFunnelEmailDetail.FunnelEmail.EmailText;\r\n                    const textEncoder = new TextEncoder('iso-8859-1');\r\n                    const encodedEmailText = textEncoder.encode(originalEmailText);\r\n\r\n                    let formdata = new FormData();\r\n                    formdata.append('FromName', this.StepFunnelEmailDetail.FunnelEmail.FromName);\r\n                    formdata.append('Subject', this.StepFunnelEmailDetail.FunnelEmail.Subject);\r\n                    formdata.append('EmailText', window.btoa(String.fromCharCode(...encodedEmailText)));\r\n                    formdata.append('SendToEmail', toEmail);\r\n                    formdata.append('ReplyToEmail', this.StepFunnelEmailDetail.FunnelEmail.ReplyToEmail);\r\n                    formdata.append('SmtpConfigurationId', this.StepFunnelEmailDetail.FunnelEmail.ConfigurationId);\r\n                    formdata.append('CamSpam', this.StepFunnelEmailDetail.FunnelEmail.CamSpam);\r\n\r\n                    var axios = require(\"axios\");\r\n\r\n                    const response = await axios.post(\r\n                        `${this.WebAPIURL}/api/projects/SendTestingEmail`,\r\n                        formdata,\r\n                        {\r\n                            headers: {\r\n                                Authorization: `bearer ${access_token}`,\r\n                                'Content-Type': 'application/json' // Adjust based on API requirements\r\n                            }\r\n                        }\r\n                    );\r\n\r\n                    if (response.data.success) {\r\n                        this.$bvModal.hide(\"sendTestEmailModal\");\r\n                        this.$swal('Success', response.data.message, 'success');\r\n                    } else {\r\n                        this.$swal('Error', response.data.message || 'An unexpected error occurred.', 'error');\r\n                    }\r\n                }\r\n                catch (error) {\r\n\r\n                    let errorMessage = 'Email sending failed';\r\n\r\n                    if (error.response) {\r\n                        //console.error(\"Server Error Response:\", error.response.data);\r\n                        //console.error(\"Status Code:\", error.response.status);\r\n                        //console.error(\"Headers:\", error.response.headers);\r\n\r\n                        if (error.response.data && error.response.data.message) {\r\n                            errorMessage = error.response.data.message;\r\n                        } else if (typeof error.response.data === 'string') {\r\n                            errorMessage = error.response.data;\r\n                        } else if (error.response.status === 400) {\r\n                            errorMessage = \"Bad request: \" + (error.response.data.errors ? JSON.stringify(error.response.data.errors) : \"Check your input.\");\r\n                        } else if (error.response.status === 401) {\r\n                            errorMessage = \"Unauthorized: Please login again.\";\r\n                        } else if (error.response.status === 403) {\r\n                            errorMessage = \"Forbidden: You don't have permission.\";\r\n                        } else if (error.response.status === 404) {\r\n                            errorMessage = \"Not Found: The requested resource was not found.\";\r\n                        } else if (error.response.status >= 500) {\r\n                            errorMessage = \"Server Error: An internal server error occurred.\";\r\n                        }\r\n                    } else if (error.request) {\r\n                        //console.error(\"Network Error:\", error.request);\r\n                        errorMessage = 'Network Error: Could not connect to the server.';\r\n                    } else {\r\n                        //console.error('Request Setup Error:', error.message);\r\n                        errorMessage = 'An unexpected error occurred during request setup.';\r\n                    }\r\n\r\n                    this.$swal('Error', errorMessage, 'error');\r\n                } finally {\r\n                    this.loading = false;\r\n                }\r\n            },\r\n\r\n            onAutoRespChange(event) {\r\n                if (event.target.value == $themeConfig.app.GetResponse) {\r\n                    this.showGetResponse = true;\r\n                    this.showSendLane = false;\r\n                    this.showMailChimp = false;\r\n                    this.showAWeber = false;\r\n                }\r\n                else if (event.target.value == $themeConfig.app.SendLane) {\r\n                    this.showGetResponse = false;\r\n                    this.showSendLane = true;\r\n                    this.showMailChimp = false;\r\n                    this.showAWeber = false;\r\n                }\r\n                else if (event.target.value == $themeConfig.app.MailChimp) {\r\n                    this.showGetResponse = false;\r\n                    this.showSendLane = false;\r\n                    this.showMailChimp = true;\r\n                    this.showAWeber = false;\r\n                }\r\n                else if (event.target.value == $themeConfig.app.AWeber) {\r\n                    this.showGetResponse = false;\r\n                    this.showSendLane = false;\r\n                    this.showMailChimp = false;\r\n                    this.showAWeber = true;\r\n                }\r\n                else {\r\n                    this.showGetResponse = false;\r\n                    this.showSendLane = false;\r\n                    this.showMailChimp = false;\r\n                    this.showAWeber = false;\r\n                }\r\n            },\r\n\r\n            loadGetResponseAccount: async function (e) {\r\n                const action = e.currentTarget.getAttribute(\"data-action\");\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    UserFunnelId: this.userFunnelId,\r\n                    AutoResponderId: this.UserFunnelSteps[0].AutoResponderID,\r\n                    StepId: this.CurrStepID,\r\n                    ActionName: action,\r\n                });\r\n                var config = {\r\n                    method: \"get\",\r\n                    url:\r\n                        \"\" +\r\n                        this.WebAPIURL +\r\n                        \"/api/AutoResponders/VerifyGetResponseAccountOath2?\" +\r\n                        data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        //self.loading = false;\r\n                        localStorage.setItem(\"UserFunnelId\", self.userFunnelId);\r\n                        console.log(response.data);\r\n                        window.location.href = response.data;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            verifyGetResponseAccount: async function () {\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                if (!this.userFunnelId) {\r\n                    this.userFunnelId = localStorage.getItem(\"UserFunnelId\");\r\n                }\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    code: this.getResponseCode,\r\n                    state: this.getResponseState,\r\n                    UserFunnelId: this.userFunnelId,\r\n                });\r\n                var config = {\r\n                    method: \"post\",\r\n                    url:\r\n                        \"\" +\r\n                        this.WebAPIURL +\r\n                        \"/api/AutoResponders/RedirectURLGetResponseAccount?\" +\r\n                        data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        //console.log(response.data);\r\n                        self.$router.push(\r\n                            \"/projectdetail/\" + localStorage.getItem(\"UserFunnelId\")\r\n                        );\r\n                        self.activeTab = \"AutoResponder\";\r\n                        self.loading = false;\r\n                    })\r\n                    .catch(function (error) {\r\n                        console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            loadMailChimpAccount: async function (e) {\r\n                const action = e.currentTarget.getAttribute(\"data-action\");\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    UserFunnelId: this.userFunnelId,\r\n                    AutoResponderId: this.UserFunnelSteps[0].AutoResponderID,\r\n                    StepId: this.CurrStepID,\r\n                    ActionName: action,\r\n                });\r\n                var config = {\r\n                    method: \"get\",\r\n                    url:\r\n                        \"\" +\r\n                        this.WebAPIURL +\r\n                        \"/api/AutoResponders/VerifyMailChimpAccountOath2?\" +\r\n                        data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        //console.log(response.data);\r\n                        //self.loading = false;\r\n                        localStorage.setItem(\"UserFunnelId\", self.userFunnelId);\r\n                        window.location.href = response.data;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            verifyMailChimpAccount: async function () {\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                if (!this.userFunnelId) {\r\n                    this.userFunnelId = localStorage.getItem(\"UserFunnelId\");\r\n                }\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    code: this.mailChimpCode,\r\n                    UserFunnelId: this.userFunnelId,\r\n                });\r\n                var config = {\r\n                    method: \"post\",\r\n                    url:\r\n                        \"\" +\r\n                        this.WebAPIURL +\r\n                        \"/api/AutoResponders/RedirectMailChimpAccountOath2?\" +\r\n                        data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        self.$router.push(\r\n                            \"/projectdetail/\" + localStorage.getItem(\"UserFunnelId\")\r\n                        );\r\n                        self.activeTab = \"AutoResponder\";\r\n                        self.loading = false;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            updateAutoResponder: async function () {\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n                var lstSelectedValues = \"\";\r\n                if (\r\n                    this.UserFunnelSteps[0].AutoResponderID == $themeConfig.app.GetResponse\r\n                ) {\r\n                    lstSelectedValues = this.UserFunnelSteps[0].ResponseCompainID;\r\n                }\r\n                if (\r\n                    this.UserFunnelSteps[0].AutoResponderID == $themeConfig.app.SendLane\r\n                ) {\r\n                    lstSelectedValues = this.UserFunnelSteps[0].SendLaneListId;\r\n                }\r\n                if (\r\n                    this.UserFunnelSteps[0].AutoResponderID == $themeConfig.app.MailChimp\r\n                ) {\r\n                    lstSelectedValues = this.UserFunnelSteps[0].MailChimpListId;\r\n                }\r\n                if (this.UserFunnelSteps[0].AutoResponderID == $themeConfig.app.AWeber) {\r\n                    lstSelectedValues = this.UserFunnelSteps[0].AWeberListId;\r\n                }\r\n\r\n                var data = qs.stringify({\r\n                    UserFunnelId: this.userFunnelId,\r\n                    AutoResponderId: this.UserFunnelSteps[0].AutoResponderID,\r\n                    lstSelectedValues: lstSelectedValues,\r\n                    StepId: this.CurrStepID,\r\n                });\r\n                var config = {\r\n                    method: \"post\",\r\n                    url:\r\n                        \"\" +\r\n                        this.WebAPIURL +\r\n                        \"/api/AutoResponders/UpdateAutoResponder?\" +\r\n                        data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        //console.log(response.data);\r\n                        // self.lstMailChimpAccount = response.data;\r\n                        self.loading = false;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            refreshMailChimpLists: async function () {\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    UserFunnelId: this.userFunnelId,\r\n                });\r\n                var config = {\r\n                    method: \"get\",\r\n                    url:\r\n                        \"\" +\r\n                        this.WebAPIURL +\r\n                        \"/api/AutoResponders/MailChimpRefreshList?\" +\r\n                        data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        self.lstMailChimpAccount = response.data;\r\n                        self.loading = false;\r\n                    })\r\n                    .catch(function (error) {\r\n                        console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            loadSendLaneAccount: async function () {\r\n                const access_token = await jwt.getToken();\r\n                this.$refs.sendLaneRules.validate().then((success) => {\r\n                    if (success) {\r\n                        this.loading = true;\r\n\r\n                        var self = this;\r\n                        var qs = require(\"qs\");\r\n\r\n                        var abdData = qs.stringify({\r\n                            APIKey: this.SendLaneAPIKey,\r\n                            HashKey: this.SendLaneHashKey,\r\n                            SubDomain: this.SendLaneSubDomain,\r\n                            UserFunnelId: this.userFunnelId,\r\n                        });\r\n\r\n                        var axios = require(\"axios\");\r\n\r\n                        console.log(\"abdData:: \" + abdData);\r\n\r\n                        var config = {\r\n                            method: \"post\",\r\n                            url:\r\n                                \"\" +\r\n                                this.WebAPIURL +\r\n                                \"/api/AutoResponders/VerifySendLaneAccount?\" +\r\n                                abdData,\r\n                            headers: {\r\n                                Authorization: \"bearer \" + access_token,\r\n                            },\r\n                            data: abdData,\r\n                        };\r\n\r\n                        axios(config)\r\n                            .then(function (response) {\r\n                                self.lstSendLaneAccount = response.data;\r\n                                //self.SendLaneAPIKey = '';\r\n                                //self.SendLaneHashKey = '';\r\n                                //self.SendLaneSubDomain = '';\r\n                                self.loading = false;\r\n                            })\r\n                            .catch(function (error) {\r\n                                // console.log(error);\r\n                                self.loading = false;\r\n                            });\r\n                    }\r\n                });\r\n            },\r\n\r\n            loadAWeberAccount: async function (e) {\r\n                const action = e.currentTarget.getAttribute(\"data-action\");\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    UserFunnelId: this.userFunnelId,\r\n                    AutoResponderId: this.UserFunnelSteps[0].AutoResponderID,\r\n                    StepId: this.CurrStepID,\r\n                    ActionName: action,\r\n                });\r\n                var config = {\r\n                    method: \"get\",\r\n                    url:\r\n                        \"\" +\r\n                        this.WebAPIURL +\r\n                        \"/api/AutoResponders/VerifyAWeberAccount?\" +\r\n                        data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        //console.log(response.data);\r\n                        localStorage.setItem(\"UserFunnelId\", self.userFunnelId);\r\n                        window.location.href = response.data;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            verifyAWeberAccount: async function () {\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                if (!this.userFunnelId) {\r\n                    this.userFunnelId = localStorage.getItem(\"UserFunnelId\");\r\n                }\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    code: this.aWebwerCode,\r\n                    state: this.aWebwerState,\r\n                    UserFunnelId: this.userFunnelId,\r\n                });\r\n                var config = {\r\n                    method: \"post\",\r\n                    url:\r\n                        \"\" +\r\n                        this.WebAPIURL +\r\n                        \"/api/AutoResponders/AWeberAccountRedirectURL?\" +\r\n                        data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        //console.log(response.data);\r\n                        self.$router.push(\r\n                            \"/projectdetail/\" + localStorage.getItem(\"UserFunnelId\")\r\n                        );\r\n                        self.activeTab = \"AutoResponder\";\r\n\r\n                        self.loading = false;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            onPopupTypeChange(event) {\r\n                var optionText = event.target.value;\r\n                console.log(optionText);\r\n            },\r\n\r\n            saveFormCode: async function () {\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    UserFunnelId: this.userFunnelId,\r\n                    UserFunnelStepId: this.CurrStepID,\r\n                    Id: this.webFormCode.Id,\r\n                    FormHeading: this.webFormCode.FormHeading,\r\n                    AddNameField: this.webFormCode.DisplayName,\r\n                    IsNameRequiredField: this.webFormCode.RequiredName,\r\n                    PopupType: this.webFormCode.PopupType,\r\n                    RedirectionType: this.webFormCode.RedirectionType,\r\n                });\r\n                var config = {\r\n                    method: \"post\",\r\n                    url: \"\" + this.WebAPIURL + \"/api/Projects/GenerateWebformCode?\" + data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        //console.log(response.data);\r\n                        self.webFormCode = response.data;\r\n                        self.loading = false;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n\r\n            loginToSqrrindle: async function () {\r\n                const access_token = await jwt.getToken();\r\n\r\n                this.$refs.loginToSqrrindleRules[0].validate().then((success) => {\r\n                    if (success) {\r\n                        this.error = null;\r\n                        var self = this;\r\n                        this.loading = true;\r\n\r\n                        var axios = require(\"axios\");\r\n                        var qs = require(\"qs\");\r\n\r\n                        var data = qs.stringify({\r\n                            ProjectId: this.userFunnelId,\r\n                            LoginEmail: this.loginEmail,\r\n                            LoginPassword: this.loginPassword,\r\n                            IsSendAutomationEmails: this.sendAutomationEmails,\r\n                        });\r\n                        var config = {\r\n                            method: \"post\",\r\n                            url:\r\n                                \"\" +\r\n                                this.WebAPIURL +\r\n                                \"/api/Projects/AuthenticateSqrindleUser?\" +\r\n                                data,\r\n                            headers: {\r\n                                Authorization: \"bearer \" + access_token,\r\n                            },\r\n                            data: data,\r\n                        };\r\n\r\n                        axios(config)\r\n                            .then(function (response) {\r\n                                self.loading = false;\r\n\r\n                                var res = response.data.split(\"|\");\r\n                                if (res[0] === \"success\") {\r\n                                    var successMessage =\r\n                                        res[1] +\r\n                                        \" contact(s) imported ( \" +\r\n                                        res[2] +\r\n                                        \" New Contacts )\";\r\n                                    if (parseInt(res[1]) <= 0) {\r\n                                        successMessage = \"0 contact imported\";\r\n                                    }\r\n                                    self.$swal({\r\n                                        title: \"Import Success!\",\r\n                                        //text: successMessage,\r\n                                        icon: \"success\",\r\n                                        customClass: {\r\n                                            confirmButton: \"btn btn-primary\",\r\n                                        },\r\n                                        buttonsStyling: false,\r\n                                    });\r\n                                } else {\r\n                                    self.$swal({\r\n                                        title: \"Import Failed!\",\r\n                                        text: \" An error occurred while attempting to import your contacts, Please verify you have entered valid credentials!\",\r\n                                        icon: \"error\",\r\n                                        customClass: {\r\n                                            confirmButton: \"btn btn-primary\",\r\n                                        },\r\n                                        buttonsStyling: false,\r\n                                    });\r\n                                }\r\n                            })\r\n                            .catch(function (error) {\r\n                                // console.log(error);\r\n                                self.loading = false;\r\n                            });\r\n                    }\r\n                });\r\n            },\r\n\r\n            onCopy: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Copied`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"success\",\r\n                        text: `You just copied the WEB FORM CODE to the clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n            onError: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Error`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"error\",\r\n                        text: `Failed to copy the WEB FORM CODE to the clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n\r\n            onPDFCopy: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Copied`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"success\",\r\n                        text: `Your PDF URL has been copied to clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n            onPDFError: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Error`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"error\",\r\n                        text: `Failed to copy the PDF URL to the clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n\r\n            onStepURLCopy: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Copied`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"success\",\r\n                        text: `Your Step URL has been copied to clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n            onStepURLError: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Error`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"error\",\r\n                        text: `Failed to copy the Step URL to the clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n\r\n            onPathCopy: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Copied`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"success\",\r\n                        text: `Your Project URL has been copied to clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n            onPathError: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Error`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"error\",\r\n                        text: `Failed to copy the Project URL to the clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n\r\n            copyTermToClipboard: function (e) {\r\n                navigator.clipboard.writeText(this.termConditionsUrl).then(\r\n                    () => {\r\n                        this.ontermPathCopy();\r\n                    },\r\n                    (err) => {\r\n                        this.ontermPathError();\r\n                    }\r\n                );\r\n            },\r\n\r\n            ontermPathCopy: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Copied`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"success\",\r\n                        text: `Your Term Conditions URL has been copied to clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n            ontermPathError: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Error`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"error\",\r\n                        text: `Failed to copy the Term Conditions URL to the clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n\r\n            copyPrivacyPolicyToClipboard: function (e) {\r\n                navigator.clipboard.writeText(this.privacyUrl).then(\r\n                    () => {\r\n                        this.onPrivacyPathCopy();\r\n                    },\r\n                    (err) => {\r\n                        this.onPrivacyPathError();\r\n                    }\r\n                );\r\n            },\r\n\r\n            onPrivacyPathCopy: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Copied`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"success\",\r\n                        text: `Your Privacy Policy URL has been copied to clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n            onPrivacyPathError: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `Error`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"error\",\r\n                        text: `Failed to copy the Privacy Policy URL to the clipboard!`,\r\n                    },\r\n                });\r\n            },\r\n\r\n            attachPDFMsg: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `PDF NOT FOUND`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"info\",\r\n                        text: `Please add a PDF in Project Settings!`,\r\n                    },\r\n                });\r\n            },\r\n\r\n            completeProjectMessage: function (e) {\r\n                this.$toast({\r\n                    component: ToastificationContent,\r\n                    position: \"top-right\",\r\n                    props: {\r\n                        title: `SELECT TEMPLATE`,\r\n                        icon: \"CopyIcon\",\r\n                        variant: \"info\",\r\n                        text: `Please complete selection!`,\r\n                    },\r\n                });\r\n            },\r\n\r\n            handleFileUpload() {\r\n                console.log(\"file\", this.$refs.file.files[0])\r\n\r\n                //this.getFileInformation(this.$refs.file.files[0]).then((fileInfo) => {\r\n                //    if (fileInfo) {\r\n                //        console.log(fileInfo); // Output PDF information\r\n                //    } else {\r\n                //        console.log('File information not available');\r\n                //    }\r\n                //});\r\n                this.FunnelPDFFile = null; // Clear the selected file\r\n                if (this.$refs.file.files[0] && this.$refs.file.files[0].size > 20971521) {\r\n\r\n\r\n                    this.$toast({\r\n                        component: ToastificationContent,\r\n                        position: \"top-right\",\r\n                        props: {\r\n                            title: `Error`,\r\n                            icon: \"Error\",\r\n                            variant: \"danger\",\r\n                            text: `File size is too large. Maximum size allowed is 20MB.`,\r\n                        },\r\n                    });\r\n\r\n                }\r\n                else {\r\n                    this.FunnelPDFFile = this.$refs.file.files[0];\r\n                }\r\n\r\n            },\r\n\r\n            getFileInformation(file) {\r\n                return new Promise((resolve) => {\r\n                    if (!file) {\r\n                        resolve(null);\r\n                    } else {\r\n                        // Simulate asynchronous file information retrieval\r\n                        setTimeout(() => {\r\n                            // Access file information here, e.g., file.size, file.type, etc.\r\n                            resolve(file);\r\n                        }, 100); // Adjust the delay as needed\r\n                    }\r\n                });\r\n            },\r\n\r\n            closeProjectSettingsModal() {\r\n                this.$bvModal.hide(\"projectSettingsModal\");\r\n            },\r\n\r\n            closeTermsPrivacyPolicyModal() {\r\n                this.$bvModal.hide(\"projectTermsPrivacyPolicy\");\r\n            },\r\n\r\n            updateProjectSettings: async function () {\r\n                const access_token = await jwt.getToken();\r\n                var self = this;\r\n                this.$refs.projectSettingsRules.validate().then((success) => {\r\n                    if (success) {\r\n                        this.error = null;\r\n\r\n                        self.loading = true;\r\n\r\n                        let formData = new FormData();\r\n\r\n                        formData.append(\"Name\", this.funnelDef.Name);\r\n                        formData.append(\"TagGroup\", null);\r\n                        formData.append(\"FunnelPath\", this.funnelDef.Path);\r\n                        formData.append(\"Domain\", this.funnelDef.Domain);\r\n                        formData.append(\"FaviconPath\", this.funnelDef.FaviconPath);\r\n                        formData.append(\"HeadTrackingCode\", this.funnelDef.HeadTrackingCode);\r\n                        formData.append(\"BodyTrackingCode\", this.funnelDef.BodyTrackingCode);\r\n                        formData.append(\"Id\", this.funnelDef.Id);\r\n                        formData.append(\"FunnelPDFFileURL\", this.funnelDef.PDFFileURL);\r\n                        formData.append(\"IsTwoStepOptin\", this.funnelDef.IsTwoStepOptin);\r\n                        formData.append(\"IsEmailSending\", this.funnelDef.IsEmailSending)\r\n                        formData.append(\"file\", this.FunnelPDFFile);\r\n\r\n                        //axis\r\n                        axis\r\n                            .post(\r\n                                \"\" + this.WebAPIURL + \"/api/Projects/UpdateFunnelSettings\",\r\n                                formData,\r\n                                {\r\n                                    headers: {\r\n                                        Authorization: \"bearer \" + access_token,\r\n                                        \"Content-Type\": \"x-www-form-urlencode\",\r\n                                    },\r\n                                }\r\n                            )\r\n                            .then((response) => {\r\n                                self.funnelName = self.funnelDef.Name;\r\n                                self.funnelDef = response.data;\r\n                                self.$nextTick(() => {\r\n                                    self.$bvModal.hide(\"projectSettingsModal\");\r\n                                });\r\n                                self.loading = false;\r\n                            })\r\n                            .catch((error) => {\r\n                                this.errorMessage = error.message;\r\n                                // console.error(\"There was an error!\", error);\r\n                            });\r\n                    }\r\n                });\r\n            },\r\n\r\n            updateTermPrivacyPolicy: async function () {\r\n                const access_token = await jwt.getToken();\r\n                this.$refs.projectTermsPrivacyPolicyRules.validate().then((success) => {\r\n                    if (success) {\r\n                        this.error = null;\r\n                        var self = this;\r\n                        this.loading = true;\r\n                        let formData = new FormData();\r\n                        formData.append(\"PrivacyPolicy\", window.btoa(unescape(encodeURIComponent(this.funnelDef.PrivacyPolicy))));\r\n                        formData.append(\"TermsConditions\", window.btoa(unescape(encodeURIComponent(this.funnelDef.TermsConditions))));\r\n                        formData.append(\"Id\", this.funnelDef.Id);\r\n\r\n                        //axis\r\n                        axis\r\n                            .post(\r\n                                \"\" + this.WebAPIURL + \"/api/Projects/UpdateTermPrivacyPolicy\",\r\n                                formData,\r\n                                {\r\n                                    headers: {\r\n                                        Authorization: \"bearer \" + access_token,\r\n                                        \"Content-Type\": \"x-www-form-urlencode\",\r\n                                    },\r\n                                }\r\n                            )\r\n                            .then((response) => {\r\n                                self.funnelDef = response.data;\r\n\r\n                                this.termConditionsUrl = this.funnelPath + \"/terms\";\r\n                                this.privacyUrl = this.funnelPath + \"/privacy\";\r\n\r\n\r\n                                self.$nextTick(() => {\r\n                                    self.$bvModal.hide(\"projectTermsPrivacyPolicy\");\r\n                                });\r\n                                self.loading = false;\r\n                            })\r\n                            .catch((error) => {\r\n                                this.errorMessage = error.message;\r\n                                // console.error(\"There was an error!\", error);\r\n                            });\r\n\r\n                    }\r\n                });\r\n            },\r\n\r\n            downloadHTML: async function (e) {\r\n                const subDomain = e.currentTarget.getAttribute(\"data-subDomain\");\r\n                const stepid = e.currentTarget.getAttribute(\"data-stepid\");\r\n\r\n                this.error = null;\r\n                var self = this;\r\n                this.loading = true;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                var data = qs.stringify({\r\n                    Id: stepid,\r\n                    DomainName: subDomain,\r\n                });\r\n\r\n                var script =\r\n                    '<script type=\"text/javascript\" src=\"' +\r\n                    subDomain +\r\n                    \"API/Funnel/Get/\" +\r\n                    stepid +\r\n                    '\"><';\r\n                var scriptEnd = \"/script>\";\r\n                var HTML =\r\n                    '<style>.contaner_body{font-family: Helvetica,Arial,\"Lucida Grande\",sans-serif !important;background: #fff !important;border: 1px solid #e4e5e7;border-radius: 2px;padding: 20px;position: relative;}table{width: 100%;border: 1px solid #e4e5e7;}.td_label {width: 33.33%;color: #6a6c6f;border: 1px solid #e4e5e7;}.td_value {width: 50%;color: #6a6c6f;border: 1px solid #e4e5e7;}.td_full_width {width: 100%;}.td_nodata {text-align:center;}label {display: inline-block;max-width: 100%;margin-bottom: 5px;margin-left:5px;}</style>' +\r\n                    script +\r\n                    scriptEnd +\r\n                    \"\";\r\n                var fileName = \"Funnels.html\";\r\n                if (this.funnelName) {\r\n                    fileName = this.funnelName + \".html\";\r\n                }\r\n                var download = require(\"downloadjs\");\r\n                download(HTML, fileName, \"text/html\");\r\n                this.loading = false;\r\n            },\r\n            resetProjectTemplate: async function (e) {\r\n                var UserFunnelId = e.currentTarget.getAttribute(\"data-UserFunnelId\");\r\n                //var templateTypeId = e.currentTarget.getAttribute(\"data-templateTypeId\");\r\n\r\n                //data-templateTypeId\r\n                var UserFunnelStepId = e.currentTarget.getAttribute(\r\n                    \"data-UserFunnelStepId\"\r\n                );\r\n                var UserFunnelStepVariationId = e.currentTarget.getAttribute(\r\n                    \"data-UserFunnelStepVariationId\"\r\n                );\r\n\r\n                this.error = null;\r\n                var self = this;\r\n\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n                const access_token = await jwt.getToken();\r\n\r\n                this.CurrentStepId = UserFunnelStepId;\r\n                var data = qs.stringify({\r\n                    UserFunnelStepVariationId: UserFunnelStepVariationId,\r\n                    UserFunnelStepId: UserFunnelStepId,\r\n                    UserFunnelId: UserFunnelId,\r\n                });\r\n                this.$swal({\r\n                    title: \"Reset Template\",\r\n                    html: \"Are you sure to Reset your template? <br/><br/> It will reset everything which is not reversible\",\r\n                    //icon: \"info\",\r\n                    showCancelButton: true,\r\n                    confirmButtonText: \"Reset\",\r\n                    customClass: {\r\n                        confirmButton: \"btn btn-primary\",\r\n                        cancelButton: \"btn btn-outline-danger ml-1\",\r\n                    },\r\n                    buttonsStyling: false,\r\n                }).then((result) => {\r\n                    if (result.value) {\r\n                        self.loading = true;\r\n                        var config = {\r\n                            method: \"post\",\r\n                            url:\r\n                                \"\" +\r\n                                this.WebAPIURL +\r\n                                \"/api/Projects/ResetProjectTemplate?\" +\r\n                                data,\r\n                            headers: {\r\n                                Authorization: \"bearer \" + access_token,\r\n                            },\r\n                            data: data,\r\n                        };\r\n\r\n                        axios(config)\r\n                            .then(function (response) {\r\n                                self.fetchProjectsData();\r\n                            })\r\n                            .catch(function (error) {\r\n                                // console.log(error);\r\n                                self.loading = false;\r\n                            });\r\n                    }\r\n                });\r\n            },\r\n            openPaymentProcessor(event) {\r\n                var paymentProcessor = event.target.value;\r\n                this.PaymentMethodId = paymentProcessor;\r\n                //var dataName = event.target.dataName;\r\n\r\n                var dataName = event.target.options[event.target.options.selectedIndex].getAttribute('dataName')\r\n                if (dataName != null) {\r\n\r\n                }\r\n                if (dataName == this.ProductDetail.FFProduct.PaymentMethodCode) {\r\n                    this.CheckoutTempId = this.ProductDetail.FFProduct.TemplateId;\r\n                }\r\n                else {\r\n                    this.CheckoutTempId = null;\r\n                }\r\n                this.PaymentMethod = dataName;\r\n\r\n                this.LoadCheckoutPageTemplates();\r\n            },\r\n\r\n            ResetCheckoutTemplate: async function (e) {\r\n                this.SalePageTemplateName = this.PaymentMethod;\r\n                this.CheckoutTempId = null;\r\n                this.SalePageVariation = null;\r\n                this.LoadCheckoutPageTemplates();\r\n            },\r\n\r\n            UseThisCheckoutTemplate: async function (e) {\r\n                this.SalePageTemplateName = e.currentTarget.getAttribute(\"data-TemplateName\");\r\n                this.SalePageVariation = e.currentTarget.getAttribute(\"data-TemplateVariation\");\r\n                this.SalePageTemplateId = e.currentTarget.getAttribute(\"data-value\");\r\n                this.CheckoutTempId = e.currentTarget.getAttribute(\"data-value\");\r\n                this.LoadCheckoutPageTemplates();\r\n            },\r\n            LoadCheckoutPageTemplates: async function (e) {\r\n                this.loading = true;\r\n                var self = this;\r\n                this.SalePageTemplates = null;\r\n\r\n                const access_token = await jwt.getToken();\r\n                var axios = require(\"axios\");\r\n                var qs = require(\"qs\");\r\n\r\n                var data = qs.stringify({\r\n                    TemplateId: this.CheckoutTempId,\r\n                    TemplateName: this.PaymentMethod\r\n                });\r\n                var config = {\r\n                    method: \"get\",\r\n                    url: \"\" + this.WebAPIURL + \"/api/projects/GetCheckoutTemplates?\" + data,\r\n                    headers: {\r\n                        Authorization: \"bearer \" + access_token,\r\n                    },\r\n                    data: data,\r\n                };\r\n\r\n                axios(config)\r\n                    .then(function (response) {\r\n                        self.SalePageTemplates = response.data;\r\n                        self.loading = false;\r\n                    })\r\n                    .catch(function (error) {\r\n                        // console.log(error);\r\n                        self.loading = false;\r\n                    });\r\n            },\r\n        },\r\n        destroyed() {\r\n            //document.querySelector('a[href*=\"/projects\"]').parentNode.classList.remove(\"active\");\r\n\r\n        },\r\n    };\r\n</script>\r\n<style lang=\"scss\">\r\n    @import \"@core/scss/vue/libs/quill.scss\";\r\n</style>\r\n<style scoped>\r\n    .mr {\r\n        margin-bottom: 0.5rem !important;\r\n    }\r\n    /*.btn-icon svg.feather {\r\n        width: 22px !important;\r\n        height: 22px !important;\r\n    }*/\r\n    .icon-color {\r\n        color: #28c76f;\r\n    }\r\n</style>","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./projectdetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./projectdetail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./projectdetail.vue?vue&type=template&id=64ea179a&scoped=true&\"\nimport script from \"./projectdetail.vue?vue&type=script&lang=js&\"\nexport * from \"./projectdetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./projectdetail.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./projectdetail.vue?vue&type=style&index=1&id=64ea179a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"64ea179a\",\n  null\n  \n)\n\nexport default component.exports","export var noop = function noop() {};","/**\n * vue-good-table v2.21.0\n * (c) 2018-present xaksis <shay@crayonbits.com>\n * https://github.com/xaksis/vue-good-table\n * Released under the MIT License.\n */\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\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\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\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 objectToString = objectProto.toString;\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 nativeKeys = overArg(Object.keys, Object);\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  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\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\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\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  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\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\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _([1, 2]).forEach(function(value) {\n *   console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n  var func = isArray(collection) ? arrayEach : baseEach;\n  return func(collection, typeof iteratee == 'function' ? iteratee : identity);\n}\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 */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\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\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\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\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  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\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\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 && (type == 'object' || type == 'function');\n}\n\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 && typeof value == 'object';\n}\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\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nvar lodash_foreach = forEach;\n\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n    funcTag$1 = '[object Function]',\n    genTag$1 = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint$1 = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\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$1(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\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$1(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto$1.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 objectToString$1 = objectProto$1.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable$1 = objectProto$1.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys$1 = overArg$1(Object.keys, Object),\n    nativeMax = Math.max;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable$1.call({ 'valueOf': 1 }, 'valueOf');\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$1(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray$1(value) || isArguments$1(value))\n    ? baseTimes$1(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty$1.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex$1(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty$1.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    object[key] = value;\n  }\n}\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$1(object) {\n  if (!isPrototype$1(object)) {\n    return nativeKeys$1(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty$1.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    assignValue(object, key, newValue === undefined ? source[key] : newValue);\n  }\n  return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\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$1(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER$1 : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint$1.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject$1(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike$1(object) && isIndex$1(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\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$1(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$1;\n\n  return value === proto;\n}\n\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\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 */\nfunction isArguments$1(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject$1(value) && hasOwnProperty$1.call(value, 'callee') &&\n    (!propertyIsEnumerable$1.call(value, 'callee') || objectToString$1.call(value) == argsTag$1);\n}\n\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$1 = Array.isArray;\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$1(value) {\n  return value != null && isLength$1(value.length) && !isFunction$1(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject$1(value) {\n  return isObjectLike$1(value) && isArrayLike$1(value);\n}\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$1(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject$1(value) ? objectToString$1.call(value) : '';\n  return tag == funcTag$1 || tag == genTag$1;\n}\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$1(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;\n}\n\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$1(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\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$1(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n  if (nonEnumShadows || isPrototype$1(source) || isArrayLike$1(source)) {\n    copyObject(source, keys$1(source), object);\n    return;\n  }\n  for (var key in source) {\n    if (hasOwnProperty$1.call(source, key)) {\n      assignValue(object, key, source[key]);\n    }\n  }\n});\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$1(object) {\n  return isArrayLike$1(object) ? arrayLikeKeys$1(object) : baseKeys$1(object);\n}\n\nvar lodash_assign = assign;\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\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    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\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/**\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 match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\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\n/** Detect free variable `exports`. */\nvar freeExports =  exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n  // Don't return `map.set` because it's not chainable in IE 11.\n  map.set(pair[0], pair[1]);\n  return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n  // Don't return `set.add` because it's not chainable in IE 11.\n  set.add(value);\n  return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\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\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\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\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\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\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\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\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\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\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/** 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/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\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/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\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/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\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 ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\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}\n\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  return this.has(key) && delete this.__data__[key];\n}\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\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\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  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\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\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 ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\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}\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  return true;\n}\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\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\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    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\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\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 ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\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.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\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  return getMapData(this, key)['delete'](key);\n}\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\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\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  getMapData(this, key).set(key, value);\n  return this;\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\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  this.__data__ = new ListCache(entries);\n}\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}\n\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  return this.__data__['delete'](key);\n}\n\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\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\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 cache = this.__data__;\n  if (cache instanceof ListCache) {\n    var pairs = cache.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      return this;\n    }\n    cache = this.__data__ = new MapCache(pairs);\n  }\n  cache.set(key, value);\n  return this;\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\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  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    object[key] = value;\n  }\n}\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\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n  var result;\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      if (isHostObject(value)) {\n        return object ? value : {};\n      }\n      result = initCloneObject(isFunc ? {} : value);\n      if (!isDeep) {\n        return copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, baseClone, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (!isArr) {\n    var props = isFull ? getAllKeys(value) : keys(value);\n  }\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n  });\n  return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n  return isObject(proto) ? objectCreate(proto) : {};\n}\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\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  return objectToString.call(value);\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) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\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\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var result = new buffer.constructor(buffer.length);\n  buffer.copy(result);\n  return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n  var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n  return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n  var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n  return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    assignValue(object, key, newValue === undefined ? source[key] : newValue);\n  }\n  return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\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\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\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\n/**\n * Creates an array of the own enumerable symbol properties 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 ? overArg(nativeGetSymbols, Object) : stubArray;\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,\n// for data views in Edge < 14, and promises in Node.js.\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 = objectToString.call(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : undefined;\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\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return cloneMap(object, isDeep, cloneFunc);\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return cloneSet(object, isDeep, cloneFunc);\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\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  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\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\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\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\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\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\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, true, true);\n}\n\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\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 */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\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\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\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\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\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  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\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\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 && (type == 'object' || type == 'function');\n}\n\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 && typeof value == 'object';\n}\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\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\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 = cloneDeep;\n});\n\nvar lodash_filter = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991;\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    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\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 match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\n    rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\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 match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\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\n/** Detect free variable `exports`. */\nvar freeExports =  exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == '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    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\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 ? array.length : 0,\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\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 ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\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\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\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\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\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\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\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\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\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/** 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/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\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/** Built-in value references. */\nvar Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\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/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\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 ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\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}\n\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  return this.has(key) && delete this.__data__[key];\n}\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\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\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  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\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\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 ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\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}\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  return true;\n}\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\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\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    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\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\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 ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\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.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\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  return getMapData(this, key)['delete'](key);\n}\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\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\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  getMapData(this, key).set(key, value);\n  return this;\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\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 ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\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\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\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\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  this.__data__ = new ListCache(entries);\n}\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}\n\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  return this.__data__['delete'](key);\n}\n\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\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\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 cache = this.__data__;\n  if (cache instanceof ListCache) {\n    var pairs = cache.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      return this;\n    }\n    cache = this.__data__ = new MapCache(pairs);\n  }\n  cache.set(key, value);\n  return this;\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\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  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\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\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n  var result = [];\n  baseEach(collection, function(value, index, collection) {\n    if (predicate(value, index, collection)) {\n      result.push(value);\n    }\n  });\n  return result;\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\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 {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\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, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\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, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_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, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\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) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\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[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\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\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n  };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\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, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_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 (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\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, equalFunc, customizer, bitmask, 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 & PARTIAL_COMPARE_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 |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, 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\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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\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, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(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  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\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, customizer, bitmask, 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\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\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\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\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,\n// for data views in Edge < 14, and promises in Node.js.\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 = objectToString.call(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : undefined;\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\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var result,\n      index = -1,\n      length = path.length;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result) {\n    return result;\n  }\n  var length = object ? object.length : 0;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\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  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\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\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\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\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\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\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity]\n *  The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': true },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n  var func = isArray(collection) ? arrayFilter : baseFilter;\n  return func(collection, baseIteratee(predicate));\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\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\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 */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\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\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\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\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  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\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\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 && (type == 'object' || type == 'function');\n}\n\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 && typeof value == 'object';\n}\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) && objectToString.call(value) == symbolTag);\n}\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\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\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\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = filter;\n});\n\nvar lodash_isequal = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    asyncTag = '[object AsyncFunction]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    undefinedTag = '[object Undefined]',\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/**\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 to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\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\n/** Detect free variable `exports`. */\nvar freeExports =  exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == '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    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\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\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\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\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\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\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\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\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\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\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\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\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 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 * 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/** 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/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\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/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\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/**\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\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\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\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\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\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\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/**\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\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\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\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\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\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\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/**\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\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\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\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\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\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\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/**\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\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\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\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/**\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\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\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\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  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\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\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\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\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\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\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\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\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  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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 = isEqual;\n});\n\n// all diacritics\r\nvar diacritics = \r\n\t{\r\n\t\t'a' : ['a','à','á','â','ã','ä','å','æ','ā','ă','ą','ǎ','ǟ','ǡ','ǻ','ȁ','ȃ','ȧ','ɐ','ɑ','ɒ','ͣ','а','ӑ','ӓ','ᵃ','ᵄ','ᶏ','ḁ','ẚ','ạ','ả','ấ','ầ','ẩ','ẫ','ậ','ắ','ằ','ẳ','ẵ','ặ','ₐ','ⱥ','a'],\r\n\t\t'A' : ['A','À','Á','Â','Ã','Ä','Å','Ā','Ă','Ą','Ǎ','Ǟ','Ǡ','Ǻ','Ȁ','Ȃ','Ȧ','Ⱥ','А','Ӑ','Ӓ','ᴀ','ᴬ','Ḁ','Ạ','Ả','Ấ','Ầ','Ẩ','Ẫ','Ậ','Ắ','Ằ','Ẳ','Ẵ','Ặ','A'],\r\n\t\t \r\n\t\t'b' : ['b','ƀ','ƃ','ɓ','ᖯ','ᵇ','ᵬ','ᶀ','ḃ','ḅ','ḇ','b'],\r\n\t\t'B' : ['B','Ɓ','Ƃ','Ƀ','ʙ','ᛒ','ᴃ','ᴮ','ᴯ','Ḃ','Ḅ','Ḇ','B'],\r\n\t\t \r\n\t\t'c' : ['c','ç','ć','ĉ','ċ','č','ƈ','ȼ','ɕ','ͨ','ᴄ','ᶜ','ḉ','ↄ','c'],\r\n\t\t'C' : ['C','Ç','Ć','Ĉ','Ċ','Č','Ƈ','Ȼ','ʗ','Ḉ','C'],\r\n\t\t\r\n\t\t'd' : ['d','ď','đ','Ƌ','ƌ','ȡ','ɖ','ɗ','ͩ','ᵈ','ᵭ','ᶁ','ᶑ','ḋ','ḍ','ḏ','ḑ','ḓ','d'],\r\n\t\t'D' : ['D','Ď','Đ','Ɖ','Ɗ','ᴰ','Ḋ','Ḍ','Ḏ','Ḑ','Ḓ','D'],\r\n\t\t\r\n\t\t'e' : ['e','è','é','ê','ë','ē','ĕ','ė','ę','ě','ǝ','ȅ','ȇ','ȩ','ɇ','ɘ','ͤ','ᵉ','ᶒ','ḕ','ḗ','ḙ','ḛ','ḝ','ẹ','ẻ','ẽ','ế','ề','ể','ễ','ệ','ₑ','e'],\r\n\t\t'E' : ['E','È','É','Ê','Ë','Ē','Ĕ','Ė','Ę','Ě','Œ','Ǝ','Ɛ','Ȅ','Ȇ','Ȩ','Ɇ','ɛ','ɜ','ɶ','Є','Э','э','є','Ӭ','ӭ','ᴇ','ᴈ','ᴱ','ᴲ','ᵋ','ᵌ','ᶓ','ᶔ','ᶟ','Ḕ','Ḗ','Ḙ','Ḛ','Ḝ','Ẹ','Ẻ','Ẽ','Ế','Ề','Ể','Ễ','Ệ','E','𐐁','𐐩'],\r\n\t\t\r\n\t\t'f' : ['f','ƒ','ᵮ','ᶂ','ᶠ','ḟ','f'],\r\n\t\t'F' : ['F','Ƒ','Ḟ','ⅎ','F'],\r\n\t\t\r\n\t\t'g' : ['g','ĝ','ğ','ġ','ģ','ǥ','ǧ','ǵ','ɠ','ɡ','ᵍ','ᵷ','ᵹ','ᶃ','ᶢ','ḡ','g'],\r\n\t\t'G' : ['G','Ĝ','Ğ','Ġ','Ģ','Ɠ','Ǥ','Ǧ','Ǵ','ɢ','ʛ','ᴳ','Ḡ','G'],\r\n\t\t\r\n\t\t'h' : ['h','ĥ','ħ','ƕ','ȟ','ɥ','ɦ','ʮ','ʯ','ʰ','ʱ','ͪ','Һ','һ','ᑋ','ᶣ','ḣ','ḥ','ḧ','ḩ','ḫ','ⱨ','h'],\r\n\t\t'H' : ['H','Ĥ','Ħ','Ȟ','ʜ','ᕼ','ᚺ','ᚻ','ᴴ','Ḣ','Ḥ','Ḧ','Ḩ','Ḫ','Ⱨ','H'],\r\n\t\t\r\n\t\t'i' : ['i','ì','í','î','ï','ĩ','ī','ĭ','į','ǐ','ȉ','ȋ','ɨ','ͥ','ᴉ','ᵎ','ᵢ','ᶖ','ᶤ','ḭ','ḯ','ỉ','ị','i'],\r\n\t\t'I' : ['I','Ì','Í','Î','Ï','Ĩ','Ī','Ĭ','Į','İ','Ǐ','Ȉ','Ȋ','ɪ','І','ᴵ','ᵻ','ᶦ','ᶧ','Ḭ','Ḯ','Ỉ','Ị','I'],\r\n\t\t\r\n\t\t'j' : ['j','ĵ','ǰ','ɉ','ʝ','ʲ','ᶡ','ᶨ','j'],\r\n\t\t'J' : ['J','Ĵ','ᴊ','ᴶ','J'],\r\n\t\t\r\n\t\t'k' : ['k','ķ','ƙ','ǩ','ʞ','ᵏ','ᶄ','ḱ','ḳ','ḵ','ⱪ','k'],\r\n\t\t'K' : ['K','Ķ','Ƙ','Ǩ','ᴷ','Ḱ','Ḳ','Ḵ','Ⱪ','K'],\r\n\t\t\r\n\t\t'l' : ['l','ĺ','ļ','ľ','ŀ','ł','ƚ','ȴ','ɫ','ɬ','ɭ','ˡ','ᶅ','ᶩ','ᶪ','ḷ','ḹ','ḻ','ḽ','ℓ','ⱡ'],\r\n\t\t'L' : ['L','Ĺ','Ļ','Ľ','Ŀ','Ł','Ƚ','ʟ','ᴌ','ᴸ','ᶫ','Ḷ','Ḹ','Ḻ','Ḽ','Ⱡ','Ɫ'],\r\n\t\t\r\n\t\t'm' : ['m','ɯ','ɰ','ɱ','ͫ','ᴟ','ᵐ','ᵚ','ᵯ','ᶆ','ᶬ','ᶭ','ḿ','ṁ','ṃ','㎡','㎥','m'],\r\n\t\t'M' : ['M','Ɯ','ᴍ','ᴹ','Ḿ','Ṁ','Ṃ','M'],\r\n\t\t\r\n\t\t'n' : ['n','ñ','ń','ņ','ň','ʼn','ƞ','ǹ','ȵ','ɲ','ɳ','ᵰ','ᶇ','ᶮ','ᶯ','ṅ','ṇ','ṉ','ṋ','ⁿ','n'],\r\n\t\t'N' : ['N','Ñ','Ń','Ņ','Ň','Ɲ','Ǹ','Ƞ','ɴ','ᴎ','ᴺ','ᴻ','ᶰ','Ṅ','Ṇ','Ṉ','Ṋ','N'],\r\n\t\t\r\n\t\t'o' : ['o','ò','ó','ô','õ','ö','ø','ō','ŏ','ő','ơ','ǒ','ǫ','ǭ','ǿ','ȍ','ȏ','ȫ','ȭ','ȯ','ȱ','ɵ','ͦ','о','ӧ','ө','ᴏ','ᴑ','ᴓ','ᴼ','ᵒ','ᶱ','ṍ','ṏ','ṑ','ṓ','ọ','ỏ','ố','ồ','ổ','ỗ','ộ','ớ','ờ','ở','ỡ','ợ','ₒ','o','𐐬'],\r\n\t\t'O' : ['O','Ò','Ó','Ô','Õ','Ö','Ø','Ō','Ŏ','Ő','Ɵ','Ơ','Ǒ','Ǫ','Ǭ','Ǿ','Ȍ','Ȏ','Ȫ','Ȭ','Ȯ','Ȱ','О','Ӧ','Ө','Ṍ','Ṏ','Ṑ','Ṓ','Ọ','Ỏ','Ố','Ồ','Ổ','Ỗ','Ộ','Ớ','Ờ','Ở','Ỡ','Ợ','O','𐐄'],\r\n\t\t\r\n\t\t'p' : ['p','ᵖ','ᵱ','ᵽ','ᶈ','ṕ','ṗ','p'],\r\n\t\t'P' : ['P','Ƥ','ᴘ','ᴾ','Ṕ','Ṗ','Ᵽ','P'],\r\n\t\t\r\n\t\t'q' : ['q','ɋ','ʠ','ᛩ','q'],\r\n\t\t'Q' : ['Q','Ɋ','Q'],\r\n\t\t\r\n\t\t'r' : ['r','ŕ','ŗ','ř','ȑ','ȓ','ɍ','ɹ','ɻ','ʳ','ʴ','ʵ','ͬ','ᵣ','ᵲ','ᶉ','ṙ','ṛ','ṝ','ṟ'],\r\n\t\t'R' : ['R','Ŕ','Ŗ','Ř','Ʀ','Ȑ','Ȓ','Ɍ','ʀ','ʁ','ʶ','ᚱ','ᴙ','ᴚ','ᴿ','Ṙ','Ṛ','Ṝ','Ṟ','Ɽ'],\r\n\t\t\r\n\t\t's' : ['s','ś','ŝ','ş','š','ș','ʂ','ᔆ','ᶊ','ṡ','ṣ','ṥ','ṧ','ṩ','s'],\r\n\t\t'S' : ['S','Ś','Ŝ','Ş','Š','Ș','ȿ','ˢ','ᵴ','Ṡ','Ṣ','Ṥ','Ṧ','Ṩ','S'],\r\n\t\t\r\n\t\t't' : ['t','ţ','ť','ŧ','ƫ','ƭ','ț','ʇ','ͭ','ᵀ','ᵗ','ᵵ','ᶵ','ṫ','ṭ','ṯ','ṱ','ẗ','t'],\r\n\t\t'T' : ['T','Ţ','Ť','Ƭ','Ʈ','Ț','Ⱦ','ᴛ','ᵀ','Ṫ','Ṭ','Ṯ','Ṱ','T'],\r\n\t \t\r\n\t\t'u' : ['u','ù','ú','û','ü','ũ','ū','ŭ','ů','ű','ų','ư','ǔ','ǖ','ǘ','ǚ','ǜ','ȕ','ȗ','ͧ','ߎ','ᵘ','ᵤ','ṳ','ṵ','ṷ','ṹ','ṻ','ụ','ủ','ứ','ừ','ử','ữ','ự','u'],\r\n\t\t'U' : ['U','Ù','Ú','Û','Ü','Ũ','Ū','Ŭ','Ů','Ű','Ų','Ư','Ǔ','Ǖ','Ǘ','Ǚ','Ǜ','Ȕ','Ȗ','Ʉ','ᴜ','ᵁ','ᵾ','Ṳ','Ṵ','Ṷ','Ṹ','Ṻ','Ụ','Ủ','Ứ','Ừ','Ử','Ữ','Ự','U'],\r\n\t\t\r\n\t\t'v' : ['v','ʋ','ͮ','ᵛ','ᵥ','ᶹ','ṽ','ṿ','ⱱ','v','ⱴ'],\r\n\t\t'V' : ['V','Ʋ','Ʌ','ʌ','ᴠ','ᶌ','Ṽ','Ṿ','V'],\r\n\t\t\r\n\t\t'w' : ['w','ŵ','ʷ','ᵂ','ẁ','ẃ','ẅ','ẇ','ẉ','ẘ','ⱳ','w'],\r\n\t\t'W' : ['W','Ŵ','ʍ','ᴡ','Ẁ','Ẃ','Ẅ','Ẇ','Ẉ','Ⱳ','W'],\r\n\t\t\r\n\t\t'x' : ['x','̽','͓','ᶍ','ͯ','ẋ','ẍ','ₓ','x'],\r\n\t\t'X' : ['X','ˣ','ͯ','Ẋ','Ẍ','☒','✕','✖','✗','✘','X'],\r\n\t\t\r\n\t\t'y' : ['y','ý','ÿ','ŷ','ȳ','ɏ','ʸ','ẏ','ỳ','ỵ','ỷ','ỹ','y'],\r\n\t\t'Y' : ['Y','Ý','Ŷ','Ÿ','Ƴ','ƴ','Ȳ','Ɏ','ʎ','ʏ','Ẏ','Ỳ','Ỵ','Ỷ','Ỹ','Y'],\r\n\t\t\r\n\t\t'z' : ['z','ź','ż','ž','ƶ','ȥ','ɀ','ʐ','ʑ','ᙆ','ᙇ','ᶻ','ᶼ','ᶽ','ẑ','ẓ','ẕ','ⱬ','z'],\r\n\t\t'Z' : ['Z','Ź','Ż','Ž','Ƶ','Ȥ','ᴢ','ᵶ','Ẑ','Ẓ','Ẕ','Ⱬ','Z']\r\n\t};\r\n\r\n/*\r\n * Main function of the module which removes all diacritics from the received text\r\n */\r\nvar diacriticless = function (text) {\r\n    var result = [];\r\n\r\n\t// iterate over all the characters of the received text\r\n    for(var i=0; i<text.length; i++) {\r\n        var searchChar = text.charAt(i);\r\n        var foundChar = false;\r\n\r\n\t\t// iterate over all the diacritics\r\n        for(var key in diacritics) {\r\n            var indexChar = diacritics[key].indexOf(searchChar);\r\n\t\t\t\r\n\t\t\t// check if the current character is a diacritic\r\n            if (indexChar !== -1) {\r\n\t\t\t\t// as the character is a diacritic, adds into the result array, the key of the found diacritic\r\n                result.push(key);\r\n                foundChar = true;\r\n                break;\r\n            }\r\n        }\r\n\r\n        // check if the character was not found\r\n        if (!foundChar) {\r\n\t\t\t// as the character was not found, returns it\r\n            result.push(searchChar);\r\n        }\r\n    }\r\n\r\n    return result.join(\"\");\r\n};\n\nvar escapeRegExp = function escapeRegExp(str) {\n  return str.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n};\n\nvar defaultType = {\n  format: function format(x) {\n    return x;\n  },\n  filterPredicate: function filterPredicate(rowval, filter) {\n    var skipDiacritics = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var fromDropdown = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n    // take care of nulls\n    if (typeof rowval === 'undefined' || rowval === null) {\n      return false;\n    } // row value\n\n\n    var rowValue = skipDiacritics ? String(rowval).toLowerCase() : diacriticless(escapeRegExp(String(rowval)).toLowerCase()); // search term\n\n    var searchTerm = skipDiacritics ? filter.toLowerCase() : diacriticless(escapeRegExp(filter).toLowerCase()); // comparison\n\n    return fromDropdown ? rowValue === searchTerm : rowValue.indexOf(searchTerm) > -1;\n  },\n  compare: function compare(x, y) {\n    function cook(d) {\n      if (typeof d === 'undefined' || d === null) return '';\n      return diacriticless(d.toLowerCase());\n    }\n\n    x = cook(x);\n    y = cook(y);\n    if (x < y) return -1;\n    if (x > y) return 1;\n    return 0;\n  }\n};\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script = {\n  name: 'VgtPaginationPageInfo',\n  props: {\n    currentPage: {\n      \"default\": 1\n    },\n    lastPage: {\n      \"default\": 1\n    },\n    totalRecords: {\n      \"default\": 0\n    },\n    ofText: {\n      \"default\": 'of',\n      type: String\n    },\n    pageText: {\n      \"default\": 'page',\n      type: String\n    }\n  },\n  data: function data() {\n    return {};\n  },\n  computed: {\n    pageInfo: function pageInfo() {\n      return \"\".concat(this.ofText, \" \").concat(this.lastPage);\n    }\n  },\n  methods: {\n    changePage: function changePage(event) {\n      var value = parseInt(event.target.value, 10); //! invalid number\n\n      if (Number.isNaN(value) || value > this.lastPage || value < 1) {\n        event.target.value = this.currentPage;\n        return false;\n      } //* valid number\n\n\n      event.target.value = value;\n      this.$emit('page-changed', value);\n    }\n  },\n  mounted: function mounted() {},\n  components: {}\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n    if (typeof shadowMode !== 'boolean') {\r\n        createInjectorSSR = createInjector;\r\n        createInjector = shadowMode;\r\n        shadowMode = false;\r\n    }\r\n    // Vue.extend constructor export interop.\r\n    const options = typeof script === 'function' ? script.options : script;\r\n    // render functions\r\n    if (template && template.render) {\r\n        options.render = template.render;\r\n        options.staticRenderFns = template.staticRenderFns;\r\n        options._compiled = true;\r\n        // functional template\r\n        if (isFunctionalTemplate) {\r\n            options.functional = true;\r\n        }\r\n    }\r\n    // scopedId\r\n    if (scopeId) {\r\n        options._scopeId = scopeId;\r\n    }\r\n    let hook;\r\n    if (moduleIdentifier) {\r\n        // server build\r\n        hook = function (context) {\r\n            // 2.3 injection\r\n            context =\r\n                context || // cached call\r\n                    (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n                    (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n            // 2.2 with runInNewContext: true\r\n            if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n                context = __VUE_SSR_CONTEXT__;\r\n            }\r\n            // inject component styles\r\n            if (style) {\r\n                style.call(this, createInjectorSSR(context));\r\n            }\r\n            // register component module identifier for async chunk inference\r\n            if (context && context._registeredComponents) {\r\n                context._registeredComponents.add(moduleIdentifier);\r\n            }\r\n        };\r\n        // used by ssr in case component is cached and beforeCreate\r\n        // never gets called\r\n        options._ssrRegister = hook;\r\n    }\r\n    else if (style) {\r\n        hook = shadowMode\r\n            ? function (context) {\r\n                style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n            }\r\n            : function (context) {\r\n                style.call(this, createInjector(context));\r\n            };\r\n    }\r\n    if (hook) {\r\n        if (options.functional) {\r\n            // register for functional component in vue file\r\n            const originalRender = options.render;\r\n            options.render = function renderWithStyleInjection(h, context) {\r\n                hook.call(context);\r\n                return originalRender(h, context);\r\n            };\r\n        }\r\n        else {\r\n            // inject component registration as beforeCreate hook\r\n            const existing = options.beforeCreate;\r\n            options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n        }\r\n    }\r\n    return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n  var _vm = this;\n\n  var _h = _vm.$createElement;\n\n  var _c = _vm._self._c || _h;\n\n  return _c('div', {\n    staticClass: \"footer__navigation__page-info\"\n  }, [_vm._v(\"\\n  \" + _vm._s(_vm.pageText) + \" \"), _c('input', {\n    staticClass: \"footer__navigation__page-info__current-entry\",\n    attrs: {\n      \"type\": \"text\"\n    },\n    domProps: {\n      \"value\": _vm.currentPage\n    },\n    on: {\n      \"keyup\": function keyup($event) {\n        if (!$event.type.indexOf('key') && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) {\n          return null;\n        }\n\n        $event.stopPropagation();\n        return _vm.changePage($event);\n      }\n    }\n  }), _vm._v(\" \" + _vm._s(_vm.pageInfo) + \"\\n\")]);\n};\n\nvar __vue_staticRenderFns__ = [];\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = \"data-v-9a8cd1f4\";\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ =\n/*#__PURE__*/\nnormalizeComponent({\n  render: __vue_render__,\n  staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\n//\nvar DEFAULT_ROWS_PER_PAGE_DROPDOWN = [10, 20, 30, 40, 50];\nvar script$1 = {\n  name: 'VgtPagination',\n  props: {\n    styleClass: {\n      \"default\": 'table table-bordered'\n    },\n    total: {\n      \"default\": null\n    },\n    perPage: {},\n    rtl: {\n      \"default\": false\n    },\n    customRowsPerPageDropdown: {\n      \"default\": function _default() {\n        return [];\n      }\n    },\n    paginateDropdownAllowAll: {\n      \"default\": true\n    },\n    mode: {\n      \"default\": 'records'\n    },\n    // text options\n    nextText: {\n      \"default\": 'Next'\n    },\n    prevText: {\n      \"default\": 'Prev'\n    },\n    rowsPerPageText: {\n      \"default\": 'Rows per page:'\n    },\n    ofText: {\n      \"default\": 'of'\n    },\n    pageText: {\n      \"default\": 'page'\n    },\n    allText: {\n      \"default\": 'All'\n    }\n  },\n  data: function data() {\n    return {\n      currentPage: 1,\n      prevPage: 0,\n      currentPerPage: 10,\n      rowsPerPageOptions: []\n    };\n  },\n  watch: {\n    perPage: {\n      handler: function handler(newValue, oldValue) {\n        this.handlePerPage();\n        this.perPageChanged(oldValue);\n      },\n      immediate: true\n    },\n    customRowsPerPageDropdown: function customRowsPerPageDropdown() {\n      this.handlePerPage();\n    },\n    total: {\n      handler: function handler(newValue, oldValue) {\n        if (this.rowsPerPageOptions.indexOf(this.currentPerPage) === -1) {\n          this.currentPerPage = newValue;\n        }\n      }\n    }\n  },\n  computed: {\n    // Number of pages\n    pagesCount: function pagesCount() {\n      var quotient = Math.floor(this.total / this.currentPerPage);\n      var remainder = this.total % this.currentPerPage;\n      return remainder === 0 ? quotient : quotient + 1;\n    },\n    // Current displayed items\n    paginatedInfo: function paginatedInfo() {\n      var first = (this.currentPage - 1) * this.currentPerPage + 1;\n      var last = Math.min(this.total, this.currentPage * this.currentPerPage);\n\n      if (last === 0) {\n        first = 0;\n      }\n\n      return \"\".concat(first, \" - \").concat(last, \" \").concat(this.ofText, \" \").concat(this.total);\n    },\n    // Can go to next page\n    nextIsPossible: function nextIsPossible() {\n      return this.currentPage < this.pagesCount;\n    },\n    // Can go to previous page\n    prevIsPossible: function prevIsPossible() {\n      return this.currentPage > 1;\n    }\n  },\n  methods: {\n    // Change current page\n    changePage: function changePage(pageNumber) {\n      var emit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n      if (pageNumber > 0 && this.total > this.currentPerPage * (pageNumber - 1)) {\n        this.prevPage = this.currentPage;\n        this.currentPage = pageNumber;\n        if (emit) this.pageChanged();\n      }\n    },\n    // Go to next page\n    nextPage: function nextPage() {\n      if (this.nextIsPossible) {\n        this.prevPage = this.currentPage;\n        ++this.currentPage;\n        this.pageChanged();\n      }\n    },\n    // Go to previous page\n    previousPage: function previousPage() {\n      if (this.prevIsPossible) {\n        this.prevPage = this.currentPage;\n        --this.currentPage;\n        this.pageChanged();\n      }\n    },\n    // Indicate page changing\n    pageChanged: function pageChanged() {\n      this.$emit('page-changed', {\n        currentPage: this.currentPage,\n        prevPage: this.prevPage\n      });\n    },\n    // Indicate per page changing\n    perPageChanged: function perPageChanged(oldValue) {\n      // go back to first page\n      if (oldValue) {\n        //* only emit if this isn't first initialization\n        this.$emit('per-page-changed', {\n          currentPerPage: this.currentPerPage\n        });\n      }\n\n      this.changePage(1, false);\n    },\n    // Handle per page changing\n    handlePerPage: function handlePerPage() {\n      //* if there's a custom dropdown then we use that\n      if (this.customRowsPerPageDropdown !== null && Array.isArray(this.customRowsPerPageDropdown) && this.customRowsPerPageDropdown.length !== 0) {\n        this.rowsPerPageOptions = lodash_clonedeep(this.customRowsPerPageDropdown);\n      } else {\n        //* otherwise we use the default rows per page dropdown\n        this.rowsPerPageOptions = lodash_clonedeep(DEFAULT_ROWS_PER_PAGE_DROPDOWN);\n      }\n\n      if (this.perPage) {\n        this.currentPerPage = this.perPage; // if perPage doesn't already exist, we add it\n\n        var found = false;\n\n        for (var i = 0; i < this.rowsPerPageOptions.length; i++) {\n          if (this.rowsPerPageOptions[i] === this.perPage) {\n            found = true;\n          }\n        }\n\n        if (!found && this.perPage !== -1) {\n          this.rowsPerPageOptions.unshift(this.perPage);\n        }\n      } else {\n        // reset to default\n        this.currentPerPage = 10;\n      }\n    }\n  },\n  mounted: function mounted() {},\n  components: {\n    'pagination-page-info': __vue_component__\n  }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n/* template */\n\nvar __vue_render__$1 = function __vue_render__() {\n  var _vm = this;\n\n  var _h = _vm.$createElement;\n\n  var _c = _vm._self._c || _h;\n\n  return _c('div', {\n    staticClass: \"vgt-wrap__footer vgt-clearfix\"\n  }, [_c('div', {\n    staticClass: \"footer__row-count vgt-pull-left\"\n  }, [_c('span', {\n    staticClass: \"footer__row-count__label\"\n  }, [_vm._v(_vm._s(_vm.rowsPerPageText))]), _vm._v(\" \"), _c('select', {\n    directives: [{\n      name: \"model\",\n      rawName: \"v-model\",\n      value: _vm.currentPerPage,\n      expression: \"currentPerPage\"\n    }],\n    staticClass: \"footer__row-count__select\",\n    attrs: {\n      \"autocomplete\": \"off\",\n      \"name\": \"perPageSelect\"\n    },\n    on: {\n      \"change\": [function ($event) {\n        var $$selectedVal = Array.prototype.filter.call($event.target.options, function (o) {\n          return o.selected;\n        }).map(function (o) {\n          var val = \"_value\" in o ? o._value : o.value;\n          return val;\n        });\n        _vm.currentPerPage = $event.target.multiple ? $$selectedVal : $$selectedVal[0];\n      }, _vm.perPageChanged]\n    }\n  }, [_vm._l(_vm.rowsPerPageOptions, function (option, idx) {\n    return _c('option', {\n      key: 'rows-dropdown-option-' + idx,\n      domProps: {\n        \"value\": option\n      }\n    }, [_vm._v(\"\\n        \" + _vm._s(option) + \"\\n      \")]);\n  }), _vm._v(\" \"), _vm.paginateDropdownAllowAll ? _c('option', {\n    domProps: {\n      \"value\": _vm.total\n    }\n  }, [_vm._v(_vm._s(_vm.allText))]) : _vm._e()], 2)]), _vm._v(\" \"), _c('div', {\n    staticClass: \"footer__navigation vgt-pull-right\"\n  }, [_c('a', {\n    staticClass: \"footer__navigation__page-btn\",\n    \"class\": {\n      disabled: !_vm.prevIsPossible\n    },\n    attrs: {\n      \"href\": \"javascript:undefined\",\n      \"tabindex\": \"0\"\n    },\n    on: {\n      \"click\": function click($event) {\n        $event.preventDefault();\n        $event.stopPropagation();\n        return _vm.previousPage($event);\n      }\n    }\n  }, [_c('span', {\n    staticClass: \"chevron\",\n    \"class\": {\n      'left': !_vm.rtl,\n      'right': _vm.rtl\n    }\n  }), _vm._v(\" \"), _c('span', [_vm._v(_vm._s(_vm.prevText))])]), _vm._v(\" \"), _vm.mode === 'pages' ? _c('pagination-page-info', {\n    attrs: {\n      \"totalRecords\": _vm.total,\n      \"lastPage\": _vm.pagesCount,\n      \"currentPage\": _vm.currentPage,\n      \"ofText\": _vm.ofText,\n      \"pageText\": _vm.pageText\n    },\n    on: {\n      \"page-changed\": _vm.changePage\n    }\n  }) : _c('div', {\n    staticClass: \"footer__navigation__info\"\n  }, [_vm._v(_vm._s(_vm.paginatedInfo))]), _vm._v(\" \"), _c('a', {\n    staticClass: \"footer__navigation__page-btn\",\n    \"class\": {\n      disabled: !_vm.nextIsPossible\n    },\n    attrs: {\n      \"href\": \"javascript:undefined\",\n      \"tabindex\": \"0\"\n    },\n    on: {\n      \"click\": function click($event) {\n        $event.preventDefault();\n        $event.stopPropagation();\n        return _vm.nextPage($event);\n      }\n    }\n  }, [_c('span', [_vm._v(_vm._s(_vm.nextText))]), _vm._v(\" \"), _c('span', {\n    staticClass: \"chevron\",\n    \"class\": {\n      'right': !_vm.rtl,\n      'left': _vm.rtl\n    }\n  })])], 1)]);\n};\n\nvar __vue_staticRenderFns__$1 = [];\n/* style */\n\nvar __vue_inject_styles__$1 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$1 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$1 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$1 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$1 =\n/*#__PURE__*/\nnormalizeComponent({\n  render: __vue_render__$1,\n  staticRenderFns: __vue_staticRenderFns__$1\n}, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, false, undefined, undefined, undefined);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script$2 = {\n  name: 'VgtGlobalSearch',\n  props: ['value', 'searchEnabled', 'globalSearchPlaceholder'],\n  data: function data() {\n    return {\n      globalSearchTerm: null\n    };\n  },\n  computed: {\n    showControlBar: function showControlBar() {\n      if (this.searchEnabled) return true;\n      if (this.$slots && this.$slots['internal-table-actions']) return true;\n      return false;\n    }\n  },\n  methods: {\n    updateValue: function updateValue(value) {\n      this.$emit('input', value);\n      this.$emit('on-keyup', value);\n    },\n    entered: function entered(value) {\n      this.$emit('on-enter', value);\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$2 = script$2;\n/* template */\n\nvar __vue_render__$2 = function __vue_render__() {\n  var _vm = this;\n\n  var _h = _vm.$createElement;\n\n  var _c = _vm._self._c || _h;\n\n  return _vm.showControlBar ? _c('div', {\n    staticClass: \"vgt-global-search vgt-clearfix\"\n  }, [_c('div', {\n    staticClass: \"vgt-global-search__input vgt-pull-left\"\n  }, [_vm.searchEnabled ? _c('span', {\n    staticClass: \"input__icon\"\n  }, [_c('div', {\n    staticClass: \"magnifying-glass\"\n  })]) : _vm._e(), _vm._v(\" \"), _vm.searchEnabled ? _c('input', {\n    staticClass: \"vgt-input vgt-pull-left\",\n    attrs: {\n      \"type\": \"text\",\n      \"placeholder\": _vm.globalSearchPlaceholder\n    },\n    domProps: {\n      \"value\": _vm.value\n    },\n    on: {\n      \"input\": function input($event) {\n        return _vm.updateValue($event.target.value);\n      },\n      \"keyup\": function keyup($event) {\n        if (!$event.type.indexOf('key') && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) {\n          return null;\n        }\n\n        return _vm.entered($event.target.value);\n      }\n    }\n  }) : _vm._e()]), _vm._v(\" \"), _c('div', {\n    staticClass: \"vgt-global-search__actions vgt-pull-right\"\n  }, [_vm._t(\"internal-table-actions\")], 2)]) : _vm._e();\n};\n\nvar __vue_staticRenderFns__$2 = [];\n/* style */\n\nvar __vue_inject_styles__$2 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$2 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$2 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$2 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$2 =\n/*#__PURE__*/\nnormalizeComponent({\n  render: __vue_render__$2,\n  staticRenderFns: __vue_staticRenderFns__$2\n}, __vue_inject_styles__$2, __vue_script__$2, __vue_scope_id__$2, __vue_is_functional_template__$2, __vue_module_identifier__$2, false, undefined, undefined, undefined);\n\nvar script$3 = {\n  name: 'VgtFilterRow',\n  props: ['lineNumbers', 'columns', 'typedColumns', 'globalSearchEnabled', 'selectable', 'mode'],\n  watch: {\n    columns: {\n      handler: function handler(newValue, oldValue) {\n        this.populateInitialFilters();\n      },\n      deep: true,\n      immediate: true\n    }\n  },\n  data: function data() {\n    return {\n      columnFilters: {},\n      timer: null\n    };\n  },\n  computed: {\n    // to create a filter row, we need to\n    // make sure that there is atleast 1 column\n    // that requires filtering\n    hasFilterRow: function hasFilterRow() {\n      // if (this.mode === 'remote' || !this.globalSearchEnabled) {\n      for (var i = 0; i < this.columns.length; i++) {\n        var col = this.columns[i];\n\n        if (col.filterOptions && col.filterOptions.enabled) {\n          return true;\n        }\n      } // }\n\n\n      return false;\n    }\n  },\n  methods: {\n    reset: function reset() {\n      var emitEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      this.columnFilters = {};\n\n      if (emitEvent) {\n        this.$emit('filter-changed', this.columnFilters);\n      }\n    },\n    isFilterable: function isFilterable(column) {\n      return column.filterOptions && column.filterOptions.enabled;\n    },\n    isDropdown: function isDropdown(column) {\n      return this.isFilterable(column) && column.filterOptions.filterDropdownItems && column.filterOptions.filterDropdownItems.length;\n    },\n    isDropdownObjects: function isDropdownObjects(column) {\n      return this.isDropdown(column) && _typeof(column.filterOptions.filterDropdownItems[0]) === 'object';\n    },\n    isDropdownArray: function isDropdownArray(column) {\n      return this.isDropdown(column) && _typeof(column.filterOptions.filterDropdownItems[0]) !== 'object';\n    },\n    // get column's defined placeholder or default one\n    getPlaceholder: function getPlaceholder(column) {\n      var placeholder = this.isFilterable(column) && column.filterOptions.placeholder || \"Filter \".concat(column.label);\n      return placeholder;\n    },\n    updateFiltersOnEnter: function updateFiltersOnEnter(column, value) {\n      if (this.timer) clearTimeout(this.timer);\n      this.updateFiltersImmediately(column.field, value);\n    },\n    updateFiltersOnKeyup: function updateFiltersOnKeyup(column, value) {\n      // if the trigger is enter, we don't filter on keyup\n      if (column.filterOptions.trigger === 'enter') return;\n      this.updateFilters(column, value);\n    },\n    updateSlotFilter: function updateSlotFilter(column, value) {\n      var fieldToFilter = column.filterOptions.slotFilterField || column.field;\n\n      if (typeof column.filterOptions.formatValue === 'function') {\n        value = column.filterOptions.formatValue(value);\n      }\n\n      this.updateFiltersImmediately(fieldToFilter, value);\n    },\n    // since vue doesn't detect property addition and deletion, we\n    // need to create helper function to set property etc\n    updateFilters: function updateFilters(column, value) {\n      var _this = this;\n\n      if (this.timer) clearTimeout(this.timer);\n      this.timer = setTimeout(function () {\n        _this.updateFiltersImmediately(column.field, value);\n      }, 400);\n    },\n    updateFiltersImmediately: function updateFiltersImmediately(field, value) {\n      this.$set(this.columnFilters, field, value);\n      this.$emit('filter-changed', this.columnFilters);\n    },\n    populateInitialFilters: function populateInitialFilters() {\n      for (var i = 0; i < this.columns.length; i++) {\n        var col = this.columns[i]; // lets see if there are initial\n        // filters supplied by user\n\n        if (this.isFilterable(col) && typeof col.filterOptions.filterValue !== 'undefined' && col.filterOptions.filterValue !== null) {\n          this.$set(this.columnFilters, col.field, col.filterOptions.filterValue); // this.updateFilters(col, col.filterOptions.filterValue);\n          // this.$set(col.filterOptions, 'filterValue', undefined);\n        }\n      } //* lets emit event once all filters are set\n\n\n      this.$emit('filter-changed', this.columnFilters);\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n/* template */\n\nvar __vue_render__$3 = function __vue_render__() {\n  var _vm = this;\n\n  var _h = _vm.$createElement;\n\n  var _c = _vm._self._c || _h;\n\n  return _vm.hasFilterRow ? _c('tr', [_vm.lineNumbers ? _c('th') : _vm._e(), _vm._v(\" \"), _vm.selectable ? _c('th') : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, index) {\n    return !column.hidden ? _c('th', {\n      key: index,\n      staticClass: \"filter-th\"\n    }, [_vm._t(\"column-filter\", [_vm.isFilterable(column) ? _c('div', [!_vm.isDropdown(column) ? _c('input', {\n      staticClass: \"vgt-input\",\n      attrs: {\n        \"type\": \"text\",\n        \"placeholder\": _vm.getPlaceholder(column)\n      },\n      domProps: {\n        \"value\": _vm.columnFilters[column.field]\n      },\n      on: {\n        \"keyup\": function keyup($event) {\n          if (!$event.type.indexOf('key') && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) {\n            return null;\n          }\n\n          return _vm.updateFiltersOnEnter(column, $event.target.value);\n        },\n        \"input\": function input($event) {\n          return _vm.updateFiltersOnKeyup(column, $event.target.value);\n        }\n      }\n    }) : _vm._e(), _vm._v(\" \"), _vm.isDropdownArray(column) ? _c('select', {\n      staticClass: \"vgt-select\",\n      domProps: {\n        \"value\": _vm.columnFilters[column.field]\n      },\n      on: {\n        \"change\": function change($event) {\n          return _vm.updateFilters(column, $event.target.value);\n        }\n      }\n    }, [_c('option', {\n      key: \"-1\",\n      attrs: {\n        \"value\": \"\"\n      }\n    }, [_vm._v(_vm._s(_vm.getPlaceholder(column)))]), _vm._v(\" \"), _vm._l(column.filterOptions.filterDropdownItems, function (option, i) {\n      return _c('option', {\n        key: i,\n        domProps: {\n          \"value\": option\n        }\n      }, [_vm._v(\"\\n              \" + _vm._s(option) + \"\\n            \")]);\n    })], 2) : _vm._e(), _vm._v(\" \"), _vm.isDropdownObjects(column) ? _c('select', {\n      staticClass: \"vgt-select\",\n      domProps: {\n        \"value\": _vm.columnFilters[column.field]\n      },\n      on: {\n        \"change\": function change($event) {\n          return _vm.updateFilters(column, $event.target.value, true);\n        }\n      }\n    }, [_c('option', {\n      key: \"-1\",\n      attrs: {\n        \"value\": \"\"\n      }\n    }, [_vm._v(_vm._s(_vm.getPlaceholder(column)))]), _vm._v(\" \"), _vm._l(column.filterOptions.filterDropdownItems, function (option, i) {\n      return _c('option', {\n        key: i,\n        domProps: {\n          \"value\": option.value\n        }\n      }, [_vm._v(_vm._s(option.text))]);\n    })], 2) : _vm._e()]) : _vm._e()], {\n      \"column\": column,\n      \"updateFilters\": _vm.updateSlotFilter\n    })], 2) : _vm._e();\n  })], 2) : _vm._e();\n};\n\nvar __vue_staticRenderFns__$3 = [];\n/* style */\n\nvar __vue_inject_styles__$3 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$3 = \"data-v-1c6bfd21\";\n/* module identifier */\n\nvar __vue_module_identifier__$3 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$3 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$3 =\n/*#__PURE__*/\nnormalizeComponent({\n  render: __vue_render__$3,\n  staticRenderFns: __vue_staticRenderFns__$3\n}, __vue_inject_styles__$3, __vue_script__$3, __vue_scope_id__$3, __vue_is_functional_template__$3, __vue_module_identifier__$3, false, undefined, undefined, undefined);\n\nvar DEFAULT_SORT_TYPE = 'asc';\n\nfunction getColumnFirstSortType(column) {\n  return column.firstSortType || DEFAULT_SORT_TYPE;\n}\n\nfunction getCurrentPrimarySort(sortArray, column) {\n  return sortArray.length === 1 && sortArray[0].field === column.field ? sortArray[0].type : undefined;\n}\n\nfunction getNextSort(currentSort) {\n  return currentSort === 'asc' ? 'desc' : DEFAULT_SORT_TYPE;\n}\n\nfunction getIndex(sortArray, column) {\n  for (var i = 0; i < sortArray.length; i++) {\n    if (column.field === sortArray[i].field) return i;\n  }\n\n  return -1;\n}\n\nvar primarySort = function (sortArray, column) {\n  var currentPrimarySort = getCurrentPrimarySort(sortArray, column);\n  return [{\n    field: column.field,\n    type: currentPrimarySort ? getNextSort(currentPrimarySort) : getColumnFirstSortType(column)\n  }];\n};\n\nvar secondarySort = function (sortArray, column) {\n  var index = getIndex(sortArray, column);\n\n  if (index === -1) {\n    sortArray.push({\n      field: column.field,\n      type: getColumnFirstSortType(column)\n    });\n  } else {\n    sortArray[index].type = getNextSort(sortArray[index].type);\n  }\n\n  return sortArray;\n};\n\n//\nvar script$4 = {\n  name: 'VgtTableHeader',\n  props: {\n    lineNumbers: {\n      \"default\": false,\n      type: Boolean\n    },\n    selectable: {\n      \"default\": false,\n      type: Boolean\n    },\n    allSelected: {\n      \"default\": false,\n      type: Boolean\n    },\n    allSelectedIndeterminate: {\n      \"default\": false,\n      type: Boolean\n    },\n    columns: {\n      type: Array\n    },\n    mode: {\n      type: String\n    },\n    typedColumns: {},\n    //* Sort related\n    sortable: {\n      type: Boolean\n    },\n    // sortColumn: {\n    //   type: Number,\n    // },\n    // sortType: {\n    //   type: String,\n    // },\n    // utility functions\n    // isSortableColumn: {\n    //   type: Function,\n    // },\n    getClasses: {\n      type: Function\n    },\n    //* search related\n    searchEnabled: {\n      type: Boolean\n    },\n    tableRef: {},\n    paginated: {}\n  },\n  watch: {\n    columns: {\n      handler: function handler() {\n        this.setColumnStyles();\n      },\n      immediate: true\n    },\n    tableRef: {\n      handler: function handler() {\n        this.setColumnStyles();\n      },\n      immediate: true\n    },\n    paginated: {\n      handler: function handler() {\n        if (this.tableRef) {\n          this.setColumnStyles();\n        }\n      },\n      deep: true\n    }\n  },\n  data: function data() {\n    return {\n      checkBoxThStyle: {},\n      lineNumberThStyle: {},\n      columnStyles: [],\n      sorts: []\n    };\n  },\n  computed: {},\n  methods: {\n    reset: function reset() {\n      this.$refs['filter-row'].reset(true);\n    },\n    toggleSelectAll: function toggleSelectAll() {\n      this.$emit('on-toggle-select-all');\n    },\n    isSortableColumn: function isSortableColumn(column) {\n      var sortable = column.sortable;\n      var isSortable = typeof sortable === 'boolean' ? sortable : this.sortable;\n      return isSortable;\n    },\n    sort: function sort(e, column) {\n      //* if column is not sortable, return right here\n      if (!this.isSortableColumn(column)) return;\n\n      if (e.shiftKey) {\n        this.sorts = secondarySort(this.sorts, column);\n      } else {\n        this.sorts = primarySort(this.sorts, column);\n      }\n\n      this.$emit('on-sort-change', this.sorts);\n    },\n    setInitialSort: function setInitialSort(sorts) {\n      this.sorts = sorts;\n      this.$emit('on-sort-change', this.sorts);\n    },\n    getColumnSort: function getColumnSort(column) {\n      for (var i = 0; i < this.sorts.length; i += 1) {\n        if (this.sorts[i].field === column.field) {\n          return this.sorts[i].type || 'asc';\n        }\n      }\n\n      return null;\n    },\n    getHeaderClasses: function getHeaderClasses(column, index) {\n      var classes = lodash_assign({}, this.getClasses(index, 'th'), {\n        sortable: this.isSortableColumn(column),\n        'sorting sorting-desc': this.getColumnSort(column) === 'desc',\n        'sorting sorting-asc': this.getColumnSort(column) === 'asc'\n      });\n      return classes;\n    },\n    filterRows: function filterRows(columnFilters) {\n      this.$emit('filter-changed', columnFilters);\n    },\n    getWidthStyle: function getWidthStyle(dom) {\n      if (window && window.getComputedStyle && dom) {\n        var cellStyle = window.getComputedStyle(dom, null);\n        return {\n          width: cellStyle.width\n        };\n      }\n\n      return {\n        width: 'auto'\n      };\n    },\n    setColumnStyles: function setColumnStyles() {\n      var colStyles = [];\n\n      for (var i = 0; i < this.columns.length; i++) {\n        if (this.tableRef) {\n          var skip = 0;\n          if (this.selectable) skip++;\n          if (this.lineNumbers) skip++;\n          var cell = this.tableRef.rows[0].cells[i + skip];\n          colStyles.push(this.getWidthStyle(cell));\n        } else {\n          colStyles.push({\n            minWidth: this.columns[i].width ? this.columns[i].width : 'auto',\n            maxWidth: this.columns[i].width ? this.columns[i].width : 'auto',\n            width: this.columns[i].width ? this.columns[i].width : 'auto'\n          });\n        }\n      }\n\n      this.columnStyles = colStyles;\n    },\n    getColumnStyle: function getColumnStyle(column, index) {\n      var styleObject = {\n        minWidth: column.width ? column.width : 'auto',\n        maxWidth: column.width ? column.width : 'auto',\n        width: column.width ? column.width : 'auto'\n      }; //* if fixed header we need to get width from original table\n\n      if (this.tableRef) {\n        if (this.selectable) index++;\n        if (this.lineNumbers) index++;\n        var cell = this.tableRef.rows[0].cells[index];\n        var cellStyle = window.getComputedStyle(cell, null);\n        styleObject.width = cellStyle.width;\n      }\n\n      return styleObject;\n    }\n  },\n  mounted: function mounted() {\n    window.addEventListener('resize', this.setColumnStyles);\n  },\n  beforeDestroy: function beforeDestroy() {\n    window.removeEventListener('resize', this.setColumnStyles);\n  },\n  components: {\n    'vgt-filter-row': __vue_component__$3\n  }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n/* template */\n\nvar __vue_render__$4 = function __vue_render__() {\n  var _vm = this;\n\n  var _h = _vm.$createElement;\n\n  var _c = _vm._self._c || _h;\n\n  return _c('thead', [_c('tr', [_vm.lineNumbers ? _c('th', {\n    staticClass: \"line-numbers\"\n  }) : _vm._e(), _vm._v(\" \"), _vm.selectable ? _c('th', {\n    staticClass: \"vgt-checkbox-col\"\n  }, [_c('input', {\n    attrs: {\n      \"type\": \"checkbox\"\n    },\n    domProps: {\n      \"checked\": _vm.allSelected,\n      \"indeterminate\": _vm.allSelectedIndeterminate\n    },\n    on: {\n      \"change\": _vm.toggleSelectAll\n    }\n  })]) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, index) {\n    return !column.hidden ? _c('th', {\n      key: index,\n      \"class\": _vm.getHeaderClasses(column, index),\n      style: _vm.columnStyles[index],\n      on: {\n        \"click\": function click($event) {\n          return _vm.sort($event, column);\n        }\n      }\n    }, [_vm._t(\"table-column\", [_c('span', [_vm._v(_vm._s(column.label))])], {\n      \"column\": column\n    })], 2) : _vm._e();\n  })], 2), _vm._v(\" \"), _c(\"vgt-filter-row\", {\n    ref: \"filter-row\",\n    tag: \"tr\",\n    attrs: {\n      \"global-search-enabled\": _vm.searchEnabled,\n      \"line-numbers\": _vm.lineNumbers,\n      \"selectable\": _vm.selectable,\n      \"columns\": _vm.columns,\n      \"mode\": _vm.mode,\n      \"typed-columns\": _vm.typedColumns\n    },\n    on: {\n      \"filter-changed\": _vm.filterRows\n    },\n    scopedSlots: _vm._u([{\n      key: \"column-filter\",\n      fn: function fn(props) {\n        return [_vm._t(\"column-filter\", null, {\n          \"column\": props.column,\n          \"updateFilters\": props.updateFilters\n        })];\n      }\n    }], null, true)\n  })], 1);\n};\n\nvar __vue_staticRenderFns__$4 = [];\n/* style */\n\nvar __vue_inject_styles__$4 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$4 = \"data-v-2d1e3c02\";\n/* module identifier */\n\nvar __vue_module_identifier__$4 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$4 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$4 =\n/*#__PURE__*/\nnormalizeComponent({\n  render: __vue_render__$4,\n  staticRenderFns: __vue_staticRenderFns__$4\n}, __vue_inject_styles__$4, __vue_script__$4, __vue_scope_id__$4, __vue_is_functional_template__$4, __vue_module_identifier__$4, false, undefined, undefined, undefined);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script$5 = {\n  name: 'VgtHeaderRow',\n  props: {\n    headerRow: {\n      type: Object\n    },\n    columns: {\n      type: Array\n    },\n    lineNumbers: {\n      type: Boolean\n    },\n    selectable: {\n      type: Boolean\n    },\n    selectAllByGroup: {\n      type: Boolean\n    },\n    collapsable: {\n      type: [Boolean, Number],\n      \"default\": false\n    },\n    collectFormatted: {\n      type: Function\n    },\n    formattedRow: {\n      type: Function\n    },\n    getClasses: {\n      type: Function\n    },\n    fullColspan: {\n      type: Number\n    },\n    groupIndex: {\n      type: Number\n    }\n  },\n  data: function data() {\n    return {};\n  },\n  computed: {\n    allSelected: function allSelected() {\n      var headerRow = this.headerRow,\n          groupChildObject = this.groupChildObject;\n      return headerRow.children.filter(function (row) {\n        return row.vgtSelected;\n      }).length === headerRow.children.length;\n    }\n  },\n  methods: {\n    columnCollapsable: function columnCollapsable(currentIndex) {\n      if (this.collapsable === true) {\n        return currentIndex === 0;\n      }\n\n      return currentIndex === this.collapsable;\n    },\n    toggleSelectGroup: function toggleSelectGroup(event) {\n      this.$emit('on-select-group-change', {\n        groupIndex: this.groupIndex,\n        checked: event.target.checked\n      });\n    }\n  },\n  mounted: function mounted() {},\n  components: {}\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n/* template */\n\nvar __vue_render__$5 = function __vue_render__() {\n  var _vm = this;\n\n  var _h = _vm.$createElement;\n\n  var _c = _vm._self._c || _h;\n\n  return _c('tr', [_vm.headerRow.mode === 'span' ? _c('th', {\n    staticClass: \"vgt-left-align vgt-row-header\",\n    attrs: {\n      \"colspan\": _vm.fullColspan\n    }\n  }, [_vm.selectAllByGroup ? [_vm._t(\"table-header-group-select\", [_c('input', {\n    attrs: {\n      \"type\": \"checkbox\"\n    },\n    domProps: {\n      \"checked\": _vm.allSelected\n    },\n    on: {\n      \"change\": function change($event) {\n        return _vm.toggleSelectGroup($event);\n      }\n    }\n  })], {\n    \"columns\": _vm.columns,\n    \"row\": _vm.headerRow\n  })] : _vm._e(), _vm._v(\" \"), _c('span', {\n    on: {\n      \"click\": function click($event) {\n        _vm.collapsable ? _vm.$emit('vgtExpand', !_vm.headerRow.vgtIsExpanded) : function () {};\n      }\n    }\n  }, [_vm.collapsable ? _c('span', {\n    staticClass: \"triangle\",\n    \"class\": {\n      'expand': _vm.headerRow.vgtIsExpanded\n    }\n  }) : _vm._e(), _vm._v(\" \"), _vm._t(\"table-header-row\", [_vm.headerRow.html ? _c('span', {\n    domProps: {\n      \"innerHTML\": _vm._s(_vm.headerRow.label)\n    }\n  }) : _c('span', [_vm._v(\"\\n          \" + _vm._s(_vm.headerRow.label) + \"\\n        \")])], {\n    \"row\": _vm.headerRow\n  })], 2)], 2) : _vm._e(), _vm._v(\" \"), _vm.headerRow.mode !== 'span' && _vm.lineNumbers ? _c('th', {\n    staticClass: \"vgt-row-header\"\n  }) : _vm._e(), _vm._v(\" \"), _vm.headerRow.mode !== 'span' && _vm.selectable ? _c('th', {\n    staticClass: \"vgt-row-header\"\n  }, [_vm.selectAllByGroup ? [_vm._t(\"table-header-group-select\", [_c('input', {\n    attrs: {\n      \"type\": \"checkbox\"\n    },\n    domProps: {\n      \"checked\": _vm.allSelected\n    },\n    on: {\n      \"change\": function change($event) {\n        return _vm.toggleSelectGroup($event);\n      }\n    }\n  })], {\n    \"columns\": _vm.columns,\n    \"row\": _vm.headerRow\n  })] : _vm._e()], 2) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, i) {\n    return _vm.headerRow.mode !== 'span' && !column.hidden ? _c('th', {\n      key: i,\n      staticClass: \"vgt-row-header\",\n      \"class\": _vm.getClasses(i, 'td'),\n      on: {\n        \"click\": function click($event) {\n          _vm.columnCollapsable(i) ? _vm.$emit('vgtExpand', !_vm.headerRow.vgtIsExpanded) : function () {};\n        }\n      }\n    }, [_vm.columnCollapsable(i) ? _c('span', {\n      staticClass: \"triangle\",\n      \"class\": {\n        'expand': _vm.headerRow.vgtIsExpanded\n      }\n    }) : _vm._e(), _vm._v(\" \"), _vm._t(\"table-header-row\", [!column.html ? _c('span', [_vm._v(\"\\n        \" + _vm._s(_vm.collectFormatted(_vm.headerRow, column, true)) + \"\\n      \")]) : _vm._e(), _vm._v(\" \"), column.html ? _c('span', {\n      domProps: {\n        \"innerHTML\": _vm._s(_vm.collectFormatted(_vm.headerRow, column, true))\n      }\n    }) : _vm._e()], {\n      \"row\": _vm.headerRow,\n      \"column\": column,\n      \"formattedRow\": _vm.formattedRow(_vm.headerRow, true)\n    })], 2) : _vm._e();\n  })], 2);\n};\n\nvar __vue_staticRenderFns__$5 = [];\n/* style */\n\nvar __vue_inject_styles__$5 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$5 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$5 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$5 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$5 =\n/*#__PURE__*/\nnormalizeComponent({\n  render: __vue_render__$5,\n  staticRenderFns: __vue_staticRenderFns__$5\n}, __vue_inject_styles__$5, __vue_script__$5, __vue_scope_id__$5, __vue_is_functional_template__$5, __vue_module_identifier__$5, false, undefined, undefined, undefined);\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n  }\n\n  var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n  if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n      console.warn(new Error().stack);\n    }\n\n    return new Date(NaN);\n  }\n}\n\nfunction toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n\n  var number = Number(dirtyNumber);\n\n  if (isNaN(number)) {\n    return number;\n  }\n\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n  }\n\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}\n\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\nfunction getTimezoneOffsetInMilliseconds(dirtyDate) {\n  var date = new Date(dirtyDate.getTime());\n  var baseTimezoneOffset = date.getTimezoneOffset();\n  date.setSeconds(0, 0);\n  var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n  return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n *   new Date(1995, 6, 2),\n *   new Date(1987, 1, 11),\n *   new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * //   Wed Feb 11 1987 00:00:00,\n * //   Mon Jul 10 1989 00:00:00,\n * //   Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nfunction compareAsc(dirtyDateLeft, dirtyDateRight) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n  }\n\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var diff = dateLeft.getTime() - dateRight.getTime();\n\n  if (diff < 0) {\n    return -1;\n  } else if (diff > 0) {\n    return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n  } else {\n    return diff;\n  }\n}\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n *   if the first argument is not an instance of Date.\n *   Instead, argument is converted beforehand using `toDate`.\n *\n *   Examples:\n *\n *   | `isValid` argument        | Before v2.0.0 | v2.0.0 onward |\n *   |---------------------------|---------------|---------------|\n *   | `new Date()`              | `true`        | `true`        |\n *   | `new Date('2016-01-01')`  | `true`        | `true`        |\n *   | `new Date('')`            | `false`       | `false`       |\n *   | `new Date(1488370835081)` | `true`        | `true`        |\n *   | `new Date(NaN)`           | `false`       | `false`       |\n *   | `'2016-01-01'`            | `TypeError`   | `true`        |\n *   | `''`                      | `TypeError`   | `false`       |\n *   | `1488370835081`           | `TypeError`   | `true`        |\n *   | `NaN`                     | `TypeError`   | `false`       |\n *\n *   We introduce this change to make *date-fns* consistent with ECMAScript behavior\n *   that try to coerce arguments to the expected type\n *   (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nfunction isValid(dirtyDate) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n  }\n\n  var date = toDate(dirtyDate);\n  return !isNaN(date);\n}\n\nvar formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\nfunction formatDistance(token, count, options) {\n  options = options || {};\n  var result;\n\n  if (typeof formatDistanceLocale[token] === 'string') {\n    result = formatDistanceLocale[token];\n  } else if (count === 1) {\n    result = formatDistanceLocale[token].one;\n  } else {\n    result = formatDistanceLocale[token].other.replace('{{count}}', count);\n  }\n\n  if (options.addSuffix) {\n    if (options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n\n  return result;\n}\n\nfunction buildFormatLongFn(args) {\n  return function (dirtyOptions) {\n    var options = dirtyOptions || {};\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\n\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\n\nvar formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\nfunction formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n}\n\nfunction buildLocalizeFn(args) {\n  return function (dirtyIndex, dirtyOptions) {\n    var options = dirtyOptions || {};\n    var context = options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n\n      var _width = options.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    return valuesArray[index];\n  };\n}\n\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n  // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n  // Generally, formatted dates should look like they are in the middle of a sentence,\n  // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n  var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`:\n  //\n  //   var options = dirtyOptions || {}\n  //   var unit = String(options.unit)\n  //\n  // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'\n\n  var rem100 = number % 100;\n\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n\n      case 2:\n        return number + 'nd';\n\n      case 3:\n        return number + 'rd';\n    }\n  }\n\n  return number + 'th';\n}\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function (quarter) {\n      return Number(quarter) - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\n\nfunction buildMatchPatternFn(args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n    var matchResult = string.match(args.matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n\n    if (!parseResult) {\n      return null;\n    }\n\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    };\n  };\n}\n\nfunction buildMatchFn(args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var value;\n\n    if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n      value = parsePatterns.findIndex(function (pattern) {\n        return pattern.test(string);\n      });\n    } else {\n      value = findKey(parsePatterns, function (pattern) {\n        return pattern.test(string);\n      });\n    }\n\n    value = args.valueCallback ? args.valueCallback(value) : value;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n}\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function (value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function (index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0\n    /* Sunday */\n    ,\n    firstWeekContainsDate: 1\n  }\n};\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n  }\n\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}\n\nfunction addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n\n  return sign + output;\n}\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n  // Year\n  y: function (date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n    var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function (date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n  // Day of the month\n  d: function (date, token) {\n    return addLeadingZeros(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function (date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n      case 'aaa':\n        return dayPeriodEnumValue.toUpperCase();\n\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token) {\n    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function (date, token) {\n    return addLeadingZeros(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function (date, token) {\n    return addLeadingZeros(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function (date, token) {\n    return addLeadingZeros(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, token.length);\n  }\n};\n\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCDayOfYear(dirtyDate) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n  }\n\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCISOWeek(dirtyDate) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n  }\n\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCISOWeekYear(dirtyDate) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n  }\n\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCISOWeekYear(dirtyDate) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n  }\n\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}\n\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCISOWeek(dirtyDate) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n  }\n\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCWeek(dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n  }\n\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCWeekYear(dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n  }\n\n  var date = toDate(dirtyDate, dirtyOptions);\n  var year = date.getUTCFullYear();\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n  }\n\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n  var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, dirtyOptions);\n  return date;\n}\n\nvar MILLISECONDS_IN_WEEK$1 = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCWeek(dirtyDate, options) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n  }\n\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK$1) + 1;\n}\n\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n  /*\n   * |     | Unit                           |     | Unit                           |\n   * |-----|--------------------------------|-----|--------------------------------|\n   * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n   * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n   * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n   * |  d  | Day of month                   |  D  | Day of year                    |\n   * |  e  | Local day of week              |  E  | Day of week                    |\n   * |  f  |                                |  F* | Day of week in month           |\n   * |  g* | Modified Julian day            |  G  | Era                            |\n   * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n   * |  i! | ISO day of week                |  I! | ISO week of year               |\n   * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n   * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n   * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n   * |  m  | Minute                         |  M  | Month                          |\n   * |  n  |                                |  N  |                                |\n   * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n   * |  p! | Long localized time            |  P! | Long localized date            |\n   * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n   * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n   * |  s  | Second                         |  S  | Fraction of second             |\n   * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n   * |  u  | Extended year                  |  U* | Cyclic year                    |\n   * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n   * |  w  | Local week of year             |  W* | Week of month                  |\n   * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n   * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n   * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n   *\n   * Letters marked by * are not implemented but reserved by Unicode standard.\n   *\n   * Letters marked by ! are non-standard, but implemented by date-fns:\n   * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n   * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n   *   i.e. 7 for Sunday, 1 for Monday, etc.\n   * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n   * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n   *   `R` is supposed to be used in conjunction with `I` and `i`\n   *   for universal ISO week-numbering date, whereas\n   *   `Y` is supposed to be used in conjunction with `w` and `e`\n   *   for week-numbering date specific to the locale.\n   * - `P` is long localized date format\n   * - `p` is long localized time format\n   */\n\n};\nvar formatters$1 = {\n  // Era\n  G: function (date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n\n    return formatters.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    } // Ordinal number\n\n\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    } // Padding\n\n\n    return addLeadingZeros(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function (date, token) {\n    var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n  // Quarter\n  Q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'QQ':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'qq':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return formatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n\n      case 'LL':\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function (date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n  // ISO week of year\n  I: function (date, token, localize) {\n    var isoWeek = getUTCISOWeek(date);\n\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n\n    return formatters.d(date, token);\n  },\n  // Day of year\n  D: function (date, token, localize) {\n    var dayOfYear = getUTCDayOfYear(date);\n\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'ee':\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'cc':\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n\n      case 'ii':\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n\n    switch (token) {\n      case 'b':\n      case 'bb':\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return formatters.h(date, token);\n  },\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n\n    return formatters.H(date, token);\n  },\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Minute\n  m: function (date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n\n    return formatters.m(date, token);\n  },\n  // Second\n  s: function (date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n\n    return formatters.s(date, token);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    return formatters.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n\n  return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n\nfunction dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/);\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  var dateTimeFormat;\n\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\n\nvar protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nfunction isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nfunction isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nfunction throwProtectedError(token) {\n  if (token === 'YYYY') {\n    throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');\n  } else if (token === 'YY') {\n    throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');\n  } else if (token === 'D') {\n    throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');\n  } else if (token === 'DD') {\n    throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');\n  }\n}\n\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'(.*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Su            | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          | a..aaa  | AM, PM                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 1, 2, ..., 11, 0                  |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 0001, ..., 999               |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 05/29/1453                        | 7     |\n * |                                 | PP      | May 29, 1453                      | 7     |\n * |                                 | PPP     | May 29th, 1453                    | 7     |\n * |                                 | PPPP    | Sunday, May 29th, 1453            | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 05/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | May 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | May 29th, 1453 at ...             | 7     |\n * |                                 | PPPPpppp| Sunday, May 29th, 1453 at ...     | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   format(new Date(2016, 0, 1))\n *\n *   // v2.0.0 onward\n *   format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n *   ```\n *\n * - New format string API for `format` function\n *   which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n *   See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n  }\n\n  var formatStr = String(dirtyFormatStr);\n  var options = dirtyOptions || {};\n  var locale$1 = options.locale || locale;\n  var localeFirstWeekContainsDate = locale$1.options && locale$1.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var localeWeekStartsOn = locale$1.options && locale$1.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  if (!locale$1.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n\n  if (!locale$1.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n\n  var originalDate = toDate(dirtyDate);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale$1,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale$1.formatLong, formatterOptions);\n    }\n\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n\n    var formatter = formatters$1[firstCharacter];\n\n    if (formatter) {\n      if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n        throwProtectedError(substring);\n      }\n\n      if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n        throwProtectedError(substring);\n      }\n\n      return formatter(utcDate, substring, locale$1.localize, formatterOptions);\n    }\n\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n\n    return substring;\n  }).join('');\n  return result;\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\nfunction assign$1(target, dirtyObject) {\n  if (target == null) {\n    throw new TypeError('assign requires that input parameter not be null or undefined');\n  }\n\n  dirtyObject = dirtyObject || {};\n\n  for (var property in dirtyObject) {\n    if (dirtyObject.hasOwnProperty(property)) {\n      target[property] = dirtyObject[property];\n    }\n  }\n\n  return target;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n  }\n\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = toInteger(dirtyDay);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCISODay(dirtyDate, dirtyDay) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n  }\n\n  var day = toInteger(dirtyDay);\n\n  if (day % 7 === 0) {\n    day = day - 7;\n  }\n\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n  }\n\n  var date = toDate(dirtyDate);\n  var isoWeek = toInteger(dirtyISOWeek);\n  var diff = getUTCISOWeek(date) - isoWeek;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCWeek(dirtyDate, dirtyWeek, options) {\n  if (arguments.length < 2) {\n    throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n  }\n\n  var date = toDate(dirtyDate);\n  var week = toInteger(dirtyWeek);\n  var diff = getUTCWeek(date, options) - week;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE$1 = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n  month: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  date: /^(3[0-1]|[0-2]?\\d)/,\n  // 0 to 31\n  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n  // 0 to 366\n  week: /^(5[0-3]|[0-4]?\\d)/,\n  // 0 to 53\n  hour23h: /^(2[0-3]|[0-1]?\\d)/,\n  // 0 to 23\n  hour24h: /^(2[0-4]|[0-1]?\\d)/,\n  // 0 to 24\n  hour11h: /^(1[0-1]|0?\\d)/,\n  // 0 to 11\n  hour12h: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  minute: /^[0-5]?\\d/,\n  // 0 to 59\n  second: /^[0-5]?\\d/,\n  // 0 to 59\n  singleDigit: /^\\d/,\n  // 0 to 9\n  twoDigits: /^\\d{1,2}/,\n  // 0 to 99\n  threeDigits: /^\\d{1,3}/,\n  // 0 to 999\n  fourDigits: /^\\d{1,4}/,\n  // 0 to 9999\n  anyDigitsSigned: /^-?\\d+/,\n  singleDigitSigned: /^-?\\d/,\n  // 0 to 9, -0 to -9\n  twoDigitsSigned: /^-?\\d{1,2}/,\n  // 0 to 99, -0 to -99\n  threeDigitsSigned: /^-?\\d{1,3}/,\n  // 0 to 999, -0 to -999\n  fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n  basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n  basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n  basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n  extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n  extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n  var matchResult = string.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  }\n\n  var value = parseInt(matchResult[0], 10);\n  return {\n    value: valueCallback ? valueCallback(value) : value,\n    rest: string.slice(matchResult[0].length)\n  };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n  var matchResult = string.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  } // Input is 'Z'\n\n\n  if (matchResult[0] === 'Z') {\n    return {\n      value: 0,\n      rest: string.slice(1)\n    };\n  }\n\n  var sign = matchResult[1] === '+' ? 1 : -1;\n  var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n  var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n  var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n  return {\n    value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE$1 + seconds * MILLISECONDS_IN_SECOND),\n    rest: string.slice(matchResult[0].length)\n  };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n  return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n    default:\n      return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n  }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n    default:\n      return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n  }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n  switch (enumValue) {\n    case 'morning':\n      return 4;\n\n    case 'evening':\n      return 17;\n\n    case 'pm':\n    case 'noon':\n    case 'afternoon':\n      return 12;\n\n    case 'am':\n    case 'midnight':\n    case 'night':\n    default:\n      return 0;\n  }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n  var isCommonEra = currentYear > 0; // Absolute number of the current year:\n  // 1 -> 1 AC\n  // 0 -> 1 BC\n  // -1 -> 2 BC\n\n  var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n  var result;\n\n  if (absCurrentYear <= 50) {\n    result = twoDigitYear || 100;\n  } else {\n    var rangeEnd = absCurrentYear + 50;\n    var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n    var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n  }\n\n  return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O* | Timezone (GMT)                 |\n * |  p  |                                |  P  |                                |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z* | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n  // Era\n  G: {\n    priority: 140,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // AD, BC\n        case 'G':\n        case 'GG':\n        case 'GGG':\n          return match.era(string, {\n            width: 'abbreviated'\n          }) || match.era(string, {\n            width: 'narrow'\n          });\n        // A, B\n\n        case 'GGGGG':\n          return match.era(string, {\n            width: 'narrow'\n          });\n        // Anno Domini, Before Christ\n\n        case 'GGGG':\n        default:\n          return match.era(string, {\n            width: 'wide'\n          }) || match.era(string, {\n            width: 'abbreviated'\n          }) || match.era(string, {\n            width: 'narrow'\n          });\n      }\n    },\n    set: function (date, flags, value, _options) {\n      flags.era = value;\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['R', 'u', 't', 'T']\n  },\n  // Year\n  y: {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n    priority: 130,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'yy'\n        };\n      };\n\n      switch (token) {\n        case 'y':\n          return parseNDigits(4, string, valueCallback);\n\n        case 'yo':\n          return match.ordinalNumber(string, {\n            unit: 'year',\n            valueCallback: valueCallback\n          });\n\n        default:\n          return parseNDigits(token.length, string, valueCallback);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value.isTwoDigitYear || value.year > 0;\n    },\n    set: function (date, flags, value, _options) {\n      var currentYear = date.getUTCFullYear();\n\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n        date.setUTCHours(0, 0, 0, 0);\n        return date;\n      }\n\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n  },\n  // Local week-numbering year\n  Y: {\n    priority: 130,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'YY'\n        };\n      };\n\n      switch (token) {\n        case 'Y':\n          return parseNDigits(4, string, valueCallback);\n\n        case 'Yo':\n          return match.ordinalNumber(string, {\n            unit: 'year',\n            valueCallback: valueCallback\n          });\n\n        default:\n          return parseNDigits(token.length, string, valueCallback);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value.isTwoDigitYear || value.year > 0;\n    },\n    set: function (date, flags, value, options) {\n      var currentYear = getUTCWeekYear(date, options);\n\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n        date.setUTCHours(0, 0, 0, 0);\n        return startOfUTCWeek(date, options);\n      }\n\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n      date.setUTCHours(0, 0, 0, 0);\n      return startOfUTCWeek(date, options);\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n  },\n  // ISO week-numbering year\n  R: {\n    priority: 130,\n    parse: function (string, token, _match, _options) {\n      if (token === 'R') {\n        return parseNDigitsSigned(4, string);\n      }\n\n      return parseNDigitsSigned(token.length, string);\n    },\n    set: function (_date, _flags, value, _options) {\n      var firstWeekOfYear = new Date(0);\n      firstWeekOfYear.setUTCFullYear(value, 0, 4);\n      firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n      return startOfUTCISOWeek(firstWeekOfYear);\n    },\n    incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n  },\n  // Extended year\n  u: {\n    priority: 130,\n    parse: function (string, token, _match, _options) {\n      if (token === 'u') {\n        return parseNDigitsSigned(4, string);\n      }\n\n      return parseNDigitsSigned(token.length, string);\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n  },\n  // Quarter\n  Q: {\n    priority: 120,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'Q':\n        case 'QQ':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, string);\n        // 1st, 2nd, 3rd, 4th\n\n        case 'Qo':\n          return match.ordinalNumber(string, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n\n        case 'QQQ':\n          return match.quarter(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n        case 'QQQQQ':\n          return match.quarter(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1st quarter, 2nd quarter, ...\n\n        case 'QQQQ':\n        default:\n          return match.quarter(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.quarter(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 4;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Stand-alone quarter\n  q: {\n    priority: 120,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'q':\n        case 'qq':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, string);\n        // 1st, 2nd, 3rd, 4th\n\n        case 'qo':\n          return match.ordinalNumber(string, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n\n        case 'qqq':\n          return match.quarter(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n        case 'qqqqq':\n          return match.quarter(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1st quarter, 2nd quarter, ...\n\n        case 'qqqq':\n        default:\n          return match.quarter(string, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.quarter(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 4;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Month\n  M: {\n    priority: 110,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (value) {\n        return value - 1;\n      };\n\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'M':\n          return parseNumericPattern(numericPatterns.month, string, valueCallback);\n        // 01, 02, ..., 12\n\n        case 'MM':\n          return parseNDigits(2, string, valueCallback);\n        // 1st, 2nd, ..., 12th\n\n        case 'Mo':\n          return match.ordinalNumber(string, {\n            unit: 'month',\n            valueCallback: valueCallback\n          });\n        // Jan, Feb, ..., Dec\n\n        case 'MMM':\n          return match.month(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // J, F, ..., D\n\n        case 'MMMMM':\n          return match.month(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // January, February, ..., December\n\n        case 'MMMM':\n        default:\n          return match.month(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.month(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 11;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Stand-alone month\n  L: {\n    priority: 110,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (value) {\n        return value - 1;\n      };\n\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'L':\n          return parseNumericPattern(numericPatterns.month, string, valueCallback);\n        // 01, 02, ..., 12\n\n        case 'LL':\n          return parseNDigits(2, string, valueCallback);\n        // 1st, 2nd, ..., 12th\n\n        case 'Lo':\n          return match.ordinalNumber(string, {\n            unit: 'month',\n            valueCallback: valueCallback\n          });\n        // Jan, Feb, ..., Dec\n\n        case 'LLL':\n          return match.month(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // J, F, ..., D\n\n        case 'LLLLL':\n          return match.month(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // January, February, ..., December\n\n        case 'LLLL':\n        default:\n          return match.month(string, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.month(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 11;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Local week of year\n  w: {\n    priority: 100,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'w':\n          return parseNumericPattern(numericPatterns.week, string);\n\n        case 'wo':\n          return match.ordinalNumber(string, {\n            unit: 'week'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 53;\n    },\n    set: function (date, _flags, value, options) {\n      return startOfUTCWeek(setUTCWeek(date, value, options), options);\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n  },\n  // ISO week of year\n  I: {\n    priority: 100,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'I':\n          return parseNumericPattern(numericPatterns.week, string);\n\n        case 'Io':\n          return match.ordinalNumber(string, {\n            unit: 'week'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 53;\n    },\n    set: function (date, _flags, value, options) {\n      return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n    },\n    incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n  },\n  // Day of the month\n  d: {\n    priority: 90,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'd':\n          return parseNumericPattern(numericPatterns.date, string);\n\n        case 'do':\n          return match.ordinalNumber(string, {\n            unit: 'date'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (date, value, _options) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n      var month = date.getUTCMonth();\n\n      if (isLeapYear) {\n        return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n      } else {\n        return value >= 1 && value <= DAYS_IN_MONTH[month];\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCDate(value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Day of year\n  D: {\n    priority: 90,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'D':\n        case 'DD':\n          return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n        case 'Do':\n          return match.ordinalNumber(string, {\n            unit: 'date'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (date, value, _options) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n\n      if (isLeapYear) {\n        return value >= 1 && value <= 366;\n      } else {\n        return value >= 1 && value <= 365;\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth(0, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n  },\n  // Day of week\n  E: {\n    priority: 90,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // Tue\n        case 'E':\n        case 'EE':\n        case 'EEE':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n\n        case 'EEEEE':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n\n        case 'EEEEEE':\n          return match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n\n        case 'EEEE':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 6;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Local day of week\n  e: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n\n      switch (token) {\n        // 3\n        case 'e':\n        case 'ee':\n          // 03\n          return parseNDigits(token.length, string, valueCallback);\n        // 3rd\n\n        case 'eo':\n          return match.ordinalNumber(string, {\n            unit: 'day',\n            valueCallback: valueCallback\n          });\n        // Tue\n\n        case 'eee':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n\n        case 'eeeee':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n\n        case 'eeeeee':\n          return match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n\n        case 'eeee':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 6;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n  },\n  // Stand-alone local day of week\n  c: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n\n      switch (token) {\n        // 3\n        case 'c':\n        case 'cc':\n          // 03\n          return parseNDigits(token.length, string, valueCallback);\n        // 3rd\n\n        case 'co':\n          return match.ordinalNumber(string, {\n            unit: 'day',\n            valueCallback: valueCallback\n          });\n        // Tue\n\n        case 'ccc':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // T\n\n        case 'ccccc':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tu\n\n        case 'cccccc':\n          return match.day(string, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tuesday\n\n        case 'cccc':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 6;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n  },\n  // ISO day of week\n  i: {\n    priority: 90,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (value) {\n        if (value === 0) {\n          return 7;\n        }\n\n        return value;\n      };\n\n      switch (token) {\n        // 2\n        case 'i':\n        case 'ii':\n          // 02\n          return parseNDigits(token.length, string);\n        // 2nd\n\n        case 'io':\n          return match.ordinalNumber(string, {\n            unit: 'day'\n          });\n        // Tue\n\n        case 'iii':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n        // T\n\n        case 'iiiii':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n        // Tu\n\n        case 'iiiiii':\n          return match.day(string, {\n            width: 'short',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n        // Tuesday\n\n        case 'iiii':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 7;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCISODay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n  },\n  // AM or PM\n  a: {\n    priority: 80,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'a':\n        case 'aa':\n        case 'aaa':\n          return match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'aaaaa':\n          return match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'aaaa':\n        default:\n          return match.dayPeriod(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n  },\n  // AM, PM, midnight\n  b: {\n    priority: 80,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'b':\n        case 'bb':\n        case 'bbb':\n          return match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'bbbbb':\n          return match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'bbbb':\n        default:\n          return match.dayPeriod(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: {\n    priority: 80,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'B':\n        case 'BB':\n        case 'BBB':\n          return match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'BBBBB':\n          return match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'BBBB':\n        default:\n          return match.dayPeriod(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 't', 'T']\n  },\n  // Hour [1-12]\n  h: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'h':\n          return parseNumericPattern(numericPatterns.hour12h, string);\n\n        case 'ho':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 12;\n    },\n    set: function (date, _flags, value, _options) {\n      var isPM = date.getUTCHours() >= 12;\n\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else if (!isPM && value === 12) {\n        date.setUTCHours(0, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n\n      return date;\n    },\n    incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n  },\n  // Hour [0-23]\n  H: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'H':\n          return parseNumericPattern(numericPatterns.hour23h, string);\n\n        case 'Ho':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 23;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(value, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n  },\n  // Hour [0-11]\n  K: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'K':\n          return parseNumericPattern(numericPatterns.hour11h, string);\n\n        case 'Ko':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 11;\n    },\n    set: function (date, _flags, value, _options) {\n      var isPM = date.getUTCHours() >= 12;\n\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n  },\n  // Hour [1-24]\n  k: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'k':\n          return parseNumericPattern(numericPatterns.hour24h, string);\n\n        case 'ko':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 24;\n    },\n    set: function (date, _flags, value, _options) {\n      var hours = value <= 24 ? value % 24 : value;\n      date.setUTCHours(hours, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n  },\n  // Minute\n  m: {\n    priority: 60,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'm':\n          return parseNumericPattern(numericPatterns.minute, string);\n\n        case 'mo':\n          return match.ordinalNumber(string, {\n            unit: 'minute'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 59;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMinutes(value, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['t', 'T']\n  },\n  // Second\n  s: {\n    priority: 50,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 's':\n          return parseNumericPattern(numericPatterns.second, string);\n\n        case 'so':\n          return match.ordinalNumber(string, {\n            unit: 'second'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 59;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCSeconds(value, 0);\n      return date;\n    },\n    incompatibleTokens: ['t', 'T']\n  },\n  // Fraction of second\n  S: {\n    priority: 30,\n    parse: function (string, token, _match, _options) {\n      var valueCallback = function (value) {\n        return Math.floor(value * Math.pow(10, -token.length + 3));\n      };\n\n      return parseNDigits(token.length, string, valueCallback);\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMilliseconds(value);\n      return date;\n    },\n    incompatibleTokens: ['t', 'T']\n  },\n  // Timezone (ISO-8601. +00:00 is `'Z'`)\n  X: {\n    priority: 10,\n    parse: function (string, token, _match, _options) {\n      switch (token) {\n        case 'X':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n        case 'XX':\n          return parseTimezonePattern(timezonePatterns.basic, string);\n\n        case 'XXXX':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n        case 'XXXXX':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n        case 'XXX':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, string);\n      }\n    },\n    set: function (date, flags, value, _options) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n\n      return new Date(date.getTime() - value);\n    },\n    incompatibleTokens: ['t', 'T', 'x']\n  },\n  // Timezone (ISO-8601)\n  x: {\n    priority: 10,\n    parse: function (string, token, _match, _options) {\n      switch (token) {\n        case 'x':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n        case 'xx':\n          return parseTimezonePattern(timezonePatterns.basic, string);\n\n        case 'xxxx':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n        case 'xxxxx':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n        case 'xxx':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, string);\n      }\n    },\n    set: function (date, flags, value, _options) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n\n      return new Date(date.getTime() - value);\n    },\n    incompatibleTokens: ['t', 'T', 'X']\n  },\n  // Seconds timestamp\n  t: {\n    priority: 40,\n    parse: function (string, _token, _match, _options) {\n      return parseAnyDigitsSigned(string);\n    },\n    set: function (_date, _flags, value, _options) {\n      return [new Date(value * 1000), {\n        timestampIsSet: true\n      }];\n    },\n    incompatibleTokens: '*'\n  },\n  // Milliseconds timestamp\n  T: {\n    priority: 20,\n    parse: function (string, _token, _match, _options) {\n      return parseAnyDigitsSigned(string);\n    },\n    set: function (_date, _flags, value, _options) {\n      return [new Date(value), {\n        timestampIsSet: true\n      }];\n    },\n    incompatibleTokens: '*'\n  }\n};\n\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp$1 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp$1 = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp$1 = /^'(.*?)'?$/;\nvar doubleQuoteRegExp$1 = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp$1 = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit                            |Prior| Pattern | Result examples                   | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era                             | 140 | G..GGG  | AD, BC                            |       |\n * |                                 |     | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 |     | GGGGG   | A, B                              |       |\n * | Calendar year                   | 130 | y       | 44, 1, 1900, 2017, 9999           | 4     |\n * |                                 |     | yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | yy      | 44, 01, 00, 17                    | 4     |\n * |                                 |     | yyy     | 044, 001, 123, 999                | 4     |\n * |                                 |     | yyyy    | 0044, 0001, 1900, 2017            | 4     |\n * |                                 |     | yyyyy   | ...                               | 2,4   |\n * | Local week-numbering year       | 130 | Y       | 44, 1, 1900, 2017, 9000           | 4     |\n * |                                 |     | Yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | YY      | 44, 01, 00, 17                    | 4,6   |\n * |                                 |     | YYY     | 044, 001, 123, 999                | 4     |\n * |                                 |     | YYYY    | 0044, 0001, 1900, 2017            | 4,6   |\n * |                                 |     | YYYYY   | ...                               | 2,4   |\n * | ISO week-numbering year         | 130 | R       | -43, 1, 1900, 2017, 9999, -9999   | 4,5   |\n * |                                 |     | RR      | -43, 01, 00, 17                   | 4,5   |\n * |                                 |     | RRR     | -043, 001, 123, 999, -999         | 4,5   |\n * |                                 |     | RRRR    | -0043, 0001, 2017, 9999, -9999    | 4,5   |\n * |                                 |     | RRRRR   | ...                               | 2,4,5 |\n * | Extended year                   | 130 | u       | -43, 1, 1900, 2017, 9999, -999    | 4     |\n * |                                 |     | uu      | -43, 01, 99, -99                  | 4     |\n * |                                 |     | uuu     | -043, 001, 123, 999, -999         | 4     |\n * |                                 |     | uuuu    | -0043, 0001, 2017, 9999, -9999    | 4     |\n * |                                 |     | uuuuu   | ...                               | 2,4   |\n * | Quarter (formatting)            | 120 | Q       | 1, 2, 3, 4                        |       |\n * |                                 |     | Qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | QQ      | 01, 02, 03, 04                    |       |\n * |                                 |     | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | 120 | q       | 1, 2, 3, 4                        |       |\n * |                                 |     | qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | qq      | 01, 02, 03, 04                    |       |\n * |                                 |     | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | qqqqq   | 1, 2, 3, 4                        | 3     |\n * | Month (formatting)              | 110 | M       | 1, 2, ..., 12                     |       |\n * |                                 |     | Mo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | MM      | 01, 02, ..., 12                   |       |\n * |                                 |     | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | MMMM    | January, February, ..., December  | 2     |\n * |                                 |     | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | 110 | L       | 1, 2, ..., 12                     |       |\n * |                                 |     | Lo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | LL      | 01, 02, ..., 12                   |       |\n * |                                 |     | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | LLLL    | January, February, ..., December  | 2     |\n * |                                 |     | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | 100 | w       | 1, 2, ..., 53                     |       |\n * |                                 |     | wo      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | 100 | I       | 1, 2, ..., 53                     | 5     |\n * |                                 |     | Io      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | II      | 01, 02, ..., 53                   | 5     |\n * | Day of month                    |  90 | d       | 1, 2, ..., 31                     |       |\n * |                                 |     | do      | 1st, 2nd, ..., 31st               | 5     |\n * |                                 |     | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     |  90 | D       | 1, 2, ..., 365, 366               | 7     |\n * |                                 |     | Do      | 1st, 2nd, ..., 365th, 366th       | 5     |\n * |                                 |     | DD      | 01, 02, ..., 365, 366             | 7     |\n * |                                 |     | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 |     | DDDD    | ...                               | 2     |\n * | Day of week (formatting)        |  90 | E..EEE  | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 |     | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    |  90 | i       | 1, 2, 3, ..., 7                   | 5     |\n * |                                 |     | io      | 1st, 2nd, ..., 7th                | 5     |\n * |                                 |     | ii      | 01, 02, ..., 07                   | 5     |\n * |                                 |     | iii     | Mon, Tue, Wed, ..., Su            | 5     |\n * |                                 |     | iiii    | Monday, Tuesday, ..., Sunday      | 2,5   |\n * |                                 |     | iiiii   | M, T, W, T, F, S, S               | 5     |\n * |                                 |     | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 5     |\n * | Local day of week (formatting)  |  90 | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | eo      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | ee      | 02, 03, ..., 01                   |       |\n * |                                 |     | eee     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 |     | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) |  90 | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | co      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | cc      | 02, 03, ..., 01                   |       |\n * |                                 |     | ccc     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 |     | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          |  80 | a..aaa  | AM, PM                            |       |\n * |                                 |     | aaaa    | a.m., p.m.                        | 2     |\n * |                                 |     | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          |  80 | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 |     | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 |     | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             |  80 | B..BBB  | at night, in the morning, ...     |       |\n * |                                 |     | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 |     | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     |  70 | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 |     | ho      | 1st, 2nd, ..., 11th, 12th         | 5     |\n * |                                 |     | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     |  70 | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 |     | Ho      | 0th, 1st, 2nd, ..., 23rd          | 5     |\n * |                                 |     | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     |  70 | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 |     | Ko      | 1st, 2nd, ..., 11th, 0th          | 5     |\n * |                                 |     | KK      | 1, 2, ..., 11, 0                  |       |\n * | Hour [1-24]                     |  70 | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 |     | ko      | 24th, 1st, 2nd, ..., 23rd         | 5     |\n * |                                 |     | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          |  60 | m       | 0, 1, ..., 59                     |       |\n * |                                 |     | mo      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | mm      | 00, 01, ..., 59                   |       |\n * | Second                          |  50 | s       | 0, 1, ..., 59                     |       |\n * |                                 |     | so      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | ss      | 00, 01, ..., 59                   |       |\n * | Seconds timestamp               |  40 | t       | 512969520                         |       |\n * |                                 |     | tt      | ...                               | 2     |\n * | Fraction of second              |  30 | S       | 0, 1, ..., 9                      |       |\n * |                                 |     | SS      | 00, 01, ..., 99                   |       |\n * |                                 |     | SSS     | 000, 0001, ..., 999               |       |\n * |                                 |     | SSSS    | ...                               | 2     |\n * | Milliseconds timestamp          |  20 | T       | 512969520900                      |       |\n * |                                 |     | TT      | ...                               | 2     |\n * | Timezone (ISO-8601 w/ Z)        |  10 | X       | -08, +0530, Z                     |       |\n * |                                 |     | XX      | -0800, +0530, Z                   |       |\n * |                                 |     | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 |     | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 |     | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       |  10 | x       | -08, +0530, +00                   |       |\n * |                                 |     | xx      | -0800, +0530, +0000               |       |\n * |                                 |     | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 |     | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 |     | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Long localized date             |  NA | P       | 05/29/1453                        | 5,8   |\n * |                                 |     | PP      | May 29, 1453                      |       |\n * |                                 |     | PPP     | May 29th, 1453                    |       |\n * |                                 |     | PPPP    | Sunday, May 29th, 1453            | 2,5,8 |\n * | Long localized time             |  NA | p       | 12:00 AM                          | 5,8   |\n * |                                 |     | pp      | 12:00:00 AM                       |       |\n * | Combination of date and time    |  NA | Pp      | 05/29/1453, 12:00 AM              |       |\n * |                                 |     | PPpp    | May 29, 1453, 12:00:00 AM         |       |\n * |                                 |     | PPPpp   | May 29th, 1453 at ...             |       |\n * |                                 |     | PPPPpp  | Sunday, May 29th, 1453 at ...     | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular.\n *    In `format` function, they will produce different result:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n *    `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table:\n *    - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n *      as wide as the sequence\n *    - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n *      These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` will try to guess the century of two digit year by proximity with `backupDate`:\n *\n *    `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n *    `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n *    while `uu` will just assign the year as is:\n *\n *    `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n *    `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n *    and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n *    on the given locale.\n *\n *    using `en-US` locale: `P` => `MM/dd/yyyy`\n *    using `en-US` locale: `p` => `hh:mm a`\n *    using `pt-BR` locale: `P` => `dd/MM/yyyy`\n *    using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `backupDate` which works as a context of parsing.\n *\n * `backupDate` must be passed for correct work of the function.\n * If you're not sure which `backupDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `backupDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `backupDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n *   Now `parse` is a new function which parses a string using a provided format.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   parse('2016-01-01')\n *\n *   // v2.0.0 onward\n *   toDate('2016-01-01')\n *   parse('2016-01-01', 'yyyy-MM-dd', new Date())\n *   ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} backupDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n *   locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nfunction parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions) {\n  if (arguments.length < 3) {\n    throw new TypeError('3 arguments required, but only ' + arguments.length + ' present');\n  }\n\n  var dateString = String(dirtyDateString);\n  var formatString = String(dirtyFormatString);\n  var options = dirtyOptions || {};\n  var locale$1 = options.locale || locale;\n\n  if (!locale$1.match) {\n    throw new RangeError('locale must contain match property');\n  }\n\n  var localeFirstWeekContainsDate = locale$1.options && locale$1.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var localeWeekStartsOn = locale$1.options && locale$1.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  if (formatString === '') {\n    if (dateString === '') {\n      return toDate(dirtyBackupDate);\n    } else {\n      return new Date(NaN);\n    }\n  }\n\n  var subFnOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale$1 // If timezone isn't specified, it will be set to the system timezone\n\n  };\n  var setters = [{\n    priority: TIMEZONE_UNIT_PRIORITY,\n    set: dateToSystemTimezone,\n    index: 0\n  }];\n  var i;\n  var tokens = formatString.match(longFormattingTokensRegExp$1).map(function (substring) {\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale$1.formatLong, subFnOptions);\n    }\n\n    return substring;\n  }).join('').match(formattingTokensRegExp$1);\n  var usedTokens = [];\n\n  for (i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n      throwProtectedError(token);\n    }\n\n    if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n      throwProtectedError(token);\n    }\n\n    var firstCharacter = token[0];\n    var parser = parsers[firstCharacter];\n\n    if (parser) {\n      var incompatibleTokens = parser.incompatibleTokens;\n\n      if (Array.isArray(incompatibleTokens)) {\n        var incompatibleToken = void 0;\n\n        for (var _i = 0; _i < usedTokens.length; _i++) {\n          var usedToken = usedTokens[_i].token;\n\n          if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n            incompatibleToken = usedTokens[_i];\n            break;\n          }\n        }\n\n        if (incompatibleToken) {\n          throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n        }\n      } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n        throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n      }\n\n      usedTokens.push({\n        token: firstCharacter,\n        fullToken: token\n      });\n      var parseResult = parser.parse(dateString, token, locale$1.match, subFnOptions);\n\n      if (!parseResult) {\n        return new Date(NaN);\n      }\n\n      setters.push({\n        priority: parser.priority,\n        set: parser.set,\n        validate: parser.validate,\n        value: parseResult.value,\n        index: setters.length\n      });\n      dateString = parseResult.rest;\n    } else {\n      if (firstCharacter.match(unescapedLatinCharacterRegExp$1)) {\n        throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n      } // Replace two single quote characters with one single quote character\n\n\n      if (token === \"''\") {\n        token = \"'\";\n      } else if (firstCharacter === \"'\") {\n        token = cleanEscapedString$1(token);\n      } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n      if (dateString.indexOf(token) === 0) {\n        dateString = dateString.slice(token.length);\n      } else {\n        return new Date(NaN);\n      }\n    }\n  } // Check if the remaining input contains something other than whitespace\n\n\n  if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n    return new Date(NaN);\n  }\n\n  var uniquePrioritySetters = setters.map(function (setter) {\n    return setter.priority;\n  }).sort(function (a, b) {\n    return b - a;\n  }).filter(function (priority, index, array) {\n    return array.indexOf(priority) === index;\n  }).map(function (priority) {\n    return setters.filter(function (setter) {\n      return setter.priority === priority;\n    }).reverse();\n  }).map(function (setterArray) {\n    return setterArray[0];\n  });\n  var date = toDate(dirtyBackupDate);\n\n  if (isNaN(date)) {\n    return new Date(NaN);\n  } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n  var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n  var flags = {};\n\n  for (i = 0; i < uniquePrioritySetters.length; i++) {\n    var setter = uniquePrioritySetters[i];\n\n    if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n      return new Date(NaN);\n    }\n\n    var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n    if (result[0]) {\n      utcDate = result[0];\n      assign$1(flags, result[1]); // Result is date\n    } else {\n      utcDate = result;\n    }\n  }\n\n  return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n  if (flags.timestampIsSet) {\n    return date;\n  }\n\n  var convertedDate = new Date(0);\n  convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n  convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n  return convertedDate;\n}\n\nfunction cleanEscapedString$1(input) {\n  return input.match(escapedStringRegExp$1)[1].replace(doubleQuoteRegExp$1, \"'\");\n}\n\nvar date = lodash_clonedeep(defaultType);\ndate.isRight = true;\n\ndate.compare = function (x, y, column) {\n  function cook(d) {\n    if (column && column.dateInputFormat) {\n      return parse(\"\".concat(d), \"\".concat(column.dateInputFormat), new Date());\n    }\n\n    return d;\n  }\n\n  x = cook(x);\n  y = cook(y);\n\n  if (!isValid(x)) {\n    return -1;\n  }\n\n  if (!isValid(y)) {\n    return 1;\n  }\n\n  return compareAsc(x, y);\n};\n\ndate.format = function (v, column) {\n  if (v === undefined || v === null) return ''; // convert to date\n\n  var date = parse(v, column.dateInputFormat, new Date());\n\n  if (isValid(date)) {\n    return format(date, column.dateOutputFormat);\n  }\n\n  console.error(\"Not a valid date: \\\"\".concat(v, \"\\\"\"));\n  return null;\n};\n\nvar date$1 = /*#__PURE__*/Object.freeze({\n  'default': date\n});\n\nvar number = lodash_clonedeep(defaultType);\nnumber.isRight = true;\n\nnumber.filterPredicate = function (rowval, filter) {\n  return number.compare(rowval, filter) === 0;\n};\n\nnumber.compare = function (x, y) {\n  function cook(d) {\n    // if d is null or undefined we give it the smallest\n    // possible value\n    if (d === undefined || d === null) return -Infinity;\n    return d.indexOf('.') >= 0 ? parseFloat(d) : parseInt(d, 10);\n  }\n\n  x = typeof x === 'number' ? x : cook(x);\n  y = typeof y === 'number' ? y : cook(y);\n  if (x < y) return -1;\n  if (x > y) return 1;\n  return 0;\n};\n\nvar number$1 = /*#__PURE__*/Object.freeze({\n  'default': number\n});\n\nvar decimal = lodash_clonedeep(number);\n\ndecimal.format = function (v) {\n  if (v === undefined || v === null) return '';\n  return parseFloat(Math.round(v * 100) / 100).toFixed(2);\n};\n\nvar decimal$1 = /*#__PURE__*/Object.freeze({\n  'default': decimal\n});\n\nvar percentage = lodash_clonedeep(number);\n\npercentage.format = function (v) {\n  if (v === undefined || v === null) return '';\n  return \"\".concat(parseFloat(v * 100).toFixed(2), \"%\");\n};\n\nvar percentage$1 = /*#__PURE__*/Object.freeze({\n  'default': percentage\n});\n\nvar _boolean = lodash_clonedeep(defaultType);\n\n_boolean.isRight = true;\n\n_boolean.filterPredicate = function (rowval, filter) {\n  return _boolean.compare(rowval, filter) === 0;\n};\n\n_boolean.compare = function (x, y) {\n  function cook(d) {\n    if (typeof d === 'boolean') return d ? 1 : 0;\n    if (typeof d === 'string') return d === 'true' ? 1 : 0;\n    return -Infinity;\n  }\n\n  x = cook(x);\n  y = cook(y);\n  if (x < y) return -1;\n  if (x > y) return 1;\n  return 0;\n};\n\nvar _boolean$1 = /*#__PURE__*/Object.freeze({\n  'default': _boolean\n});\n\nvar index = {\n  date: date$1,\n  decimal: decimal$1,\n  number: number$1,\n  percentage: percentage$1,\n  \"boolean\": _boolean$1\n};\n\nvar dataTypes = {};\nvar coreDataTypes = index;\nlodash_foreach(Object.keys(coreDataTypes), function (key) {\n  var compName = key.replace(/^\\.\\//, '').replace(/\\.js/, '');\n  dataTypes[compName] = coreDataTypes[key][\"default\"];\n});\nvar script$6 = {\n  name: 'vue-good-table',\n  props: {\n    isLoading: {\n      \"default\": null,\n      type: Boolean\n    },\n    maxHeight: {\n      \"default\": null,\n      type: String\n    },\n    fixedHeader: Boolean,\n    theme: {\n      \"default\": ''\n    },\n    mode: {\n      \"default\": 'local'\n    },\n    // could be remote\n    totalRows: {},\n    // required if mode = 'remote'\n    styleClass: {\n      \"default\": 'vgt-table bordered'\n    },\n    columns: {},\n    rows: {},\n    lineNumbers: Boolean,\n    responsive: {\n      \"default\": true,\n      type: Boolean\n    },\n    rtl: Boolean,\n    rowStyleClass: {\n      \"default\": null,\n      type: [Function, String]\n    },\n    compactMode: Boolean,\n    groupOptions: {\n      \"default\": function _default() {\n        return {\n          enabled: false,\n          collapsable: false,\n          rowKey: null\n        };\n      }\n    },\n    selectOptions: {\n      \"default\": function _default() {\n        return {\n          enabled: false,\n          selectionInfoClass: '',\n          selectionText: 'rows selected',\n          clearSelectionText: 'clear',\n          disableSelectInfo: false,\n          selectAllByGroup: false\n        };\n      }\n    },\n    // sort\n    sortOptions: {\n      \"default\": function _default() {\n        return {\n          enabled: true,\n          initialSortBy: {}\n        };\n      }\n    },\n    // pagination\n    paginationOptions: {\n      \"default\": function _default() {\n        return {\n          enabled: false,\n          perPage: 10,\n          perPageDropdown: null,\n          position: 'bottom',\n          dropdownAllowAll: true,\n          mode: 'records' // or pages\n\n        };\n      }\n    },\n    searchOptions: {\n      \"default\": function _default() {\n        return {\n          enabled: false,\n          trigger: null,\n          externalQuery: null,\n          searchFn: null,\n          placeholder: 'Search Table'\n        };\n      }\n    }\n  },\n  data: function data() {\n    return {\n      // loading state for remote mode\n      tableLoading: false,\n      // text options\n      nextText: 'Next',\n      prevText: 'Prev',\n      rowsPerPageText: 'Rows per page',\n      ofText: 'of',\n      allText: 'All',\n      pageText: 'page',\n      // internal select options\n      selectable: false,\n      selectOnCheckboxOnly: false,\n      selectAllByPage: true,\n      disableSelectInfo: false,\n      selectionInfoClass: '',\n      selectionText: 'rows selected',\n      clearSelectionText: 'clear',\n      // keys for rows that are currently expanded\n      maintainExpanded: true,\n      expandedRowKeys: new Set(),\n      // internal sort options\n      sortable: true,\n      defaultSortBy: null,\n      // internal search options\n      searchEnabled: false,\n      searchTrigger: null,\n      externalSearchQuery: null,\n      searchFn: null,\n      searchPlaceholder: 'Search Table',\n      searchSkipDiacritics: false,\n      // internal pagination options\n      perPage: null,\n      paginate: false,\n      paginateOnTop: false,\n      paginateOnBottom: true,\n      customRowsPerPageDropdown: [],\n      paginateDropdownAllowAll: true,\n      paginationMode: 'records',\n      currentPage: 1,\n      currentPerPage: 10,\n      sorts: [],\n      globalSearchTerm: '',\n      filteredRows: [],\n      columnFilters: {},\n      forceSearch: false,\n      sortChanged: false,\n      dataTypes: dataTypes || {}\n    };\n  },\n  watch: {\n    rows: {\n      handler: function handler() {\n        this.$emit('update:isLoading', false);\n        this.filterRows(this.columnFilters, false);\n      },\n      deep: true,\n      immediate: true\n    },\n    selectOptions: {\n      handler: function handler() {\n        this.initializeSelect();\n      },\n      deep: true,\n      immediate: true\n    },\n    paginationOptions: {\n      handler: function handler(newValue, oldValue) {\n        if (!lodash_isequal(newValue, oldValue)) {\n          this.initializePagination();\n        }\n      },\n      deep: true,\n      immediate: true\n    },\n    searchOptions: {\n      handler: function handler() {\n        if (this.searchOptions.externalQuery !== undefined && this.searchOptions.externalQuery !== this.searchTerm) {\n          //* we need to set searchTerm to externalQuery first.\n          this.externalSearchQuery = this.searchOptions.externalQuery;\n          this.handleSearch();\n        }\n\n        this.initializeSearch();\n      },\n      deep: true,\n      immediate: true\n    },\n    sortOptions: {\n      handler: function handler(newValue, oldValue) {\n        if (!lodash_isequal(newValue, oldValue)) {\n          this.initializeSort();\n        }\n      },\n      deep: true\n    },\n    selectedRows: function selectedRows(newValue, oldValue) {\n      if (!lodash_isequal(newValue, oldValue)) {\n        this.$emit('on-selected-rows-change', {\n          selectedRows: this.selectedRows\n        });\n      }\n    }\n  },\n  computed: {\n    tableStyles: function tableStyles() {\n      if (this.compactMode) return this.tableStyleClasses + 'vgt-compact';else return this.tableStyleClasses;\n    },\n    hasFooterSlot: function hasFooterSlot() {\n      return !!this.$slots['table-actions-bottom'];\n    },\n    wrapperStyles: function wrapperStyles() {\n      return {\n        overflow: 'scroll-y',\n        maxHeight: this.maxHeight ? this.maxHeight : 'auto'\n      };\n    },\n    rowKeyField: function rowKeyField() {\n      return this.groupOptions.rowKey || 'vgt_header_id';\n    },\n    hasHeaderRowTemplate: function hasHeaderRowTemplate() {\n      return !!this.$slots['table-header-row'] || !!this.$scopedSlots['table-header-row'];\n    },\n    showEmptySlot: function showEmptySlot() {\n      if (!this.paginated.length) return true;\n\n      if (this.paginated[0].label === 'no groups' && !this.paginated[0].children.length) {\n        return true;\n      }\n\n      return false;\n    },\n    allSelected: function allSelected() {\n      return this.selectedRowCount > 0 && (this.selectAllByPage && this.selectedPageRowsCount === this.totalPageRowCount || !this.selectAllByPage && this.selectedRowCount === this.totalRowCount);\n    },\n    allSelectedIndeterminate: function allSelectedIndeterminate() {\n      return !this.allSelected && (this.selectAllByPage && this.selectedPageRowsCount > 0 || !this.selectAllByPage && this.selectedRowCount > 0);\n    },\n    selectionInfo: function selectionInfo() {\n      return \"\".concat(this.selectedRowCount, \" \").concat(this.selectionText);\n    },\n    selectedRowCount: function selectedRowCount() {\n      return this.selectedRows.length;\n    },\n    selectedPageRowsCount: function selectedPageRowsCount() {\n      return this.selectedPageRows.length;\n    },\n    selectedPageRows: function selectedPageRows() {\n      var selectedRows = [];\n      lodash_foreach(this.paginated, function (headerRow) {\n        lodash_foreach(headerRow.children, function (row) {\n          if (row.vgtSelected) {\n            selectedRows.push(row);\n          }\n        });\n      });\n      return selectedRows;\n    },\n    selectedRows: function selectedRows() {\n      var selectedRows = [];\n      lodash_foreach(this.processedRows, function (headerRow) {\n        lodash_foreach(headerRow.children, function (row) {\n          if (row.vgtSelected) {\n            selectedRows.push(row);\n          }\n        });\n      });\n      return selectedRows.sort(function (r1, r2) {\n        return r1.originalIndex - r2.originalIndex;\n      });\n    },\n    fullColspan: function fullColspan() {\n      var fullColspan = 0;\n\n      for (var i = 0; i < this.columns.length; i += 1) {\n        if (!this.columns[i].hidden) {\n          fullColspan += 1;\n        }\n      }\n\n      if (this.lineNumbers) fullColspan++;\n      if (this.selectable) fullColspan++;\n      return fullColspan;\n    },\n    groupHeaderOnTop: function groupHeaderOnTop() {\n      if (this.groupOptions && this.groupOptions.enabled && this.groupOptions.headerPosition && this.groupOptions.headerPosition === 'bottom') {\n        return false;\n      }\n\n      if (this.groupOptions && this.groupOptions.enabled) return true; // will only get here if groupOptions is false\n\n      return false;\n    },\n    groupHeaderOnBottom: function groupHeaderOnBottom() {\n      if (this.groupOptions && this.groupOptions.enabled && this.groupOptions.headerPosition && this.groupOptions.headerPosition === 'bottom') {\n        return true;\n      }\n\n      return false;\n    },\n    totalRowCount: function totalRowCount() {\n      var total = 0;\n      lodash_foreach(this.processedRows, function (headerRow) {\n        total += headerRow.children ? headerRow.children.length : 0;\n      });\n      return total;\n    },\n    totalPageRowCount: function totalPageRowCount() {\n      var total = 0;\n      lodash_foreach(this.paginated, function (headerRow) {\n        total += headerRow.children ? headerRow.children.length : 0;\n      });\n      return total;\n    },\n    wrapStyleClasses: function wrapStyleClasses() {\n      var classes = 'vgt-wrap';\n      if (this.rtl) classes += ' rtl';\n      classes += \" \".concat(this.theme);\n      return classes;\n    },\n    tableStyleClasses: function tableStyleClasses() {\n      var classes = this.styleClass;\n      classes += \" \".concat(this.theme);\n      return classes;\n    },\n    searchTerm: function searchTerm() {\n      return this.externalSearchQuery != null ? this.externalSearchQuery : this.globalSearchTerm;\n    },\n    //\n    globalSearchAllowed: function globalSearchAllowed() {\n      if (this.searchEnabled && !!this.globalSearchTerm && this.searchTrigger !== 'enter') {\n        return true;\n      }\n\n      if (this.externalSearchQuery != null && this.searchTrigger !== 'enter') {\n        return true;\n      }\n\n      if (this.forceSearch) {\n        this.forceSearch = false;\n        return true;\n      }\n\n      return false;\n    },\n    // this is done everytime sortColumn\n    // or sort type changes\n    //----------------------------------------\n    processedRows: function processedRows() {\n      var _this = this;\n\n      // we only process rows when mode is local\n      var computedRows = this.filteredRows;\n\n      if (this.mode === 'remote') {\n        return computedRows;\n      } // take care of the global filter here also\n\n\n      if (this.globalSearchAllowed) {\n        // here also we need to de-construct and then\n        // re-construct the rows.\n        var allRows = [];\n        lodash_foreach(this.filteredRows, function (headerRow) {\n          allRows.push.apply(allRows, _toConsumableArray(headerRow.children));\n        });\n        var filteredRows = [];\n        lodash_foreach(allRows, function (row) {\n          lodash_foreach(_this.columns, function (col) {\n            // if col does not have search disabled,\n            if (!col.globalSearchDisabled) {\n              // if a search function is provided,\n              // use that for searching, otherwise,\n              // use the default search behavior\n              if (_this.searchFn) {\n                var foundMatch = _this.searchFn(row, col, _this.collectFormatted(row, col), _this.searchTerm);\n\n                if (foundMatch) {\n                  filteredRows.push(row);\n                  return false; // break the loop\n                }\n              } else {\n                // comparison\n                var matched = defaultType.filterPredicate(_this.collectFormatted(row, col), _this.searchTerm, _this.searchSkipDiacritics);\n\n                if (matched) {\n                  filteredRows.push(row);\n                  return false; // break loop\n                }\n              }\n            }\n          });\n        }); // this is where we emit on search\n\n        this.$emit('on-search', {\n          searchTerm: this.searchTerm,\n          rowCount: filteredRows.length\n        }); // here we need to reconstruct the nested structure\n        // of rows\n\n        computedRows = [];\n        lodash_foreach(this.filteredRows, function (headerRow) {\n          var i = headerRow.vgt_header_id;\n          var children = lodash_filter(filteredRows, ['vgt_id', i]);\n\n          if (children.length) {\n            var newHeaderRow = lodash_clonedeep(headerRow);\n            newHeaderRow.children = children;\n            computedRows.push(newHeaderRow);\n          }\n        });\n      }\n\n      if (this.sorts.length) {\n        //* we need to sort\n        computedRows.forEach(function (cRows) {\n          cRows.children.sort(function (xRow, yRow) {\n            //* we need to get column for each sort\n            var sortValue;\n\n            for (var i = 0; i < _this.sorts.length; i += 1) {\n              var column = _this.getColumnForField(_this.sorts[i].field);\n\n              var xvalue = _this.collect(xRow, _this.sorts[i].field);\n\n              var yvalue = _this.collect(yRow, _this.sorts[i].field); //* if a custom sort function has been provided we use that\n\n\n              var sortFn = column.sortFn;\n\n              if (sortFn && typeof sortFn === 'function') {\n                sortValue = sortValue || sortFn(xvalue, yvalue, column, xRow, yRow) * (_this.sorts[i].type === 'desc' ? -1 : 1);\n              } else {\n                //* else we use our own sort\n                sortValue = sortValue || column.typeDef.compare(xvalue, yvalue, column) * (_this.sorts[i].type === 'desc' ? -1 : 1);\n              }\n            }\n\n            return sortValue;\n          });\n        });\n      } // if the filtering is event based, we need to maintain filter\n      // rows\n\n\n      if (this.searchTrigger === 'enter') {\n        this.filteredRows = computedRows;\n      }\n\n      return computedRows;\n    },\n    paginated: function paginated() {\n      var _this2 = this;\n\n      if (!this.processedRows.length) return [];\n\n      if (this.mode === 'remote') {\n        return this.processedRows;\n      } //* flatten the rows for paging.\n\n\n      var paginatedRows = [];\n      lodash_foreach(this.processedRows, function (childRows) {\n        var _paginatedRows;\n\n        //* only add headers when group options are enabled.\n        if (_this2.groupOptions.enabled) {\n          paginatedRows.push(childRows);\n        }\n\n        (_paginatedRows = paginatedRows).push.apply(_paginatedRows, _toConsumableArray(childRows.children));\n      });\n\n      if (this.paginate) {\n        var pageStart = (this.currentPage - 1) * this.currentPerPage; // in case of filtering we might be on a page that is\n        // not relevant anymore\n        // also, if setting to all, current page will not be valid\n\n        if (pageStart >= paginatedRows.length || this.currentPerPage === -1) {\n          this.currentPage = 1;\n          pageStart = 0;\n        } // calculate page end now\n\n\n        var pageEnd = paginatedRows.length + 1; // if the setting is set to 'all'\n\n        if (this.currentPerPage !== -1) {\n          pageEnd = this.currentPage * this.currentPerPage;\n        }\n\n        paginatedRows = paginatedRows.slice(pageStart, pageEnd);\n      } // reconstruct paginated rows here\n\n\n      var reconstructedRows = [];\n      paginatedRows.forEach(function (flatRow) {\n        //* header row?\n        if (flatRow.vgt_header_id !== undefined) {\n          _this2.handleExpanded(flatRow);\n\n          var newHeaderRow = lodash_clonedeep(flatRow);\n          newHeaderRow.children = [];\n          reconstructedRows.push(newHeaderRow);\n        } else {\n          //* child row\n          var hRow = reconstructedRows.find(function (r) {\n            return r.vgt_header_id === flatRow.vgt_id;\n          });\n\n          if (!hRow) {\n            hRow = _this2.processedRows.find(function (r) {\n              return r.vgt_header_id === flatRow.vgt_id;\n            });\n\n            if (hRow) {\n              hRow = lodash_clonedeep(hRow);\n              hRow.children = [];\n              reconstructedRows.push(hRow);\n            }\n          }\n\n          hRow.children.push(flatRow);\n        }\n      });\n      return reconstructedRows;\n    },\n    originalRows: function originalRows() {\n      var rows = lodash_clonedeep(this.rows);\n      var nestedRows = [];\n\n      if (!this.groupOptions.enabled) {\n        nestedRows = this.handleGrouped([{\n          label: 'no groups',\n          children: rows\n        }]);\n      } else {\n        nestedRows = this.handleGrouped(rows);\n      } // we need to preserve the original index of\n      // rows so lets do that\n\n\n      var index = 0;\n      lodash_foreach(nestedRows, function (headerRow, i) {\n        lodash_foreach(headerRow.children, function (row, j) {\n          row.originalIndex = index++;\n        });\n      });\n      return nestedRows;\n    },\n    typedColumns: function typedColumns() {\n      var columns = lodash_assign(this.columns, []);\n\n      for (var i = 0; i < this.columns.length; i++) {\n        var column = columns[i];\n        column.typeDef = this.dataTypes[column.type] || defaultType;\n      }\n\n      return columns;\n    },\n    hasRowClickListener: function hasRowClickListener() {\n      return this.$listeners && this.$listeners['on-row-click'];\n    }\n  },\n  methods: {\n    //* we need to check for expanded row state here\n    //* to maintain it when sorting/filtering\n    handleExpanded: function handleExpanded(headerRow) {\n      if (this.maintainExpanded && this.expandedRowKeys.has(headerRow[this.rowKeyField])) {\n        this.$set(headerRow, 'vgtIsExpanded', true);\n      } else {\n        this.$set(headerRow, 'vgtIsExpanded', false);\n      }\n    },\n    toggleExpand: function toggleExpand(id) {\n      var _this3 = this;\n\n      var headerRow = this.filteredRows.find(function (r) {\n        return r[_this3.rowKeyField] === id;\n      });\n\n      if (headerRow) {\n        this.$set(headerRow, 'vgtIsExpanded', !headerRow.vgtIsExpanded);\n      }\n\n      if (this.maintainExpanded && headerRow.vgtIsExpanded) {\n        this.expandedRowKeys.add(headerRow[this.rowKeyField]);\n      } else {\n        this.expandedRowKeys[\"delete\"](headerRow[this.rowKeyField]);\n      }\n    },\n    expandAll: function expandAll() {\n      var _this4 = this;\n\n      this.filteredRows.forEach(function (row) {\n        _this4.$set(row, 'vgtIsExpanded', true);\n\n        if (_this4.maintainExpanded) {\n          _this4.expandedRowKeys.add(row[_this4.rowKeyField]);\n        }\n      });\n    },\n    collapseAll: function collapseAll() {\n      var _this5 = this;\n\n      this.filteredRows.forEach(function (row) {\n        _this5.$set(row, 'vgtIsExpanded', false);\n\n        _this5.expandedRowKeys.clear();\n      });\n    },\n    getColumnForField: function getColumnForField(field) {\n      for (var i = 0; i < this.typedColumns.length; i += 1) {\n        if (this.typedColumns[i].field === field) return this.typedColumns[i];\n      }\n    },\n    handleSearch: function handleSearch() {\n      this.resetTable(); // for remote mode, we need to emit on-search\n\n      if (this.mode === 'remote') {\n        this.$emit('on-search', {\n          searchTerm: this.searchTerm\n        });\n      }\n    },\n    reset: function reset() {\n      this.initializeSort();\n      this.changePage(1);\n      this.$refs['table-header-primary'].reset(true);\n\n      if (this.$refs['table-header-secondary']) {\n        this.$refs['table-header-secondary'].reset(true);\n      }\n    },\n    emitSelectedRows: function emitSelectedRows() {\n      this.$emit('on-select-all', {\n        selected: this.selectedRowCount === this.totalRowCount,\n        selectedRows: this.selectedRows\n      });\n    },\n    unselectAllInternal: function unselectAllInternal(forceAll) {\n      var _this6 = this;\n\n      var rows = this.selectAllByPage && !forceAll ? this.paginated : this.filteredRows;\n      lodash_foreach(rows, function (headerRow, i) {\n        lodash_foreach(headerRow.children, function (row, j) {\n          _this6.$set(row, 'vgtSelected', false);\n        });\n      });\n      this.emitSelectedRows();\n    },\n    toggleSelectAll: function toggleSelectAll() {\n      var _this7 = this;\n\n      if (this.allSelected) {\n        this.unselectAllInternal();\n        return;\n      }\n\n      var rows = this.selectAllByPage ? this.paginated : this.filteredRows;\n      lodash_foreach(rows, function (headerRow) {\n        lodash_foreach(headerRow.children, function (row) {\n          _this7.$set(row, 'vgtSelected', true);\n        });\n      });\n      this.emitSelectedRows();\n    },\n    toggleSelectGroup: function toggleSelectGroup(event, headerRow) {\n      var _this8 = this;\n\n      lodash_foreach(headerRow.children, function (row) {\n        _this8.$set(row, 'vgtSelected', event.checked);\n      });\n    },\n    changePage: function changePage(value) {\n      if (this.paginationOptions.enabled) {\n        var paginationWidget = this.$refs.paginationBottom;\n\n        if (this.paginationOptions.position === 'top') {\n          paginationWidget = this.$refs.paginationTop;\n        }\n\n        if (paginationWidget) {\n          paginationWidget.currentPage = value; // we also need to set the currentPage\n          // for table.\n\n          this.currentPage = value;\n        }\n      }\n    },\n    pageChangedEvent: function pageChangedEvent() {\n      return {\n        currentPage: this.currentPage,\n        currentPerPage: this.currentPerPage,\n        total: Math.floor(this.totalRowCount / this.currentPerPage)\n      };\n    },\n    pageChanged: function pageChanged(pagination) {\n      this.currentPage = pagination.currentPage;\n      var pageChangedEvent = this.pageChangedEvent();\n      pageChangedEvent.prevPage = pagination.prevPage;\n      this.$emit('on-page-change', pageChangedEvent);\n\n      if (this.mode === 'remote') {\n        this.$emit('update:isLoading', true);\n      }\n    },\n    perPageChanged: function perPageChanged(pagination) {\n      this.currentPerPage = pagination.currentPerPage; //* update perPage also\n\n      var perPageChangedEvent = this.pageChangedEvent();\n      this.$emit('on-per-page-change', perPageChangedEvent);\n\n      if (this.mode === 'remote') {\n        this.$emit('update:isLoading', true);\n      }\n    },\n    changeSort: function changeSort(sorts) {\n      this.sorts = sorts;\n      this.$emit('on-sort-change', sorts); // every time we change sort we need to reset to page 1\n\n      this.changePage(1); // if the mode is remote, we don't need to do anything\n      // after this. just set table loading to true\n\n      if (this.mode === 'remote') {\n        this.$emit('update:isLoading', true);\n        return;\n      }\n\n      this.sortChanged = true;\n    },\n    // checkbox click should always do the following\n    onCheckboxClicked: function onCheckboxClicked(row, index, event) {\n      this.$set(row, 'vgtSelected', !row.vgtSelected);\n      this.$emit('on-row-click', {\n        row: row,\n        pageIndex: index,\n        selected: !!row.vgtSelected,\n        event: event\n      });\n    },\n    onRowDoubleClicked: function onRowDoubleClicked(row, index, event) {\n      this.$emit('on-row-dblclick', {\n        row: row,\n        pageIndex: index,\n        selected: !!row.vgtSelected,\n        event: event\n      });\n    },\n    onRowClicked: function onRowClicked(row, index, event) {\n      if (this.selectable && !this.selectOnCheckboxOnly) {\n        this.$set(row, 'vgtSelected', !row.vgtSelected);\n      }\n\n      this.$emit('on-row-click', {\n        row: row,\n        pageIndex: index,\n        selected: !!row.vgtSelected,\n        event: event\n      });\n    },\n    onRowAuxClicked: function onRowAuxClicked(row, index, event) {\n      this.$emit('on-row-aux-click', {\n        row: row,\n        pageIndex: index,\n        selected: !!row.vgtSelected,\n        event: event\n      });\n    },\n    onCellClicked: function onCellClicked(row, column, rowIndex, event) {\n      this.$emit('on-cell-click', {\n        row: row,\n        column: column,\n        rowIndex: rowIndex,\n        event: event\n      });\n    },\n    onMouseenter: function onMouseenter(row, index) {\n      this.$emit('on-row-mouseenter', {\n        row: row,\n        pageIndex: index\n      });\n    },\n    onMouseleave: function onMouseleave(row, index) {\n      this.$emit('on-row-mouseleave', {\n        row: row,\n        pageIndex: index\n      });\n    },\n    searchTableOnEnter: function searchTableOnEnter() {\n      if (this.searchTrigger === 'enter') {\n        this.handleSearch(); // we reset the filteredRows here because\n        // we want to search across everything.\n\n        this.filteredRows = lodash_clonedeep(this.originalRows);\n        this.forceSearch = true;\n        this.sortChanged = true;\n      }\n    },\n    searchTableOnKeyUp: function searchTableOnKeyUp() {\n      if (this.searchTrigger !== 'enter') {\n        this.handleSearch();\n      }\n    },\n    resetTable: function resetTable() {\n      this.unselectAllInternal(true); // every time we searchTable\n\n      this.changePage(1);\n    },\n    // field can be:\n    // 1. function\n    // 2. regular property - ex: 'prop'\n    // 3. nested property path - ex: 'nested.prop'\n    collect: function collect(obj, field) {\n      // utility function to get nested property\n      function dig(obj, selector) {\n        var result = obj;\n        var splitter = selector.split('.');\n\n        for (var i = 0; i < splitter.length; i++) {\n          if (typeof result === 'undefined' || result === null) {\n            return undefined;\n          }\n\n          result = result[splitter[i]];\n        }\n\n        return result;\n      }\n\n      if (typeof field === 'function') return field(obj);\n      if (typeof field === 'string') return dig(obj, field);\n      return undefined;\n    },\n    collectFormatted: function collectFormatted(obj, column) {\n      var headerRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var value;\n\n      if (headerRow && column.headerField) {\n        value = this.collect(obj, column.headerField);\n      } else {\n        value = this.collect(obj, column.field);\n      }\n\n      if (value === undefined) return ''; // if user has supplied custom formatter,\n      // use that here\n\n      if (column.formatFn && typeof column.formatFn === 'function') {\n        return column.formatFn(value, obj);\n      } // lets format the resultant data\n\n\n      var type = column.typeDef; // this will only happen if we try to collect formatted\n      // before types have been initialized. for example: on\n      // load when external query is specified.\n\n      if (!type) {\n        type = this.dataTypes[column.type] || defaultType;\n      }\n\n      var result = type.format(value, column); // we must have some values in compact mode\n\n      if (this.compactMode && (result == '' || result == null)) return '-';\n      return result;\n    },\n    formattedRow: function formattedRow(row) {\n      var isHeaderRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var formattedRow = {};\n\n      for (var i = 0; i < this.typedColumns.length; i++) {\n        var col = this.typedColumns[i]; // what happens if field is\n\n        if (col.field) {\n          formattedRow[col.field] = this.collectFormatted(row, col, isHeaderRow);\n        }\n      }\n\n      return formattedRow;\n    },\n    // Get classes for the given column index & element.\n    getClasses: function getClasses(index, element, row) {\n      var _this$typedColumns$in = this.typedColumns[index],\n          typeDef = _this$typedColumns$in.typeDef,\n          custom = _this$typedColumns$in[\"\".concat(element, \"Class\")];\n\n      var isRight = typeDef.isRight;\n      if (this.rtl) isRight = true;\n      var classes = {\n        'vgt-right-align': isRight,\n        'vgt-left-align': !isRight\n      }; // for td we need to check if value is\n      // a function.\n\n      if (typeof custom === 'function') {\n        classes[custom(row)] = true;\n      } else if (typeof custom === 'string') {\n        classes[custom] = true;\n      }\n\n      return classes;\n    },\n    // method to filter rows\n    filterRows: function filterRows(columnFilters) {\n      var _this9 = this;\n\n      var fromFilter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      // if (!this.rows.length) return;\n      // this is invoked either as a result of changing filters\n      // or as a result of modifying rows.\n      this.columnFilters = columnFilters;\n      var computedRows = lodash_clonedeep(this.originalRows); // do we have a filter to care about?\n      // if not we don't need to do anything\n\n      if (this.columnFilters && Object.keys(this.columnFilters).length) {\n        // every time we filter rows, we need to set current page\n        // to 1\n        // if the mode is remote, we only need to reset, if this is\n        // being called from filter, not when rows are changing\n        if (this.mode !== 'remote' || fromFilter) {\n          this.changePage(1);\n        } // we need to emit an event and that's that.\n        // but this only needs to be invoked if filter is changing\n        // not when row object is modified.\n\n\n        if (fromFilter) {\n          this.$emit('on-column-filter', {\n            columnFilters: this.columnFilters\n          });\n        } // if mode is remote, we don't do any filtering here.\n\n\n        if (this.mode === 'remote') {\n          if (fromFilter) {\n            this.$emit('update:isLoading', true);\n          } else {\n            // if remote filtering has already been taken care of.\n            this.filteredRows = computedRows;\n          }\n\n          return;\n        }\n\n        var _loop = function _loop(i) {\n          var col = _this9.typedColumns[i];\n\n          if (_this9.columnFilters[col.field]) {\n            computedRows = lodash_foreach(computedRows, function (headerRow) {\n              var newChildren = headerRow.children.filter(function (row) {\n                // If column has a custom filter, use that.\n                if (col.filterOptions && typeof col.filterOptions.filterFn === 'function') {\n                  return col.filterOptions.filterFn(_this9.collect(row, col.field), _this9.columnFilters[col.field]);\n                } // Otherwise Use default filters\n\n\n                var typeDef = col.typeDef;\n                return typeDef.filterPredicate(_this9.collect(row, col.field), _this9.columnFilters[col.field], false, col.filterOptions && _typeof(col.filterOptions.filterDropdownItems) === 'object');\n              }); // should we remove the header?\n\n              headerRow.children = newChildren;\n            });\n          }\n        };\n\n        for (var i = 0; i < this.typedColumns.length; i++) {\n          _loop(i);\n        }\n      }\n\n      this.filteredRows = computedRows;\n    },\n    getCurrentIndex: function getCurrentIndex(index) {\n      return (this.currentPage - 1) * this.currentPerPage + index + 1;\n    },\n    getRowStyleClass: function getRowStyleClass(row) {\n      var classes = '';\n      if (this.hasRowClickListener) classes += 'clickable';\n      var rowStyleClasses;\n\n      if (typeof this.rowStyleClass === 'function') {\n        rowStyleClasses = this.rowStyleClass(row);\n      } else {\n        rowStyleClasses = this.rowStyleClass;\n      }\n\n      if (rowStyleClasses) {\n        classes += \" \".concat(rowStyleClasses);\n      }\n\n      return classes;\n    },\n    handleGrouped: function handleGrouped(originalRows) {\n      var _this10 = this;\n\n      lodash_foreach(originalRows, function (headerRow, i) {\n        headerRow.vgt_header_id = i;\n\n        if (_this10.groupOptions.maintainExpanded && _this10.expandedRowKeys.has(headerRow[_this10.groupOptions.rowKey])) {\n          _this10.$set(headerRow, 'vgtIsExpanded', true);\n        }\n\n        lodash_foreach(headerRow.children, function (childRow) {\n          childRow.vgt_id = i;\n        });\n      });\n      return originalRows;\n    },\n    initializePagination: function initializePagination() {\n      var _this11 = this;\n\n      var _this$paginationOptio = this.paginationOptions,\n          enabled = _this$paginationOptio.enabled,\n          perPage = _this$paginationOptio.perPage,\n          position = _this$paginationOptio.position,\n          perPageDropdown = _this$paginationOptio.perPageDropdown,\n          dropdownAllowAll = _this$paginationOptio.dropdownAllowAll,\n          nextLabel = _this$paginationOptio.nextLabel,\n          prevLabel = _this$paginationOptio.prevLabel,\n          rowsPerPageLabel = _this$paginationOptio.rowsPerPageLabel,\n          ofLabel = _this$paginationOptio.ofLabel,\n          pageLabel = _this$paginationOptio.pageLabel,\n          allLabel = _this$paginationOptio.allLabel,\n          setCurrentPage = _this$paginationOptio.setCurrentPage,\n          mode = _this$paginationOptio.mode;\n\n      if (typeof enabled === 'boolean') {\n        this.paginate = enabled;\n      }\n\n      if (typeof perPage === 'number') {\n        this.perPage = perPage;\n      }\n\n      if (position === 'top') {\n        this.paginateOnTop = true; // default is false\n\n        this.paginateOnBottom = false; // default is true\n      } else if (position === 'both') {\n        this.paginateOnTop = true;\n        this.paginateOnBottom = true;\n      }\n\n      if (Array.isArray(perPageDropdown) && perPageDropdown.length) {\n        this.customRowsPerPageDropdown = perPageDropdown;\n\n        if (!this.perPage) {\n          var _perPageDropdown = _slicedToArray(perPageDropdown, 1);\n\n          this.perPage = _perPageDropdown[0];\n        }\n      }\n\n      if (typeof dropdownAllowAll === 'boolean') {\n        this.paginateDropdownAllowAll = dropdownAllowAll;\n      }\n\n      if (typeof mode === 'string') {\n        this.paginationMode = mode;\n      }\n\n      if (typeof nextLabel === 'string') {\n        this.nextText = nextLabel;\n      }\n\n      if (typeof prevLabel === 'string') {\n        this.prevText = prevLabel;\n      }\n\n      if (typeof rowsPerPageLabel === 'string') {\n        this.rowsPerPageText = rowsPerPageLabel;\n      }\n\n      if (typeof ofLabel === 'string') {\n        this.ofText = ofLabel;\n      }\n\n      if (typeof pageLabel === 'string') {\n        this.pageText = pageLabel;\n      }\n\n      if (typeof allLabel === 'string') {\n        this.allText = allLabel;\n      }\n\n      if (typeof setCurrentPage === 'number') {\n        setTimeout(function () {\n          _this11.changePage(setCurrentPage);\n        }, 500);\n      }\n    },\n    initializeSearch: function initializeSearch() {\n      var _this$searchOptions = this.searchOptions,\n          enabled = _this$searchOptions.enabled,\n          trigger = _this$searchOptions.trigger,\n          externalQuery = _this$searchOptions.externalQuery,\n          searchFn = _this$searchOptions.searchFn,\n          placeholder = _this$searchOptions.placeholder,\n          skipDiacritics = _this$searchOptions.skipDiacritics;\n\n      if (typeof enabled === 'boolean') {\n        this.searchEnabled = enabled;\n      }\n\n      if (trigger === 'enter') {\n        this.searchTrigger = trigger;\n      }\n\n      if (typeof externalQuery === 'string') {\n        this.externalSearchQuery = externalQuery;\n      }\n\n      if (typeof searchFn === 'function') {\n        this.searchFn = searchFn;\n      }\n\n      if (typeof placeholder === 'string') {\n        this.searchPlaceholder = placeholder;\n      }\n\n      if (typeof skipDiacritics === 'boolean') {\n        this.searchSkipDiacritics = skipDiacritics;\n      }\n    },\n    initializeSort: function initializeSort() {\n      var _this$sortOptions = this.sortOptions,\n          enabled = _this$sortOptions.enabled,\n          initialSortBy = _this$sortOptions.initialSortBy;\n\n      if (typeof enabled === 'boolean') {\n        this.sortable = enabled;\n      } //* initialSortBy can be an array or an object\n\n\n      if (_typeof(initialSortBy) === 'object') {\n        var ref = this.fixedHeader ? this.$refs['table-header-secondary'] : this.$refs['table-header-primary'];\n\n        if (Array.isArray(initialSortBy)) {\n          ref.setInitialSort(initialSortBy);\n        } else {\n          var hasField = Object.prototype.hasOwnProperty.call(initialSortBy, 'field');\n          if (hasField) ref.setInitialSort([initialSortBy]);\n        }\n      }\n    },\n    initializeSelect: function initializeSelect() {\n      var _this$selectOptions = this.selectOptions,\n          enabled = _this$selectOptions.enabled,\n          selectionInfoClass = _this$selectOptions.selectionInfoClass,\n          selectionText = _this$selectOptions.selectionText,\n          clearSelectionText = _this$selectOptions.clearSelectionText,\n          selectOnCheckboxOnly = _this$selectOptions.selectOnCheckboxOnly,\n          selectAllByPage = _this$selectOptions.selectAllByPage,\n          disableSelectInfo = _this$selectOptions.disableSelectInfo,\n          selectAllByGroup = _this$selectOptions.selectAllByGroup;\n\n      if (typeof enabled === 'boolean') {\n        this.selectable = enabled;\n      }\n\n      if (typeof selectOnCheckboxOnly === 'boolean') {\n        this.selectOnCheckboxOnly = selectOnCheckboxOnly;\n      }\n\n      if (typeof selectAllByPage === 'boolean') {\n        this.selectAllByPage = selectAllByPage;\n      }\n\n      if (typeof selectAllByGroup === 'boolean') {\n        this.selectAllByGroup = selectAllByGroup;\n      }\n\n      if (typeof disableSelectInfo === 'boolean') {\n        this.disableSelectInfo = disableSelectInfo;\n      }\n\n      if (typeof selectionInfoClass === 'string') {\n        this.selectionInfoClass = selectionInfoClass;\n      }\n\n      if (typeof selectionText === 'string') {\n        this.selectionText = selectionText;\n      }\n\n      if (typeof clearSelectionText === 'string') {\n        this.clearSelectionText = clearSelectionText;\n      }\n    }\n  },\n  mounted: function mounted() {\n    if (this.perPage) {\n      this.currentPerPage = this.perPage;\n    }\n\n    this.initializeSort();\n  },\n  components: {\n    'vgt-pagination': __vue_component__$1,\n    'vgt-global-search': __vue_component__$2,\n    'vgt-header-row': __vue_component__$5,\n    'vgt-table-header': __vue_component__$4\n  }\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n/* template */\n\nvar __vue_render__$6 = function __vue_render__() {\n  var _vm = this;\n\n  var _h = _vm.$createElement;\n\n  var _c = _vm._self._c || _h;\n\n  return _c('div', {\n    \"class\": _vm.wrapStyleClasses\n  }, [_vm.isLoading ? _c('div', {\n    staticClass: \"vgt-loading vgt-center-align\"\n  }, [_vm._t(\"loadingContent\", [_c('span', {\n    staticClass: \"vgt-loading__content\"\n  }, [_vm._v(\"\\n        Loading...\\n      \")])])], 2) : _vm._e(), _vm._v(\" \"), _c('div', {\n    staticClass: \"vgt-inner-wrap\",\n    \"class\": {\n      'is-loading': _vm.isLoading\n    }\n  }, [_vm.paginate && _vm.paginateOnTop ? _vm._t(\"pagination-top\", [_c('vgt-pagination', {\n    ref: \"paginationTop\",\n    attrs: {\n      \"perPage\": _vm.perPage,\n      \"rtl\": _vm.rtl,\n      \"total\": _vm.totalRows || _vm.totalRowCount,\n      \"mode\": _vm.paginationMode,\n      \"nextText\": _vm.nextText,\n      \"prevText\": _vm.prevText,\n      \"rowsPerPageText\": _vm.rowsPerPageText,\n      \"customRowsPerPageDropdown\": _vm.customRowsPerPageDropdown,\n      \"paginateDropdownAllowAll\": _vm.paginateDropdownAllowAll,\n      \"ofText\": _vm.ofText,\n      \"pageText\": _vm.pageText,\n      \"allText\": _vm.allText\n    },\n    on: {\n      \"page-changed\": _vm.pageChanged,\n      \"per-page-changed\": _vm.perPageChanged\n    }\n  })], {\n    \"pageChanged\": _vm.pageChanged,\n    \"perPageChanged\": _vm.perPageChanged,\n    \"total\": _vm.totalRows || _vm.totalRowCount\n  }) : _vm._e(), _vm._v(\" \"), _c('vgt-global-search', {\n    attrs: {\n      \"search-enabled\": _vm.searchEnabled && _vm.externalSearchQuery == null,\n      \"global-search-placeholder\": _vm.searchPlaceholder\n    },\n    on: {\n      \"on-keyup\": _vm.searchTableOnKeyUp,\n      \"on-enter\": _vm.searchTableOnEnter\n    },\n    model: {\n      value: _vm.globalSearchTerm,\n      callback: function callback($$v) {\n        _vm.globalSearchTerm = $$v;\n      },\n      expression: \"globalSearchTerm\"\n    }\n  }, [_c('template', {\n    slot: \"internal-table-actions\"\n  }, [_vm._t(\"table-actions\")], 2)], 2), _vm._v(\" \"), _vm.selectedRowCount && !_vm.disableSelectInfo ? _c('div', {\n    staticClass: \"vgt-selection-info-row clearfix\",\n    \"class\": _vm.selectionInfoClass\n  }, [_vm._v(\"\\n      \" + _vm._s(_vm.selectionInfo) + \"\\n      \"), _c('a', {\n    attrs: {\n      \"href\": \"\"\n    },\n    on: {\n      \"click\": function click($event) {\n        $event.preventDefault();\n        return _vm.unselectAllInternal(true);\n      }\n    }\n  }, [_vm._v(\"\\n        \" + _vm._s(_vm.clearSelectionText) + \"\\n      \")]), _vm._v(\" \"), _c('div', {\n    staticClass: \"vgt-selection-info-row__actions vgt-pull-right\"\n  }, [_vm._t(\"selected-row-actions\")], 2)]) : _vm._e(), _vm._v(\" \"), _c('div', {\n    staticClass: \"vgt-fixed-header\"\n  }, [_vm.fixedHeader ? _c('table', {\n    \"class\": _vm.tableStyleClasses\n  }, [_c(\"vgt-table-header\", {\n    ref: \"table-header-secondary\",\n    tag: \"thead\",\n    attrs: {\n      \"columns\": _vm.columns,\n      \"line-numbers\": _vm.lineNumbers,\n      \"selectable\": _vm.selectable,\n      \"all-selected\": _vm.allSelected,\n      \"all-selected-indeterminate\": _vm.allSelectedIndeterminate,\n      \"mode\": _vm.mode,\n      \"sortable\": _vm.sortable,\n      \"typed-columns\": _vm.typedColumns,\n      \"getClasses\": _vm.getClasses,\n      \"searchEnabled\": _vm.searchEnabled,\n      \"paginated\": _vm.paginated,\n      \"table-ref\": _vm.$refs.table\n    },\n    on: {\n      \"on-toggle-select-all\": _vm.toggleSelectAll,\n      \"on-sort-change\": _vm.changeSort,\n      \"filter-changed\": _vm.filterRows\n    },\n    scopedSlots: _vm._u([{\n      key: \"table-column\",\n      fn: function fn(props) {\n        return [_vm._t(\"table-column\", [_c('span', [_vm._v(_vm._s(props.column.label))])], {\n          \"column\": props.column\n        })];\n      }\n    }], null, true)\n  })], 1) : _vm._e()]), _vm._v(\" \"), _c('div', {\n    \"class\": {\n      'vgt-responsive': _vm.responsive\n    },\n    style: _vm.wrapperStyles\n  }, [_c('table', {\n    ref: \"table\",\n    \"class\": _vm.tableStyles\n  }, [_c(\"vgt-table-header\", {\n    ref: \"table-header-primary\",\n    tag: \"thead\",\n    attrs: {\n      \"columns\": _vm.columns,\n      \"line-numbers\": _vm.lineNumbers,\n      \"selectable\": _vm.selectable,\n      \"all-selected\": _vm.allSelected,\n      \"all-selected-indeterminate\": _vm.allSelectedIndeterminate,\n      \"mode\": _vm.mode,\n      \"sortable\": _vm.sortable,\n      \"typed-columns\": _vm.typedColumns,\n      \"getClasses\": _vm.getClasses,\n      \"searchEnabled\": _vm.searchEnabled\n    },\n    on: {\n      \"on-toggle-select-all\": _vm.toggleSelectAll,\n      \"on-sort-change\": _vm.changeSort,\n      \"filter-changed\": _vm.filterRows\n    },\n    scopedSlots: _vm._u([{\n      key: \"table-column\",\n      fn: function fn(props) {\n        return [_vm._t(\"table-column\", [_c('span', [_vm._v(_vm._s(props.column.label))])], {\n          \"column\": props.column\n        })];\n      }\n    }, {\n      key: \"column-filter\",\n      fn: function fn(props) {\n        return [_vm._t(\"column-filter\", null, {\n          \"column\": props.column,\n          \"updateFilters\": props.updateFilters\n        })];\n      }\n    }], null, true)\n  }), _vm._v(\" \"), _vm._l(_vm.paginated, function (headerRow, index) {\n    return _c('tbody', {\n      key: index\n    }, [_vm.groupHeaderOnTop ? _c('vgt-header-row', {\n      \"class\": _vm.getRowStyleClass(headerRow),\n      attrs: {\n        \"header-row\": headerRow,\n        \"columns\": _vm.columns,\n        \"line-numbers\": _vm.lineNumbers,\n        \"selectable\": _vm.selectable,\n        \"select-all-by-group\": _vm.selectAllByGroup,\n        \"collapsable\": _vm.groupOptions.collapsable,\n        \"collect-formatted\": _vm.collectFormatted,\n        \"formatted-row\": _vm.formattedRow,\n        \"get-classes\": _vm.getClasses,\n        \"full-colspan\": _vm.fullColspan,\n        \"groupIndex\": index\n      },\n      on: {\n        \"vgtExpand\": function vgtExpand($event) {\n          return _vm.toggleExpand(headerRow[_vm.rowKeyField]);\n        },\n        \"on-select-group-change\": function onSelectGroupChange($event) {\n          return _vm.toggleSelectGroup($event, headerRow);\n        }\n      },\n      scopedSlots: _vm._u([{\n        key: \"table-header-row\",\n        fn: function fn(props) {\n          return _vm.hasHeaderRowTemplate ? [_vm._t(\"table-header-row\", null, {\n            \"column\": props.column,\n            \"formattedRow\": props.formattedRow,\n            \"row\": props.row\n          })] : undefined;\n        }\n      }], null, true)\n    }) : _vm._e(), _vm._v(\" \"), _vm._l(headerRow.children, function (row, index) {\n      return (_vm.groupOptions.collapsable ? headerRow.vgtIsExpanded : true) ? _c('tr', {\n        key: row.originalIndex,\n        \"class\": _vm.getRowStyleClass(row),\n        on: {\n          \"mouseenter\": function mouseenter($event) {\n            return _vm.onMouseenter(row, index);\n          },\n          \"mouseleave\": function mouseleave($event) {\n            return _vm.onMouseleave(row, index);\n          },\n          \"dblclick\": function dblclick($event) {\n            return _vm.onRowDoubleClicked(row, index, $event);\n          },\n          \"click\": function click($event) {\n            return _vm.onRowClicked(row, index, $event);\n          },\n          \"auxclick\": function auxclick($event) {\n            return _vm.onRowAuxClicked(row, index, $event);\n          }\n        }\n      }, [_vm.lineNumbers ? _c('th', {\n        staticClass: \"line-numbers\"\n      }, [_vm._v(\"\\n              \" + _vm._s(_vm.getCurrentIndex(index)) + \"\\n            \")]) : _vm._e(), _vm._v(\" \"), _vm.selectable ? _c('th', {\n        staticClass: \"vgt-checkbox-col\",\n        on: {\n          \"click\": function click($event) {\n            $event.stopPropagation();\n            return _vm.onCheckboxClicked(row, index, $event);\n          }\n        }\n      }, [_c('input', {\n        attrs: {\n          \"type\": \"checkbox\"\n        },\n        domProps: {\n          \"checked\": row.vgtSelected\n        }\n      })]) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, i) {\n        return !column.hidden && column.field ? _c('td', {\n          key: i,\n          \"class\": _vm.getClasses(i, 'td', row),\n          attrs: {\n            \"data-label\": _vm.compactMode ? column.label : undefined\n          },\n          on: {\n            \"click\": function click($event) {\n              return _vm.onCellClicked(row, column, index, $event);\n            }\n          }\n        }, [_vm._t(\"table-row\", [!column.html ? _c('span', [_vm._v(\"\\n                  \" + _vm._s(_vm.collectFormatted(row, column)) + \"\\n                \")]) : _vm._e(), _vm._v(\" \"), column.html ? _c('span', {\n          domProps: {\n            \"innerHTML\": _vm._s(_vm.collect(row, column.field))\n          }\n        }) : _vm._e()], {\n          \"row\": row,\n          \"column\": column,\n          \"formattedRow\": _vm.formattedRow(row),\n          \"index\": index\n        })], 2) : _vm._e();\n      })], 2) : _vm._e();\n    }), _vm._v(\" \"), _vm.groupHeaderOnBottom ? _c('vgt-header-row', {\n      attrs: {\n        \"header-row\": headerRow,\n        \"columns\": _vm.columns,\n        \"line-numbers\": _vm.lineNumbers,\n        \"selectable\": _vm.selectable,\n        \"select-all-by-group\": _vm.selectAllByGroup,\n        \"collect-formatted\": _vm.collectFormatted,\n        \"formatted-row\": _vm.formattedRow,\n        \"get-classes\": _vm.getClasses,\n        \"full-colspan\": _vm.fullColspan,\n        \"groupIndex\": index\n      },\n      on: {\n        \"on-select-group-change\": function onSelectGroupChange($event) {\n          return _vm.toggleSelectGroup($event, headerRow);\n        }\n      },\n      scopedSlots: _vm._u([{\n        key: \"table-header-row\",\n        fn: function fn(props) {\n          return _vm.hasHeaderRowTemplate ? [_vm._t(\"table-header-row\", null, {\n            \"column\": props.column,\n            \"formattedRow\": props.formattedRow,\n            \"row\": props.row\n          })] : undefined;\n        }\n      }], null, true)\n    }) : _vm._e()], 2);\n  }), _vm._v(\" \"), _vm.showEmptySlot ? _c('tbody', [_c('tr', [_c('td', {\n    attrs: {\n      \"colspan\": _vm.fullColspan\n    }\n  }, [_vm._t(\"emptystate\", [_c('div', {\n    staticClass: \"vgt-center-align vgt-text-disabled\"\n  }, [_vm._v(\"\\n                  No data for table\\n                \")])])], 2)])]) : _vm._e()], 2)]), _vm._v(\" \"), _vm.hasFooterSlot ? _c('div', {\n    staticClass: \"vgt-wrap__actions-footer\"\n  }, [_vm._t(\"table-actions-bottom\")], 2) : _vm._e(), _vm._v(\" \"), _vm.paginate && _vm.paginateOnBottom ? _vm._t(\"pagination-bottom\", [_c('vgt-pagination', {\n    ref: \"paginationBottom\",\n    attrs: {\n      \"perPage\": _vm.perPage,\n      \"rtl\": _vm.rtl,\n      \"total\": _vm.totalRows || _vm.totalRowCount,\n      \"mode\": _vm.paginationMode,\n      \"nextText\": _vm.nextText,\n      \"prevText\": _vm.prevText,\n      \"rowsPerPageText\": _vm.rowsPerPageText,\n      \"customRowsPerPageDropdown\": _vm.customRowsPerPageDropdown,\n      \"paginateDropdownAllowAll\": _vm.paginateDropdownAllowAll,\n      \"ofText\": _vm.ofText,\n      \"pageText\": _vm.pageText,\n      \"allText\": _vm.allText\n    },\n    on: {\n      \"page-changed\": _vm.pageChanged,\n      \"per-page-changed\": _vm.perPageChanged\n    }\n  })], {\n    \"pageChanged\": _vm.pageChanged,\n    \"perPageChanged\": _vm.perPageChanged,\n    \"total\": _vm.totalRows || _vm.totalRowCount\n  }) : _vm._e()], 2)]);\n};\n\nvar __vue_staticRenderFns__$6 = [];\n/* style */\n\nvar __vue_inject_styles__$6 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$6 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$6 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$6 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$6 =\n/*#__PURE__*/\nnormalizeComponent({\n  render: __vue_render__$6,\n  staticRenderFns: __vue_staticRenderFns__$6\n}, __vue_inject_styles__$6, __vue_script__$6, __vue_scope_id__$6, __vue_is_functional_template__$6, __vue_module_identifier__$6, false, undefined, undefined, undefined);\n\nvar VueGoodTablePlugin = {\n  install: function install(Vue, options) {\n    Vue.component(__vue_component__$6.name, __vue_component__$6);\n  }\n}; // Automatic installation if Vue has been added to the global scope.\n\nif (typeof window !== 'undefined' && window.Vue) {\n  window.Vue.use(VueGoodTablePlugin);\n}\n\nexport default VueGoodTablePlugin;\nexport { __vue_component__$6 as VueGoodTable };\n","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { COMPONENT_UID_KEY, Vue } from '../../vue';\nimport { NAME_TABS, NAME_TAB_BUTTON_HELPER } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_ACTIVATE_TAB, EVENT_NAME_CHANGED, EVENT_NAME_CLICK, EVENT_NAME_FIRST, EVENT_NAME_LAST, EVENT_NAME_NEXT, EVENT_NAME_PREV } from '../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_TABS_END, SLOT_NAME_TABS_START, SLOT_NAME_TITLE } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, selectAll, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isEvent } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { stableSort } from '../../utils/stable-sort';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink } from '../link/link';\nimport { BNav, props as BNavProps } from '../nav/nav'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n  type: PROP_TYPE_NUMBER\n}),\n    modelMixin = _makeModelMixin.mixin,\n    modelProps = _makeModelMixin.props,\n    MODEL_PROP_NAME = _makeModelMixin.prop,\n    MODEL_EVENT_NAME = _makeModelMixin.event; // --- Helper methods ---\n// Filter function to filter out disabled tabs\n\n\nvar notDisabled = function notDisabled(tab) {\n  return !tab.disabled;\n}; // --- Helper components ---\n// @vue/component\n\n\nvar BVTabButton = /*#__PURE__*/Vue.extend({\n  name: NAME_TAB_BUTTON_HELPER,\n  inject: {\n    bvTabs: {\n      default:\n      /* istanbul ignore next */\n      function _default() {\n        return {};\n      }\n    }\n  },\n  props: {\n    controls: makeProp(PROP_TYPE_STRING),\n    id: makeProp(PROP_TYPE_STRING),\n    noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n    posInSet: makeProp(PROP_TYPE_NUMBER),\n    setSize: makeProp(PROP_TYPE_NUMBER),\n    // Reference to the child <b-tab> instance\n    tab: makeProp(),\n    tabIndex: makeProp(PROP_TYPE_NUMBER)\n  },\n  methods: {\n    focus: function focus() {\n      attemptFocus(this.$refs.link);\n    },\n    handleEvt: function handleEvt(event) {\n      /* istanbul ignore next */\n      if (this.tab.disabled) {\n        return;\n      }\n\n      var type = event.type,\n          keyCode = event.keyCode,\n          shiftKey = event.shiftKey;\n\n      if (type === 'click') {\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && keyCode === CODE_SPACE) {\n        // For ARIA tabs the SPACE key will also trigger a click/select\n        // Even with keyboard navigation disabled, SPACE should \"click\" the button\n        // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && !this.noKeyNav) {\n        // For keyboard navigation\n        if ([CODE_UP, CODE_LEFT, CODE_HOME].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n\n          if (shiftKey || keyCode === CODE_HOME) {\n            this.$emit(EVENT_NAME_FIRST, event);\n          } else {\n            this.$emit(EVENT_NAME_PREV, event);\n          }\n        } else if ([CODE_DOWN, CODE_RIGHT, CODE_END].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n\n          if (shiftKey || keyCode === CODE_END) {\n            this.$emit(EVENT_NAME_LAST, event);\n          } else {\n            this.$emit(EVENT_NAME_NEXT, event);\n          }\n        }\n      }\n    }\n  },\n  render: function render(h) {\n    var id = this.id,\n        tabIndex = this.tabIndex,\n        setSize = this.setSize,\n        posInSet = this.posInSet,\n        controls = this.controls,\n        handleEvt = this.handleEvt;\n    var _this$tab = this.tab,\n        title = _this$tab.title,\n        localActive = _this$tab.localActive,\n        disabled = _this$tab.disabled,\n        titleItemClass = _this$tab.titleItemClass,\n        titleLinkClass = _this$tab.titleLinkClass,\n        titleLinkAttributes = _this$tab.titleLinkAttributes;\n    var $link = h(BLink, {\n      staticClass: 'nav-link',\n      class: [{\n        active: localActive && !disabled,\n        disabled: disabled\n      }, titleLinkClass, // Apply <b-tabs> `activeNavItemClass` styles when the tab is active\n      localActive ? this.bvTabs.activeNavItemClass : null],\n      props: {\n        disabled: disabled\n      },\n      attrs: _objectSpread(_objectSpread({}, titleLinkAttributes), {}, {\n        id: id,\n        role: 'tab',\n        // Roving tab index when keynav enabled\n        tabindex: tabIndex,\n        'aria-selected': localActive && !disabled ? 'true' : 'false',\n        'aria-setsize': setSize,\n        'aria-posinset': posInSet,\n        'aria-controls': controls\n      }),\n      on: {\n        click: handleEvt,\n        keydown: handleEvt\n      },\n      ref: 'link'\n    }, [this.tab.normalizeSlot(SLOT_NAME_TITLE) || title]);\n    return h('li', {\n      staticClass: 'nav-item',\n      class: [titleItemClass],\n      attrs: {\n        role: 'presentation'\n      }\n    }, [$link]);\n  }\n}); // --- Props ---\n\nvar navProps = omit(BNavProps, ['tabs', 'isNavBar', 'cardHeader']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), navProps), {}, {\n  // Only applied to the currently active `<b-nav-item>`\n  activeNavItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Only applied to the currently active `<b-tab>`\n  // This prop is sniffed by the `<b-tab>` child\n  activeTabClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  card: makeProp(PROP_TYPE_BOOLEAN, false),\n  contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Synonym for 'bottom'\n  end: makeProp(PROP_TYPE_BOOLEAN, false),\n  // This prop is sniffed by the `<b-tab>` child\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  navClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  navWrapperClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n  noNavStyle: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n})), NAME_TABS); // --- Main component ---\n// @vue/component\n\nexport var BTabs = /*#__PURE__*/Vue.extend({\n  name: NAME_TABS,\n  mixins: [idMixin, modelMixin, normalizeSlotMixin],\n  provide: function provide() {\n    return {\n      bvTabs: this\n    };\n  },\n  props: props,\n  data: function data() {\n    return {\n      // Index of current tab\n      currentTab: toInteger(this[MODEL_PROP_NAME], -1),\n      // Array of direct child `<b-tab>` instances, in DOM order\n      tabs: [],\n      // Array of child instances registered (for triggering reactive updates)\n      registeredTabs: []\n    };\n  },\n  computed: {\n    fade: function fade() {\n      // This computed prop is sniffed by the tab child\n      return !this.noFade;\n    },\n    localNavClass: function localNavClass() {\n      var classes = [];\n\n      if (this.card && this.vertical) {\n        classes.push('card-header', 'h-100', 'border-bottom-0', 'rounded-0');\n      }\n\n      return [].concat(classes, [this.navClass]);\n    }\n  },\n  watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n    if (newValue !== oldValue) {\n      newValue = toInteger(newValue, -1);\n      oldValue = toInteger(oldValue, 0);\n      var $tab = this.tabs[newValue];\n\n      if ($tab && !$tab.disabled) {\n        this.activateTab($tab);\n      } else {\n        // Try next or prev tabs\n        if (newValue < oldValue) {\n          this.previousTab();\n        } else {\n          this.nextTab();\n        }\n      }\n    }\n  }), _defineProperty(_watch, \"currentTab\", function currentTab(newValue) {\n    var index = -1; // Ensure only one tab is active at most\n\n    this.tabs.forEach(function ($tab, i) {\n      if (i === newValue && !$tab.disabled) {\n        $tab.localActive = true;\n        index = i;\n      } else {\n        $tab.localActive = false;\n      }\n    }); // Update the v-model\n\n    this.$emit(MODEL_EVENT_NAME, index);\n  }), _defineProperty(_watch, \"tabs\", function tabs(newValue, oldValue) {\n    var _this = this;\n\n    // We use `_uid` instead of `safeId()`, as the later is changed in a `$nextTick()`\n    // if no explicit ID is provided, causing duplicate emits\n    if (!looseEqual(newValue.map(function ($tab) {\n      return $tab[COMPONENT_UID_KEY];\n    }), oldValue.map(function ($tab) {\n      return $tab[COMPONENT_UID_KEY];\n    }))) {\n      // In a `$nextTick()` to ensure `currentTab` has been set first\n      this.$nextTick(function () {\n        // We emit shallow copies of the new and old arrays of tabs,\n        // to prevent users from potentially mutating the internal arrays\n        _this.$emit(EVENT_NAME_CHANGED, newValue.slice(), oldValue.slice());\n      });\n    }\n  }), _defineProperty(_watch, \"registeredTabs\", function registeredTabs() {\n    this.updateTabs();\n  }), _watch),\n  created: function created() {\n    // Create private non-reactive props\n    this.$_observer = null;\n  },\n  mounted: function mounted() {\n    this.setObserver(true);\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.setObserver(false); // Ensure no references to child instances exist\n\n    this.tabs = [];\n  },\n  methods: {\n    registerTab: function registerTab($tab) {\n      if (!arrayIncludes(this.registeredTabs, $tab)) {\n        this.registeredTabs.push($tab);\n      }\n    },\n    unregisterTab: function unregisterTab($tab) {\n      this.registeredTabs = this.registeredTabs.slice().filter(function ($t) {\n        return $t !== $tab;\n      });\n    },\n    // DOM observer is needed to detect changes in order of tabs\n    setObserver: function setObserver() {\n      var _this2 = this;\n\n      var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      this.$_observer && this.$_observer.disconnect();\n      this.$_observer = null;\n\n      if (on) {\n        /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n        var handler = function handler() {\n          _this2.$nextTick(function () {\n            requestAF(function () {\n              _this2.updateTabs();\n            });\n          });\n        }; // Watch for changes to `<b-tab>` sub components\n\n\n        this.$_observer = observeDom(this.$refs.content, handler, {\n          childList: true,\n          subtree: false,\n          attributes: true,\n          attributeFilter: ['id']\n        });\n      }\n    },\n    getTabs: function getTabs() {\n      var $tabs = this.registeredTabs.filter(function ($tab) {\n        return $tab.$children.filter(function ($t) {\n          return $t._isTab;\n        }).length === 0;\n      }); // DOM Order of Tabs\n\n      var order = [];\n      /* istanbul ignore next: too difficult to test */\n\n      if (IS_BROWSER && $tabs.length > 0) {\n        // We rely on the DOM when mounted to get the \"true\" order of the `<b-tab>` children\n        // `querySelectorAll()` always returns elements in document order, regardless of\n        // order specified in the selector\n        var selector = $tabs.map(function ($tab) {\n          return \"#\".concat($tab.safeId());\n        }).join(', ');\n        order = selectAll(selector, this.$el).map(function ($el) {\n          return $el.id;\n        }).filter(identity);\n      } // Stable sort keeps the original order if not found in the `order` array,\n      // which will be an empty array before mount\n\n\n      return stableSort($tabs, function (a, b) {\n        return order.indexOf(a.safeId()) - order.indexOf(b.safeId());\n      });\n    },\n    updateTabs: function updateTabs() {\n      var $tabs = this.getTabs(); // Find last active non-disabled tab in current tabs\n      // We trust tab state over `currentTab`, in case tabs were added/removed/re-ordered\n\n      var tabIndex = $tabs.indexOf($tabs.slice().reverse().find(function ($tab) {\n        return $tab.localActive && !$tab.disabled;\n      })); // Else try setting to `currentTab`\n\n      if (tabIndex < 0) {\n        var currentTab = this.currentTab;\n\n        if (currentTab >= $tabs.length) {\n          // Handle last tab being removed, so find the last non-disabled tab\n          tabIndex = $tabs.indexOf($tabs.slice().reverse().find(notDisabled));\n        } else if ($tabs[currentTab] && !$tabs[currentTab].disabled) {\n          // Current tab is not disabled\n          tabIndex = currentTab;\n        }\n      } // Else find first non-disabled tab in current tabs\n\n\n      if (tabIndex < 0) {\n        tabIndex = $tabs.indexOf($tabs.find(notDisabled));\n      } // Ensure only one tab is active at a time\n\n\n      $tabs.forEach(function ($tab, index) {\n        $tab.localActive = index === tabIndex;\n      });\n      this.tabs = $tabs;\n      this.currentTab = tabIndex;\n    },\n    // Find a button that controls a tab, given the tab reference\n    // Returns the button vm instance\n    getButtonForTab: function getButtonForTab($tab) {\n      return (this.$refs.buttons || []).find(function ($btn) {\n        return $btn.tab === $tab;\n      });\n    },\n    // Force a button to re-render its content, given a `<b-tab>` instance\n    // Called by `<b-tab>` on `update()`\n    updateButton: function updateButton($tab) {\n      var $button = this.getButtonForTab($tab);\n\n      if ($button && $button.$forceUpdate) {\n        $button.$forceUpdate();\n      }\n    },\n    // Activate a tab given a `<b-tab>` instance\n    // Also accessed by `<b-tab>`\n    activateTab: function activateTab($tab) {\n      var currentTab = this.currentTab,\n          $tabs = this.tabs;\n      var result = false;\n\n      if ($tab) {\n        var index = $tabs.indexOf($tab);\n\n        if (index !== currentTab && index > -1 && !$tab.disabled) {\n          var tabEvent = new BvEvent(EVENT_NAME_ACTIVATE_TAB, {\n            cancelable: true,\n            vueTarget: this,\n            componentId: this.safeId()\n          });\n          this.$emit(tabEvent.type, index, currentTab, tabEvent);\n\n          if (!tabEvent.defaultPrevented) {\n            this.currentTab = index;\n            result = true;\n          }\n        }\n      } // Couldn't set tab, so ensure v-model is up to date\n\n      /* istanbul ignore next: should rarely happen */\n\n\n      if (!result && this[MODEL_PROP_NAME] !== currentTab) {\n        this.$emit(MODEL_EVENT_NAME, currentTab);\n      }\n\n      return result;\n    },\n    // Deactivate a tab given a `<b-tab>` instance\n    // Accessed by `<b-tab>`\n    deactivateTab: function deactivateTab($tab) {\n      if ($tab) {\n        // Find first non-disabled tab that isn't the one being deactivated\n        // If no tabs are available, then don't deactivate current tab\n        return this.activateTab(this.tabs.filter(function ($t) {\n          return $t !== $tab;\n        }).find(notDisabled));\n      }\n      /* istanbul ignore next: should never/rarely happen */\n\n\n      return false;\n    },\n    // Focus a tab button given its `<b-tab>` instance\n    focusButton: function focusButton($tab) {\n      var _this3 = this;\n\n      // Wrap in `$nextTick()` to ensure DOM has completed rendering\n      this.$nextTick(function () {\n        attemptFocus(_this3.getButtonForTab($tab));\n      });\n    },\n    // Emit a click event on a specified `<b-tab>` component instance\n    emitTabClick: function emitTabClick(tab, event) {\n      if (isEvent(event) && tab && tab.$emit && !tab.disabled) {\n        tab.$emit(EVENT_NAME_CLICK, event);\n      }\n    },\n    // Click handler\n    clickTab: function clickTab($tab, event) {\n      this.activateTab($tab);\n      this.emitTabClick($tab, event);\n    },\n    // Move to first non-disabled tab\n    firstTab: function firstTab(focus) {\n      var $tab = this.tabs.find(notDisabled);\n\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to previous non-disabled tab\n    previousTab: function previousTab(focus) {\n      var currentIndex = mathMax(this.currentTab, 0);\n      var $tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to next non-disabled tab\n    nextTab: function nextTab(focus) {\n      var currentIndex = mathMax(this.currentTab, -1);\n      var $tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to last non-disabled tab\n    lastTab: function lastTab(focus) {\n      var $tab = this.tabs.slice().reverse().find(notDisabled);\n\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    }\n  },\n  render: function render(h) {\n    var _this4 = this;\n\n    var align = this.align,\n        card = this.card,\n        end = this.end,\n        fill = this.fill,\n        firstTab = this.firstTab,\n        justified = this.justified,\n        lastTab = this.lastTab,\n        nextTab = this.nextTab,\n        noKeyNav = this.noKeyNav,\n        noNavStyle = this.noNavStyle,\n        pills = this.pills,\n        previousTab = this.previousTab,\n        small = this.small,\n        $tabs = this.tabs,\n        vertical = this.vertical; // Currently active tab\n\n    var $activeTab = $tabs.find(function ($tab) {\n      return $tab.localActive && !$tab.disabled;\n    }); // Tab button to allow focusing when no active tab found (keynav only)\n\n    var $fallbackTab = $tabs.find(function ($tab) {\n      return !$tab.disabled;\n    }); // For each `<b-tab>` found create the tab buttons\n\n    var $buttons = $tabs.map(function ($tab, index) {\n      var _on;\n\n      var safeId = $tab.safeId; // Ensure at least one tab button is focusable when keynav enabled (if possible)\n\n      var tabIndex = null;\n\n      if (!noKeyNav) {\n        // Buttons are not in tab index unless active, or a fallback tab\n        tabIndex = -1;\n\n        if ($tab === $activeTab || !$activeTab && $tab === $fallbackTab) {\n          // Place tab button in tab sequence\n          tabIndex = null;\n        }\n      }\n\n      return h(BVTabButton, {\n        props: {\n          controls: safeId ? safeId() : null,\n          id: $tab.controlledBy || (safeId ? safeId(\"_BV_tab_button_\") : null),\n          noKeyNav: noKeyNav,\n          posInSet: index + 1,\n          setSize: $tabs.length,\n          tab: $tab,\n          tabIndex: tabIndex\n        },\n        on: (_on = {}, _defineProperty(_on, EVENT_NAME_CLICK, function (event) {\n          _this4.clickTab($tab, event);\n        }), _defineProperty(_on, EVENT_NAME_FIRST, firstTab), _defineProperty(_on, EVENT_NAME_PREV, previousTab), _defineProperty(_on, EVENT_NAME_NEXT, nextTab), _defineProperty(_on, EVENT_NAME_LAST, lastTab), _on),\n        key: $tab[COMPONENT_UID_KEY] || index,\n        ref: 'buttons',\n        // Needed to make `this.$refs.buttons` an array\n        refInFor: true\n      });\n    });\n    var $nav = h(BNav, {\n      class: this.localNavClass,\n      attrs: {\n        role: 'tablist',\n        id: this.safeId('_BV_tab_controls_')\n      },\n      props: {\n        fill: fill,\n        justified: justified,\n        align: align,\n        tabs: !noNavStyle && !pills,\n        pills: !noNavStyle && pills,\n        vertical: vertical,\n        small: small,\n        cardHeader: card && !vertical\n      },\n      ref: 'nav'\n    }, [this.normalizeSlot(SLOT_NAME_TABS_START) || h(), $buttons, this.normalizeSlot(SLOT_NAME_TABS_END) || h()]);\n    $nav = h('div', {\n      class: [{\n        'card-header': card && !vertical && !end,\n        'card-footer': card && !vertical && end,\n        'col-auto': vertical\n      }, this.navWrapperClass],\n      key: 'bv-tabs-nav'\n    }, [$nav]);\n    var $children = this.normalizeSlot() || [];\n    var $empty = h();\n\n    if ($children.length === 0) {\n      $empty = h('div', {\n        class: ['tab-pane', 'active', {\n          'card-body': card\n        }],\n        key: 'bv-empty-tab'\n      }, this.normalizeSlot(SLOT_NAME_EMPTY));\n    }\n\n    var $content = h('div', {\n      staticClass: 'tab-content',\n      class: [{\n        col: vertical\n      }, this.contentClass],\n      attrs: {\n        id: this.safeId('_BV_tab_container_')\n      },\n      key: 'bv-content',\n      ref: 'content'\n    }, [$children, $empty]); // Render final output\n\n    return h(this.tag, {\n      staticClass: 'tabs',\n      class: {\n        row: vertical,\n        'no-gutters': vertical && card\n      },\n      attrs: {\n        id: this.safeId()\n      }\n    }, [end ? $content : h(), $nav, end ? h() : $content]);\n  }\n});"],"sourceRoot":""}